/* DCHAT */
jQuery(function(){
    //dChatJS.initialize();
    setTimeout("dChatHB.beat();", 120000);
});

var dChatJS = {
    activeChat: 0,
    messageCounts: [],
    ulist: "",
    blinkMe: 0,
    defaultTitle: "",
    blinkTitle: "",
    initialize: function(){
        // setTimeout('dChatJS.thisMovie(\'dChat\').getUserList()', 1000); 
        //dChatJS.thisMovie('dChat').getUserList();        
    },
    thisMovie: function(movieName) {
      if (navigator.appName.indexOf ("Microsoft") !=-1) {
        return window[movieName]
      }	else {
        return document[movieName]
      }
    },    
    connectedMessage: function(userid, username) {
        if(jQuery('#du_' + userid).length){
            jQuery('#dui_' + userid).attr('src', '/media/gfx/dchaticon2.gif');
        } else {
            dChatJS.clearIdleMessage();
            jQuery("#dChatUL").append(dChatJS.chatItemHtml(userid, username, 0, true));
        }

    },
    disconnectMessage: function(userid, username){
        //dChatJS.addDisconnect(userid);
        //window.setTimeout("dChatJS.removeUser('" + userid + "', '" + username + "')", 10000);
        if(jQuery('#du_' + userid).length){
            if(jQuery.trim(jQuery('#duc_' + userid).html()) == "" && jQuery('#dcc_' + userid).length == 0){
                jQuery('#du_' + userid).remove();
                dChatJS.setIdleMessage();
            } else {
                jQuery('#dui_' + userid).attr('src', '/media/gfx/dchaticon1.gif');
            }
            //jQuery("#dChatUL").append(dChatJS.chatItemHtml(userid, username, 0, false));
            //dPush.push(username + ' disconnected');
        }
    },
    onDisconnect: function() {
        // dPush.push('<b>Disconnected from server.</b>');
         jQuery("#dChatUL").html('');
         dChatJS.setDisconnectmessage();
    },
    setMessageCount: function(userid, messagecount){
        if(jQuery('#du_' + userid).length){
            if(messagecount == 0)
                messagecount = '';
            else
                dChatJS.startBlinking('New instant messages waiting!');
            jQuery("#duc_" + userid).html('&nbsp;' + messagecount);
        }
	    if(messagecount != '')
            dChatJS.messageCounts[dChatJS.messageCounts.length] = new Array(userid, messagecount);
    },
    serverMessage: function(message) {
        dPush.push('SERVER: ' + message);
    },
    setUserList: function(userlist) {
        uarr = userlist.split('||');
        for(var i = 0; i < uarr.length; i++) {
            if(uarr[i] != ''){
                trow = uarr[i].split('|');
                if(jQuery('#du_' + trow[0]).length){
                    // Do nothing...
                } else {
                    jQuery("#dChatUL").append(dChatJS.chatItemHtml(trow[0], trow[1], 0, true));
                }
            }
        }
        dChatJS.setIdleMessage();
    },
    rcvMessage: function(userid, username, message){
        if(jQuery('#dcc_' + userid).length){
            dChatJS.appendMessage(userid, username, message);
        } else {
            if(username != "undefined"){
                dPush.dtimeout = 5000;
                dPush.push('<b>' + username + '</b>:<br /> ' + message);
                dChatJS.thisMovie('dChat').playSound('dSound');       
                dChatJS.startBlinking('New message from ' + username + '!');
                //dChatJS.setMessageCount(userid, 'new', username);
            } else {
                //dChatJS.setMessageCount(userid, 'new', "");
            }
        }
    },
    startBlinking: function(message){
        if(dChatJS.blinkMe == 0){
            dChatJS.blinkMe = 1;
            dChatJS.blinkTitle = message;
            dChatJS.defaultTitle = jQuery('title').html();
            dChatJS.keepBlinking();
        }
    },
    stopBlinking: function(){
        dChatJS.blinkMe = 0;
        document.title = dChatJS.defaultTitle;
    },
    keepBlinking: function(){
        if(dChatJS.blinkMe == 1){
            if(jQuery('title').html() == dChatJS.blinkTitle)
                document.title = dChatJS.defaultTitle;
            else
               document.title = dChatJS.blinkTitle;
            setTimeout('dChatJS.keepBlinking()', 2000);
        }
    },
    setIdleMessage: function(){
        if(jQuery("#dChatUL li.dChatUser").size() == 0)
            jQuery("#dChatUL").append('<li class="dChatIdle">Welcome to TheDesperate.com - invite your friends <a href="/dashboard/invite">here</a>.</li>');
        jQuery("#dstatus").attr("src","/media/gfx/dchat_online.gif");
    },
    setDisconnectmessage: function(){
        if(jQuery("#dChatUL li.dChatUser").size() == 0){
            jQuery("#dstatus").attr("src","/media/gfx/dchat_offline.gif");
            //jQuery("#dChatUL").append('<li class="dChatIdle">Welcome to TheDesperate.com - invite your friends <a href="/dashboard/invite">here</a>. <a href="/dashboard" style="color: #999999;">[Refresh]</a></li>');
        }
    },
    clearIdleMessage: function(){
        if(jQuery("#dChatUL li.dChatUser").size() == 0)
            jQuery("#dChatUL").html('');
    },
    incrementMsgCount: function(userid){
        var tcount = 1;
        if(jQuery('#dcc_' + userid).length){
        } else {
            for(var i = 0; i < dChatJS.messageCounts.length; i++) {
                if(dChatJS.messageCounts[i][0] == userid){
                    dChatJS.messageCounts[i][1]++;
                    tcount = dChatJS.messageCounts[i][1];
                    break;
                }
            }
            dChatJS.setMessageCount(userid, tcount);
            // alert('messagecount' + userid + ' ' + tcount);
        }
    },
    resetMsgCount: function(userid){
        for(var i = 0; i < dChatJS.messageCounts.length; i++) {
            if(dChatJS.messageCounts[i][0] == userid){
                dChatJS.messageCounts[i][1] = 0;
                dChatJS.setMessageCount(userid, 0);
                // alert('messagecount set to zero for ' + userid + ' // new count ' + dChatJS.messageCounts[i][1]);
                break;
            }
        }
    },
    keyMsg: function(e, userid){
        var charCode;        
        if(e && e.which){
            charCode = e.which;
        } else if(window.event){
            e = window.event;
            charCode = e.keyCode;
        }
        if(charCode == 13) {
            dChatJS.sendMsg(userid);
        }
    },
    sendMsg: function(userid){        
        var tmval = jQuery('#dci_' + userid).val();
        if(jQuery.trim(tmval) != ""){
            jQuery('#dci_' + userid).val('');
            dChatJS.thisMovie('dChat').sendMessage(userid, tmval);
            dChatJS.appendMessage(userid, 'You', tmval);
            jQuery('#dci_' + userid).focus();
        }
    },
    appendMessage: function(userid, username, message){
        jQuery('#dcw_' + userid).append('<b>' + username + '</b>: ' + message + '<br />');
        jQuery('#dcw_' + userid).attr({ scrollTop: jQuery('#dcw_' + userid).attr("scrollHeight") });
    },
    setMessages: function(userid, messages){
	  jQuery('#dcw_' + userid).html(messages);
        //jQuery('#dcw_' + userid).append(messages);
        jQuery('#dcw_' + userid).attr({ scrollTop: jQuery('#dcw_' + userid).attr("scrollHeight") });
    },
    readMessages: function(userid){
        if(jQuery('#dcc_' + userid).length){
            dChatJS.closeChatWindow(userid);
        } else {
            dChatJS.resetMsgCount(userid);
            if(dChatJS.activeChat != 0)
                dChatJS.closeChatWindow(dChatJS.activeChat);
            
		    dChatJS.dialog = theD.createWithClass("div", "dChatWindow", "#du_" + userid, "dcc_" + userid, "<div class=\"dChatTextArea\" id=\"dcw_" + userid + "\"></div><input type=\"text\" class=\"dChatInsert\" id=\"dci_" + userid + "\" name=\"message\" maxlength=\"150\" onkeypress=\"dChatJS.keyMsg(event, " + userid + ");\"/> <input class=\"dChatSubmit\" type=\"button\" value=\"Send\" onclick=\"dChatJS.sendMsg(" + userid + ");\"/> <input class=\"dChatClose\" type=\"button\" onclick=\"dChatJS.closeChatWindow(" + userid + ");\" value=\"Close\" /><br />");
		    theD.createWithClass("div", "dDialog_buttonContainer", dDialog.dialog);
		    dChatJS.dialog.fadeIn();
		    jQuery('#dci_' + userid).focus();
            dChatJS.activeChat = userid;
            dChatJS.thisMovie('dChat').getHistory(userid);
            if(dChatJS.blinkMe == 1)
                dChatJS.stopBlinking();
            //dChatJS.thisMovie('dChat').getHistory();
		}
    },
    postNotification: function(message, linkurl){
        dChatJS.thisMovie('dChat').sendNotification(message);
    },
    notifyMessage: function(userid, username, message){
        dPush.dtimeout = 15000;
        dPush.shake = 1;
        dPush.push('<span class="user">' + username + '</span><span class="text">' + message + '</span>');
        dPush.shake = 0;
        dPush.dtimeout = 5000;
    },
    closeChatWindow: function(userid){
        dChatJS.thisMovie('dChat').stopMessages();
        jQuery('#dcc_' + userid).remove();
        dChatJS.activeChat = 0;
    },
    unLoad: function(){
        dChatJS.thisMovie('dChat').unLoad();
    },
    chatItemHtml: function(userid, username, messagecount, online){
        var offlinemessage = "";
        if(messagecount == 0) messagecount = "";
        if(!online) offlinemessage = " (offline)";
        return '<li id="du_' + userid + '" class="dChatUser"><a class="dChatULink" onclick="dChatJS.readMessages(' + userid + ');" href="javascript:void(0);"><img id="dui_' + userid + '" src="/media/gfx/dchaticon2.gif">' + username + '<span id="duc_' + userid + '"> ' + messagecount + '</span></a></li>';
    },
    currentUnixTime: function(){
        var tdo = new Date;
        var unixtime_ms = tdo.getTime();
        var unixtime = parseInt(unixtime_ms / 1000);
        return unixtime;
    }
};

var dChatHB = {
    beat: function() {
	    jQuery.ajax({
	      url: "/beat.php",
	      cache: false,
	      success: function(html){
	        dChatJS.thisMovie('dChat').heartbeat();
	      }
	    });
        setTimeout("dChatHB.beat();", 120000);
    }
}

