var chatIntervalID;

$(document).ready(function(){
    initChat();
});
function initChat(){
    if($("#chat-is-restored").val() == "true"){
        actionChatShow();
        chatIntervalID = setInterval(function(){
            actionChatCheckForMessages();
        },5000);
        var height = $("#chat-area").css("height").replace("px", "");
        if(parseInt(height) > 250){
            $("#chat-area").css("height", "250px");
        }
        var objDiv = document.getElementById("chat-area");
        $("#chat-area").animate({ "scrollTop" : objDiv.scrollHeight }, 3000);
    }
    
    $(".start-chat").click(function(e){
        e.preventDefault();
        actionChatShow();
    });
    $("#chat-send").click(function(){
        actionChatSendMessage();
    });
    $("#chat-message-input").keydown(function(e){
        if(e.which == 13){ //if the enter key was pressed
            e.preventDefault();
            actionChatSendMessage();
        }
    });
    $("#chat-close").click(function(e){
        e.preventDefault();
        $.post("/_ajax/ajax.chat-close.php", {chat_head_id    : $("#chat-id").val()});
        $("#chat-name-input").val("");
        $("#chat-area").html("");
        $("#chat-area").css("display", "none");
        $("#chat-message-input").val("");
        $("#chat-id").val("");
        $("#chat-recieved-message-ids").val("");
        clearInterval(chatIntervalID);
        $("#chat-cont").fadeOut();
        $("#chat-cont").draggable("disable");
        $("#chat-name-input").slideDown("slow");
        $("#chat-name-input").prev().slideDown("slow");        
    });
    
    if($("#chat-status").val() == "online"){
        //setTimeout("actionChatAutoStart();", 20000);
    }
}

/* ACTION FUNCTIONS */

function actionChatShow(){
    if($.browser.msie){
        if($.browser.version == "6.0"){
            alert("Sorry, Live chat is not supported in this browser.\nPlease upgrade your browser.");
			return false;
        }
    }
    $("#chat-send").removeClass("hide");
    $("#chat-message-input").slideDown("slow");
    $("#chat-message-input").prev().slideDown("slow");
    $(".chat-closure-notice").remove();    
    var left = screen.width - 450;
    $("#chat-cont").css("position", "fixed");
    $("#chat-cont").css("left", left)
    $("#chat-cont").css("top", 30)
    $("#chat-cont").fadeIn();
    $("#chat-cont").draggable({handle: '#chat-handle', containment : 'parent'});        
    $("#chat-cont").draggable("enable");
    $("#chat-cont").removeClass("hide");    
	if($("#chat-area").html() == ""){
		var imagePoint = "<img class='chat-response-corner' src='/images/chat-point-response.png' />";
		$("#chat-area").append("<div id='chat-bubble-new' class='chat-response'><div class='chat-name'>Live Chat Operator</div>Hi, What can I help you with?</div>" + imagePoint + "<div class='clear'></div>");    
		$("#chat-area").slideDown("slow");    	
	}
}

function actionChatSendMessage(){
    var name    = $("#chat-name-input").val();
    var message = $("#chat-message-input").val();    
    if(message != "" && name != ""){
        $("#chat-name-input").removeClass("chat-error")
        if($("#chat-id").val() == ""){
            //This is a new chat
            $.post("/_ajax/ajax.chat-start.php", 
            {
               name    : name,
               message : message
            }, 
            function(response){
                var obj = jQuery.parseJSON(response);
                $("#chat-recieved-message-ids").val($("#chat-recieved-message-ids").val() + obj.chatLineID + ",");
                
                $("#chat-id").val(obj.chatID);
                if($("#chat-message-input").val().length > 4){
                    var imagePoint = "<img class='chat-request-corner' src='/images/chat-point-request.png' />";
                }else{
                    var imagePoint = "";
                }                
                $("#chat-area").append("<div id='chat-bubble-new' class='chat-request'><div class='chat-name'>" + name + "</div>" + $("#chat-message-input").val() + "</div>" + imagePoint + "<div class='clear'></div>");
                actionChatMakeBubble("chat-bubble-new");
                $("#chat-message-input").val("");
                chatIntervalID = setInterval(function(){
                    actionChatCheckForMessages();
                },5000);
                $("#chat-area").slideDown("slow");
                $("#chat-name-input").slideUp("slow");
                $("#chat-name-input").prev().slideUp("slow");
            });
        }else{
            //this is from existing chat
            $.post("/_ajax/ajax.chat-update.php", 
            {
               chatID : $("#chat-id").val(),
               message : message
            }, 
            function(response){
                var obj = jQuery.parseJSON(response);
                $("#chat-recieved-message-ids").val($("#chat-recieved-message-ids").val() + obj.chatLineID + ",");
                if($("#chat-message-input").val().length > 4){
                    var imagePoint = "<img class='chat-request-corner' src='/images/chat-point-request.png' />";
                }else{
                    var imagePoint = "";
                }
                $("#chat-area").append("<div id='chat-bubble-new' class='chat-request hide'><div class='chat-name'>" + $("#chat-name-input").val() + "</div>" + $("#chat-message-input").val() + "</div>" + imagePoint + "<div class='clear'></div>");
                actionChatMakeBubble("chat-bubble-new");
                $(".chat-request:last").slideDown("slow", function(){
                    var height = $("#chat-area").css("height").replace("px", "");
                    if(parseInt(height) > 250){
                        $("#chat-area").css("height", "250px");
                    }
                    var objDiv = document.getElementById("chat-area");
                    $("#chat-area").animate({ "scrollTop" : objDiv.scrollHeight }, 3000);
                });
                $("#chat-message-input").val("");
            });
        }
    }else{
        if(name == ""){
            $("#chat-name-input").addClass("chat-error");
            var imagePoint = "<img class='chat-response-corner' src='/images/chat-point-response.png' />";
            $("#chat-area").append("<div id='chat-bubble-new' class='chat-response hide'><div class='chat-name'>Live Chat Operator</div>Please enter your name above.</div>" + imagePoint + "<div class='clear'></div>");
            $("#chat-area").slideDown("slow");
            $(".chat-response:last").slideDown("slow", function(){
                var height = $("#chat-area").css("height").replace("px", "");
                if(parseInt(height) > 250){
                    $("#chat-area").css("height", "250px");
                }
                var objDiv = document.getElementById("chat-area");
                $("#chat-area").animate({ "scrollTop" : objDiv.scrollHeight }, 3000);
            });            
        }
    }
}
function actionChatCheckForMessages(){
    var chatRecievedMessageIds = $("#chat-recieved-message-ids").val();
    chatRecievedMessageIds = chatRecievedMessageIds.substring(0, chatRecievedMessageIds.length - 1);
    
    
    $.post("/_ajax/ajax.chat-check-messages.php", 
    {
       chatID    : $("#chat-id").val(),
       chatRecievedMessageIds : chatRecievedMessageIds
    }, 
    function(response){
        if(response != ""){
            if(response == "closed"){
                $("#chat-send").addClass("hide");
                $("#chat-message-input").slideUp("slow");
                $("#chat-message-input").prev().slideUp("slow");
                $("#chat-message-input").after("<p class='redItalic chat-closure-notice'>This chat session has been ended by the operator.</p>")
                
                clearInterval(chatIntervalID);
            }else{
                var obj = jQuery.parseJSON(response);
                $("#chat-recieved-message-ids").val($("#chat-recieved-message-ids").val() + obj.chat_line_id + ",");
                if(obj.chat_line_content.length > 4){
                    var imagePoint = "<img class='chat-response-corner' src='/images/chat-point-response.png' />";
                }else{
                    var imagePoint = "";
                }
                $("#chat-area").append("<div id='chat-bubble-new' class='chat-response hide'><div class='chat-name'>" + obj.chat_user_full_name + "</div>" + obj.chat_line_content + "</div>" + imagePoint + "<div class='clear'></div>");
                actionChatMakeBubble("chat-bubble-new");
                $(".chat-response:last").slideDown("slow", function(){
                    var height = $("#chat-area").css("height").replace("px", "");
                    if(parseInt(height) > 250){
                        $("#chat-area").css("height", "250px");
                    }
                    var objDiv = document.getElementById("chat-area");
                    $("#chat-area").animate({ "scrollTop" : objDiv.scrollHeight }, 3000);
                });
            }
        }        
    });
}
function actionChatMakeBubble(id){
//    var settings = {
//        tl: { radius: 10 },
//        tr: { radius: 10 },
//        bl: { radius: 10 },
//        br: { radius: 10 },
//        antiAlias: true
//    }
//    var divObj = document.getElementById(id);
//    curvyCorners(settings, divObj);
//    $("#" + id).attr("id", "");
}

function actionChatAutoStart(){
    if($("#chat-cont").hasClass("hide")){
        actionChatShow();
        var imagePoint = "<img class='chat-response-corner' src='/images/chat-point-response.png' />";

        var autoMessage = "Hi, Do you need any help finding what you are looking for?";
		$("#chat-area").html("");
        $("#chat-area").append("<div id='chat-bubble-new' class='chat-response hide'><div class='chat-name'>Live Chat Operator</div>" + autoMessage + "</div>" + imagePoint + "<div class='clear'></div>");
        $("#chat-area").removeClass("hide");
        $(".chat-response:last").slideDown("slow");        
    }
}
if($.browser.msie){
    if($.browser.version == "7.0"){
        (function($) {
            $.fn.fadeIn = function(speed, callback) {
                return this.animate({opacity: 'show'}, speed, function() {
                        if ( $.browser.msie )
                        {
                                this.style.removeAttribute('filter');
                        }
                        if ( $.isFunction(callback) )
                        {
                                callback.call(this);
                        }
                });
            };

            $.fn.fadeOut = function(speed, callback) {
                return this.animate({opacity: 'hide'}, speed, function() {
                        if ( $.browser.msie )
                        {
                                this.style.removeAttribute('filter');
                        }
                        if ( $.isFunction(callback) )
                        {
                                callback.call(this);
                        }
                });
            };

            $.fn.fadeTo = function(speed, to, callback) {
                return this.animate({opacity: to}, speed, function() {
                        if ( to == 1 && $.browser.msie )
                        {
                                this.style.removeAttribute('filter');
                        }
                        if ( $.isFunction(callback) )
                        {
                                callback.call(this);
                        }
                });
            };
        })(jQuery);
    }
}
