﻿/// 

var messagingCurrentChannel=-1;
var lastID="-1";
var msgTmr= null;
var contentModerated="Message has been moderated by WQLN Public Media and deemed offensive.";
var contentOffensive="Users have deemed this message offensive. The message has been temporarily removed pending review by a WQLN Public Media moderator";
var contentRemoved ="Message has been removed by original author.";
function getPage(){
var mPage = document.URL
        var segments = mPage.split("/")
        var len = 0;
        for (var i = 0; i < 3; i++) {
            len += segments[i].length
        }
        mPage = mPage.substr(len + 2);
        if (mPage.indexOf("?") > 0) {
            mPage = mPage.split("?")[0];
        }
        if (mPage.substr(mPage.length - 1, 1) == "/") {
            mPage += "default.aspx"
        }        
        mPage =mPage.replace("moduletesting","main");
        return mPage;
    }
        
        var messagingPage = getPage();       
function checkMessaging(){
    QMessaging.Client.CheckNew(lastID,messagingCurrentChannel,MessagesRetrieved,IgnoreFailed);
    if(msgTmr==null){
        msgTmr=setInterval("checkMessaging();",5000);
    }
}
function IgnoreFailed() {
}
function hideMessaging(){
    document.getElementById("msgFormContainer").style.display="none";
}
function showNewMessage(){
    document.getElementById("msgSendFormControls").style.display="none";
    if(getCookieVal("qAgreement")==getCookieVal("qid")){
        document.getElementById("chkMsgAgreement").checked=true;
        clearAgreement()
    }
    document.getElementById("txtName").value=unescape(getCookieVal("qName"));
    document.getElementById("txtLocation").value=unescape(getCookieVal("qLocation"));
    document.getElementById("msgFormContainer").style.display="";
    if(document.getElementById("txtName").value==""){
        document.getElementById("txtName").focus();
    }else{
        document.getElementById("txtMessage").focus();
    }
}
function initMessageContainer(){
    
    hideMessaging();        
    QMessaging.Client.GetUniqueID(setQID,OnFailed)
    //alert(page);
    QMessaging.Client.ListChannels(messagingPage,messagingListChannels,OnFailed);              
}
function syncChannelDD(){
    var primaryDD = document.getElementById("channelSelection");
    var secondayrDD= document.getElementById("msgChannels");
    if(isNaN(arguments[0])){    
        secondayrDD.value=primaryDD.value;
        messagingCurrentChannel=primaryDD.value;
    }else{
        primaryDD.value = arguments[0];
        secondayrDD.value = arguments[0];
        messagingCurrentChannel = arguments[0];        
    }
    
    for(var z=document.getElementById("msgThreadContainer_-1").childNodes.length-1;z>=0;z--){
        document.getElementById("msgThreadContainer_-1").removeChild(document.getElementById("msgThreadContainer_-1").childNodes[0])
    }
    lastID=-1;
    //msgTmr = setInterval("checkMessaging();", 5000);
    setTimeout("checkMessaging();", 1000);
    //QMessaging.Client.CheckNew(lastID,messagingCurrentChannel,MessagesRetrieved,OnFailed);
}

function newConversation(){
    document.getElementById("txtMessage").style.width = document.getElementById("messaging").offsetWidth-160 + "px";
    document.getElementById("txtMessage").style.height = (document.getElementById("messaging").offsetHeight/2)-90 + "px";
    if(this.id){    
        document.getElementById("txtThreadID").value=this.id.split("_")[1];  
        document.getElementById("btnStartConvo").value="Respond to Comment";
    }else{
        document.getElementById("txtThreadID").value="-1";  
        document.getElementById("btnStartConvo").value="Start Conversation";
    }
    showNewMessage();
}
function addMessage(txt){
    document.getElementById("").innerHTML = document.getElementById("").innerHTML 
}
function MessagesRetrieved(result, userContext, methodName){
        
    for(var i=0;i<result.length;i++){
            createMessage(result[i]);
    }
}
function createMessage(messageRow, userContext, methodName) {
    try {

        if (lastID < messageRow.messageID) {
            lastID = messageRow.messageID
        }
        var target = document.getElementById("msgThreadContainer_" + messageRow.msgThreadID);


        var dvMessageContainer = document.getElementById("msgContainer_" + messageRow.messageID);
        if (!dvMessageContainer) {
            dvMessageContainer = document.createElement("div");
            dvMessageContainer.id = "msgContainer_" + messageRow.messageID;
            if (target.childNodes.length > 0) {
                target.insertBefore(dvMessageContainer, target.childNodes[0]);
            } else {
                target.appendChild(dvMessageContainer);
            }
            var dvMessageHeader = document.createElement("div");
            var aMessageFlagOffensive = document.createElement("div");
            var dvMessageFrom = document.createElement("div");
            var dvMessageFromLoc = document.createElement("div");
            var dvMessageDte = document.createElement("div");
            var dvMessage = document.createElement("div");
            var dvMessageFooter = document.createElement("div");
            var dvMessageThreadCount = document.createElement("span");
            var aMessageThreadCount = document.createElement("a");
            var aMessageReply = document.createElement("a");
            var dvMessageThread = document.createElement("div");
            var aMessageRemove = document.createElement("a");
            var dvMessageHeaderText = document.createElement("div");
            dvMessage.className = "msg";
            dvMessageHeader.className = "msgHeader";
            dvMessageFrom.className = "msgFrom";
            dvMessageFromLoc.className = "msgFromLoc";
            dvMessageDte.className = "msgDte";
            dvMessageFooter.className = "msgFooter";
            aMessageReply.className = "msgReply";
            dvMessageThread.className = "msgThread";
            dvMessageThreadCount.className = "msgThreadCount";
            aMessageThreadCount.className = "msgThreadCountButton";
            aMessageRemove.className = "msgRemove";
            aMessageFlagOffensive.className = "msgFlagOffensive";
            
            var wdth = target.offsetWidth;
            if (messageRow.msgThreadID == -1) {
                wdth -= 15;
            } else {
                wdth = stripPX(target.style.width);
                document.getElementById("msgThreadCount_" + messageRow.msgThreadID).style.backgroundImage = "url(/_graphics/messaging/triangle.png)";
                document.getElementById("msgThreadCount_" + messageRow.msgThreadID).innerHTML = parseInt(document.getElementById("msgThreadCount_" + messageRow.msgThreadID).innerHTML) + 1;
            }
            if (messageRow.msgAllowOffesiveVote) {                
                aMessageFlagOffensive.id = "msgFlagOffensive_" + messageRow.messageID;
                aMessageFlagOffensive.onclick = flagOffensive;
                dvMessageHeader.appendChild(aMessageFlagOffensive);
                aMessageFlagOffensive.innerHTML = "";
            }
            //self.status = wdth;
            dvMessage.style.width = wdth + "px";
            dvMessage.id = "msgContent_" + messageRow.messageID;
            dvMessageHeader.style.width = wdth + 4 + "px";
            dvMessageFrom.style.width = wdth + 4 - 6 - 109 + "px";
            dvMessageFooter.style.width = wdth + "px";
            wdth -= 15;
            dvMessageThread.style.width = wdth + "px";
            dvMessageThread.style.display = "none";
            dvMessageContainer.appendChild(dvMessageHeader);
            
            dvMessageHeader.appendChild(aMessageFlagOffensive);
            dvMessageHeader.appendChild(dvMessageFrom);
            //dvMessageFrom.appendChild(aMessageFlagOffensive);
            

            dvMessageContainer.appendChild(dvMessage);
            if (messageRow.msgRemoved) {
                dvMessage.innerHTML = contentRemoved;
            } else {
                if (messageRow.msgModerated) {
                    dvMessage.innerHTML = contentModerated;
                } else {
                    if (messageRow.msgAllowOffesiveVote && messageRow.msgOffensive > 0) {
                        dvMessage.innerHTML = contentOffensive;
                    } else {
                        dvMessage.innerHTML = addBreaks(messageRow.message);
                    }
                }
            }


            dvMessageContainer.appendChild(dvMessageFooter);
            dvMessageFooter.appendChild(aMessageReply);
            dvMessageFooter.appendChild(dvMessageDte);
            dvMessageFooter.appendChild(aMessageThreadCount);
            if (getCookieVal("qid") == messageRow.msgSessionID) {
                dvMessageFooter.appendChild(aMessageRemove);
                aMessageRemove.id = "removeMessage_" + messageRow.messageID;
                aMessageRemove.innerHTML = "X Remove my message";
                aMessageRemove.onclick = removeMessage;
            }
            dvMessageContainer.appendChild(dvMessageThread);

            dvMessageThread.id = "msgThreadContainer_" + messageRow.messageID
            dvMessageThreadCount.id = "msgThreadCount_" + messageRow.messageID
            dvMessageThreadCount.innerHTML = "0";
            aMessageThreadCount.id = "msgThreadCountExpand_" + messageRow.messageID
            aMessageThreadCount.onclick = fireExpand;
            aMessageThreadCount.appendChild(dvMessageThreadCount);
            aMessageThreadCount.innerHTML += " responses";
            if (messageRow.msgFrom == "") {
                dvMessageFrom.innerHTML += "A Guest";
            } else {
                dvMessageFrom.innerHTML += messageRow.msgFrom;
            }

            if (messageRow.msgFromLog != "") {
                dvMessageFrom.innerHTML += "&nbsp;from " + messageRow.msgFromLoc;
            }
            if (messageRow.msgTitle == "" || messageRow.msgTitle == null) {
                dvMessageFrom.innerHTML += "&nbsp;said: "
            } else {
                dvMessageFrom.innerHTML += "&nbsp;wants to discuss: " + messageRow.msgTitle
            }

            var dte = new Date(messageRow.msgDateTime)

            //dvMessageDte.innerHTML=messageRow.msgDateTime.toDateString() + " at " + messageRow.msgDateTime.toTimeString() ;
            dvMessageDte.innerHTML = messageRow.msgDateTime.getMonth() + 1 + "/" + messageRow.msgDateTime.getDate() + "/" + messageRow.msgDateTime.getYear() + " " + toAMPMTime(messageRow.msgDateTime.getHours()) + ":" + toTwoDigit(messageRow.msgDateTime.getMinutes()) + " " + AMPM(messageRow.msgDateTime.getHours());
            aMessageReply.innerHTML = "";
            aMessageReply.id = "replyToMessage_" + messageRow.messageID;
            aMessageReply.onclick = newConversation;
            dvMessageHeader = null;
            aMessageFlagOffensive = null;
            dvMessageFrom = null;
            dvMessageFromLoc = null;
            dvMessageDte = null;
            dvMessage = null;
            dvMessageFooter = null;
            dvMessageThreadCount = null;
            aMessageReply = null;
            dvMessageThread = null;
        }
        target = null;
        dvMessageContainer = null;
    } catch (e) { }
}
function addBreaks(txt) {
    var retstring = txt.replace("\n", "<br>")
    if (retstring.indexOf("\n") > 0) {
        retstring = addBreaks(retstring);
    }
    return retstring    
}
function flagOffensive() {
    //alert("here");
    if (confirm("Are you sure you want to flag this message as offensive?")) {
        QMessaging.Client.ReportOffensive(this.id.split("_")[1], MessageOffensive, OnFailed);
    }
}
function removeMessage(){
  QMessaging.Client.RemoveMessage(this.id.split("_")[1],MessageRemoved,OnFailed);
}
function shrinkMsg(){
    var msgWindow = document.getElementById("messagingConversations");
    if(msgWindow.offsetHeight<245){
        var msging = document.getElementById("messaging");
        msging.style.width="462px";        
        resize(document.getElementById("msgThreadContainer_-1"),462-15)         
    }else{
        msgWindow.style.height = (msgWindow.offsetHeight / 2) + "px";
    }
    msgWindow=null;
}
function growMsg(){
    var msging = document.getElementById("messaging");
    if(msging.offsetWidth<465){
        msging.style.width="100%";        
        resize(document.getElementById("msgThreadContainer_-1"));
    }else{
        var msgWindow = document.getElementById("messagingConversations");
        msgWindow.style.height = (msgWindow.offsetHeight * 2) + "px";
        msgWindow=null;
    }
    msging = null;
}
function resize(elem,target){
    if(elem.hasChildNodes){
        var wdth = elem.offsetWidth
        if(!isNaN(target)){
        wdth = target
        }
        if(parseInt(elem.id.split("_")[1])==-1){
            wdth -= 15;            
        }else{
            wdth = stripPX(elem.style.width);            
        }
        for (var chIndex = 0; chIndex < elem.childNodes.length; chIndex++) {
            try {            
            elem.childNodes[chIndex].childNodes[0].style.width = wdth + 4 + "px";
            elem.childNodes[chIndex].childNodes[1].style.width = wdth + "px";
            elem.childNodes[chIndex].childNodes[2].style.width = wdth + "px";
            elem.childNodes[chIndex].childNodes[3].style.width = wdth - 15 + "px";
            } catch (e) { }
            try{
            if(!isNaN(target)){
                resize(elem.childNodes[chIndex].childNodes[3],target);
            }else{
                resize(elem.childNodes[chIndex].childNodes[3]);
            }
            }catch(e){}
        }
        return null;
    }
}
function fireExpand(id){
    if(!id || isNaN(id)){
        id = this.id.split("_")[1];
    }
    if(id>-1 && parseInt(document.getElementById("msgThreadCount_" + id).innerHTML)>0 ){
        if(document.getElementById("msgThreadContainer_" + id).style.display=="none"){
        document.getElementById("msgThreadContainer_" + id).style.display="";
        document.getElementById("msgThreadCount_" + id).style.backgroundImage="url(/_graphics/messaging/triangledn.png)";
        }else{
        document.getElementById("msgThreadCount_" + id).style.backgroundImage="url(/_graphics/messaging/triangle.png)";
        document.getElementById("msgThreadContainer_" + id).style.display="none";
        }
    }
}
function messagingListChannels(result, userContext, methodName){
//    if(result!=""){
//        var channelRows = result.split("^");
        for(var i=0;i<result.length;i++){
            addChannel(result[i]);
        }
        syncChannelDD();    
//    }
}
function addChannel(chRow) {
    var fnd = false;
    for(var i = 0; i<document.getElementById("msgChannels").childNodes.length;i++){
        if (document.getElementById("msgChannels").childNodes[i].value == chRow.channelID) {
            fnd = true;
            break;
        }
    }
    if (!fnd) {
        addOptionToDD("msgChannels", chRow.title, chRow.channelID);
        addOptionToDD("channelSelection", chRow.title, chRow.channelID);
    }
}
function addOptionToDD(strDD,strText,strValue){
    var newOption = document.createElement("option");    
    var select = document.getElementById(strDD);    
    select.options.add(newOption);    
    newOption.innerHTML=strText;
    newOption.value=strValue;   
    newOption = null;
}
function OnFailed(error, userContext, methodName){
    alert(error.get_message() + "\n" + userContext + "\n" + methodName);
}
function getCookieVal(cookie){
    var str = new String(document.cookie);
    var pairs = str.split(";");
    var retVal ="";
    if(pairs.length>0){
        for(var i=0;i<pairs.length;i++){
            if(pairs[i].split("=")[0].replace(" ","")==cookie){
                retVal = pairs[i].split("=")[1];
            }
        }        
    }else{
            if(pairs[i].split("=")[0].replace(" ","")==cookie){
                retVal = pairs[i].split("=")[1];
            }
    }
    return retVal
}
function toAMPMTime(tme){
    if(tme>12){
        tme=tme-12;
    }
    return tme;
}
function toTwoDigit(tme){
    if(tme<10){
        tme = "0" + tme
    }
    return tme;
}
function submitConvo(){
    
    sendMessage();
}
function sendMessage(){
    var frmConvo = document.getElementById("form1");
    if (document.getElementById("frmMessaging")) {
        frmConvo = document.getElementById("frmMessaging");
    }
    //alert(frmConvo.elements[].value);
    //SendMessage(            ByVal lstID As Integer, ByVal rating As String, ByVal user As String, ByVal title As String, ByVal threadid As String, ByVal lmsg As String, ByVal qid As String, ByVal media As String, ByVal channel As Integer, ByVal name As String, ByVal location As String, ByVal msg As String) As System.Data.Linq.ISingleResult(Of qryQMessagingClientCheckNewResult)
    //alert(lastID);
    //
    QMessaging.Client.SendMessage(lastID, frmConvo.elements["txtRating"].value, frmConvo.elements["txtUser"].value, frmConvo.elements["txtTitle"].value, frmConvo.elements["txtThreadID"].value, frmConvo.elements["txtLastMessage"].value, frmConvo.elements["txtSessionID"].value, frmConvo.elements["ddlMedia"].value, frmConvo.elements["msgChannels"].value, frmConvo.elements["txtName"].value, frmConvo.elements["txtLocation"].value, frmConvo.elements["txtMessage"].value, msgSent, OnFailed);  
    
    
    Set_Cookie("qName",frmConvo.elements["txtName"].value)
    Set_Cookie("qLocation",frmConvo.elements["txtLocation"].value)
}
function msgSent(result,userContext, methodName){
    var frmConvo = document.getElementById("form1");
    if (document.getElementById("frmMessaging")) {
        frmConvo = document.getElementById("frmMessaging");
    }
    for(var i = 0; i<result.length;i++){
        if (result[i].message == frmConvo.elements["txtMessage"].value) {
            fireExpand(result[i].msgThreadID);
            break;
        }
    }
    clearMessageForm()
    MessagesRetrieved(result,userContext,methodName);
}
function cancelConvo() {
    clearMessageForm();
}
function clearMessageForm() {
    var frmConvo = document.getElementById("form1");
    if (document.getElementById("frmMessaging")) {
        frmConvo = document.getElementById("frmMessaging");
    }
    document.getElementById("msgFormContainer").style.display = "none";
    frmConvo.elements["txtMessage"].value = "";
}
function AMPM(tme){
    var retAM = "AM"
    if(tme>12){
        retAM = "PM";
    }
    return retAM;
}
function setQID(result,userContext, methodName){
    if(getCookieVal("qid")==""){
        Set_Cookie("qid", result,10,'/','','');
    }    
    document.getElementById("txtSessionID").value = getCookieVal("qid");
}
function clearAgreement(){
    var msgContainer = document.getElementById("msgAgreement");
    msgContainer.style.display="none";
    Set_Cookie("qAgreement",getCookieVal("qid"),30,'/','','');          
    document.getElementById("msgSendFormControls").style.display="";
}
function MessageOffensive(result,userContext,methodName){
    document.getElementById("msgContent_" + result[0].messageID).innerHTML = contentOffensive;
}
function MessageRemoved(result,userContext,methodName){
    document.getElementById("msgContent_" + result[0].messageID).innerHTML = contentRemoved;
}
function Set_Cookie( name, value, expires, path, domain, secure ) 
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct 
expires time, the current script below will set 
it for x number of days, to make it for hours, 
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );
if (name == "qid") {
    //self.status+= "|" + value
}
document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
( ( path ) ? ";path=" + path : "" ) + 
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}


if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

