



if(!jQuery.newWindow){
	

var jqWindowsEngineZIndex = 100;

jQuery.extend({

    newWindow: function(options) {

        var lastMouseX = 0;
        var lastMouseY = 0;

        var defaults = {
            id: "",
            title: "",
            width: 300,
            height: 400,
            className: "",
            posx: 50,
            posy: 400,
			minwidth: 100,
			minheight: 50,
            content: "",
            onDragBegin: null,
            onDragEnd: null,
            onResizeBegin: null,
            onResizeEnd: null,
            onAjaxContentLoaded: null,
            onWindowClose: null,
            statusBar: true,
            minimizeButton: true,
            maximizeButton: true,
            closeButton: true,
            draggable: true,
            resizeable: true,
            type: "normal",
            modal: false
        };

        var options = $.extend(defaults, options);

        var idAttr = "";
        if (options.id != "") idAttr = 'id="' + options.id + '"';
        $modalBackground = $('<div class="modal-background"></div>');
        $modalBackground.css("z-index","10000");
        $windowContainer = $('<div ' + idAttr + ' class="window-container'+((options.className)?' '+options.className:'')+'"></div>');
        $titleBar = $('<div class="window-titleBar"></div>');
        $titleBar.append('<div class="window-titleBar-leftCorner"></div>');
        $titleBarContent = $('<div class="window-titleBar-content">' + options.title + '</div>');
        $titleBar.append($titleBarContent);
        $titleBar.append('<div class="window-titleBar-rightCorner"></div>');
        $windowMinimizeButton = $('<div class="window-minimizeButton"></div>');
        $windowMaximizeButton = $('<div class="window-maximizeButton"></div>');
        $windowCloseButton = $('<div class="window-closeButton"></div>');
        $windowContent = $('<div class="window-content"></div>');
        $windowStatusBar = $('<div class="window-statusBar"></div>');
        $windowResizeIcon = $('<div class="window-resizeIcon"></div>');

        if (options.minimizeButton) $titleBar.append($windowMinimizeButton);
        if (options.maximizeButton) $titleBar.append($windowMaximizeButton);
        if (options.closeButton) $titleBar.append($windowCloseButton);
        if (options.resizeable) $windowStatusBar.append($windowResizeIcon);
        $windowContainer.append($titleBar);
        $windowContent.append(options.content);
        $windowContainer.append($windowContent);
        if (options.statusBar) $windowContainer.append($windowStatusBar);
        
        if(options.type === "iframe"){
            $windowContent.css("overflow","hidden");
        }
        
        var disableSelection = function() {
            document.onselectstart = function() {
                return false;
            };
        }
        
        var enableSelection = function() {
            document.onselectstart = null;
        }
        
        var setFocus = function($obj) {
            if(options.modal){
                $obj.css("z-index", 10001);
            }
            else{
                $obj.css("z-index", jqWindowsEngineZIndex++);
            }
        }

        var resize = function($obj, width, height) {
            width = parseInt(width);
            height = parseInt(height);
            $obj.data("lastWidth", width).data("lastHeight", height);
            $obj.css("width", width + "px").css("height", height + "px");
            if (options.type === "iframe") {
                var dw = 3, dh = 2;
                if($.browser.msie && $.browser.version < 9.0)dw = dh = 0;
                $obj.find("iframe").css("width", (width-dw) + "px").css("height", (height-dh) + "px");
            }
        }
        
        var move = function($obj, x, y) {
            x = parseInt(x);
            y = parseInt(y);
            $obj.data("lastX", x).data("lastY", y);
            x = x + "px";
            y = y + "px";
            $obj.css("left", x).css("top", y);
        }
        
        var dragging = function(e, $obj) {
            if (options.draggable) {
                e = e ? e : window.event;
                var newx = parseInt($obj.css("left")) + (e.clientX - lastMouseX);
                var newy = parseInt($obj.css("top")) + (e.clientY - lastMouseY);
                lastMouseX = e.clientX;
                lastMouseY = e.clientY;

                move($obj, newx, newy);
            }
        };
        
        var resizing = function(e, $obj) {
            e = e ? e : window.event;
            var w = parseInt($obj.css("width"));
            var h = parseInt($obj.css("height"));
            w = w < options.minwidth ? options.minwidth : w;
            h = h < options.minheight ? options.minheight : h;
            var neww = w + (e.clientX - lastMouseX);
            var newh = h + (e.clientY - lastMouseY);
            lastMouseX = e.clientX;
            lastMouseY = e.clientY;

            resize($obj, neww, newh);
        };
        
        //Attach a mousedown event to the window's title bar to allow dragging
        $titleBarContent.bind('mousedown', function(e) {
            $obj = $(e.target).parent().parent();
            setFocus($obj);
            disableSelection();

            if ($obj.data("state") != "maximized") {
                e = e ? e : window.event;
                lastMouseX = e.clientX;
                lastMouseY = e.clientY;

                $(document).bind('mousemove', function(e) {
                    dragging(e, $obj);
                });


                $(document).bind('mouseup', function(e) {
                    if (options.onDragEnd != null) options.onDragEnd();
                    $(document).unbind('mousemove');
                    $(document).unbind('mouseup');
                    enableSelection();
                });

                if (options.onDragBegin != null) options.onDragBegin();
            }
            return false;
        });
        
        //Attach a double click event to the window's title bar to allow maximization
        $titleBarContent.dblclick(function(e) {
            $obj = $(e.target).parent().parent();
            $obj.find(".window-maximizeButton").click();
        });
        
        //Attach a mousedown event to the window's resize icon to allow resizing
        $windowResizeIcon.bind('mousedown', function(e) {
            $obj = $(e.target).parent().parent();
            setFocus($obj);
            disableSelection();

            if ($obj.data("state") === "normal") {
                e = e ? e : window.event;
                lastMouseX = e.clientX;
                lastMouseY = e.clientY;

                $(document).bind('mousemove', function(e) {
                    resizing(e, $obj);
                });

                $(document).bind('mouseup', function(e) {
                    if (options.onResizeEnd != null) options.onResizeEnd();
                    $(document).unbind('mousemove');
                    $(document).unbind('mouseup');
                    enableSelection();
                });

                if (options.onResizeBegin != null) options.onResizeBegin();
            }
            return false
        });
        
        //Attach a click event to the window's minimize button to allow window minimization
        $windowMinimizeButton.bind('click', function(e) {
            $obj = $(e.target).parent().parent();
            setFocus($obj);
            if ($obj.data("state") === "minimized") {
                $obj.data("state", "normal");
                $obj.css("height", $obj.data("lastHeight"));
                $obj.find(".window-content").slideToggle("slow");
            }
            else if ($obj.data("state") === "normal") {
                $obj.data("state", "minimized");
                $obj.find(".window-content").slideToggle("slow", function() { $obj.css("height", 0); });
            }
            else {
                $obj.find(".window-maximizeButton").click();
            }
        });

        $windowMaximizeButton.bind('click', function(e) {
            $obj = $(e.target).parent().parent();
            setFocus($obj);
            
            ////for iframe browser compatibility
            var dw = 3, dh = 2;
            if($.browser.msie && $.browser.version < 9.0)dw = dh = 0;
            //////////////////////////////////////////////////////////
            
            if ($obj.data("state") === "minimized") {
                $obj.find(".window-minimizeButton").click();
            }
            else if ($obj.data("state") === "normal") {
                $obj.animate({
                    top: "5px",
                    left: "5px",
                    width: $(window).width() - 15,
                    height: $(window).height() - 45
                }, "slow");
                if (options.type === "iframe") {
                    $obj.find("iframe").animate({
                        top: "5px",
                        left: "5px",
                        width: $(window).width() - 15 - dw,
                        height: $(window).height() - 45 - dh
                    }, "slow");
                }
                $obj.data("state", "maximized")
            }
            else if ($obj.data("state") === "maximized") {
                $obj.animate({
                    top: $obj.data("lastY"),
                    left: $obj.data("lastX"),
                    width: $obj.data("lastWidth"),
                    height: $obj.data("lastHeight")
                }, "slow");
                if (options.type === "iframe") {
                    $obj.find("iframe").animate({
                        top: $obj.data("lastY"),
                        left: $obj.data("lastX"),
                        width: parseInt($obj.data("lastWidth") - dw),
                        height: parseInt($obj.data("lastHeight") - dh)
                    }, "slow");
                }
                $obj.data("state", "normal")
            }

        });
        
        //Attach a click event to the popup's close button to allow closing
        $windowCloseButton.bind('click', function(e) {
            var $window = $(e.target).parent().parent();
            $window.fadeOut(function() { $window.remove(); });
            if (options.onWindowClose != null) options.onWindowClose();
            if(options.modal){
                $modalBackground.remove();
            }
        });
        
        //Attach a click event to the popup's background to allow closing
        $modalBackground.bind('click', function(e) {
            $windowCloseButton.click();
        });

        $windowContent.click(function(e) {
            setFocus($(e.target).parent());
        });
        $windowStatusBar.click(function(e) {
            setFocus($(e.target).parent());
        });

        $windowContainer.data("state", "normal");
        //hide the popup to show it later using a visual effect
        $windowContainer.css("display", "none");

        $('body').append($windowContainer);
        if(options.modal){
            $('body').append($modalBackground);
        }

        $window = $windowContainer;
        if (!options.draggable) $window.children(".window-titleBar").css("cursor", "default");
        setFocus($window);
        
        //move the popup to the initial position
        move($windowContainer, options.posx, options.posy);
        //resize the popup to the initial size
        resize($windowContainer, options.width, options.height);
        
        
        
        //show the popup using the jquery fadeIn visual effect
        $window.fadeIn();


    },

    updateWindowContent: function(id, newContent) {
        $("#" + id + " .window-content").html(newContent);
    },

    updateWindowContentWithAjax: function(id, url, cache) {
        cache = cache === undefined ? true : false;
        $.ajax({
            url: url,
            cache: cache,
            dataType: "html",
            success: function(data) {
                $("#" + id + " .window-content").html(data);
            }
        });
    },

    moveWindow: function(id, x, y) {
        $obj = $("#" + id);
        x = parseInt(x);
        y = parseInt(y);
        $obj.data("lastX", x).data("lastY", y);
        x = x + "px";
        y = y + "px";
        $obj.css("left", x).css("top", y);
    },

    resizeWindow: function(id, width, height) {
        $obj = $("#" + id);
        width = parseInt(width);
        height = parseInt(height);
        $obj.data("lastWidth", width).data("lastHeight", height);
        width = width + "px";
        height = height + "px";
        $obj.css("width", width).css("height", height);
    },

    minimizeWindow: function(id) {
        $("#" + id + " .window-minimizeButton").click();
    },

    maximizeWindow: function(id) {
        $("#" + id + " .window-maximizeButton").click();
    },

    showWindow: function(id) {
        $("#" + id + " .window-closeButton").fadeIn();
    },

    hideWindow: function(id) {
        $("#" + id + " .window-closeButton").fadeOut();
    },

    closeWindow: function(id) {
        $("#" + id + " .window-closeButton").click();
    },

    closeAllWindows: function() {
        $(".window-container .window-closeButton").click();
    }

});

}

var ClientChat = {
	
	activeChats: [],
	
	defaults: {
		attachOnInit: true,
        autoRefrashingStartOnInit: true,
        autoEventsOnStart: null,
        url:'/ajax/mod_clientmsg.php',
        refrashTime: 5000,
		windowPars: {
			width: 300,
            height: 400,
            posx: $(window).width()-350,
            posy: $(window).height()-250,
			title: "Онлайн консультация",
			minwidth: 300,
			minheight: 400
		}
	},
	
	__winContent: "<div class=\"assetsContainer\"><div class=\"window-content-leftTopBorder\"></div><div class=\"window-content-leftBottomBorder\"></div><div class=\"window-content-leftBorder\"></div><div class=\"window-content-rightTopBorder\"></div><div class=\"window-content-rightBottomBorder\"></div><div class=\"window-content-rightBorder\"></div><div class=\"window-content-midLeft\"></div><div class=\"window-content-mid\"></div><div class=\"window-content-midRight\"></div></div><div class=\"chatBoxOuter\"><div class=\"chatBoxInner\"><img src=\"/images/trans.gif\" width=\"100\" height=\"100\" /><div class=\"chatBoxHeader\"><div class=\"chatBoxHeaderPhoto\"></div><div class=\"chatBoxHeaderText\"><span class=\"chatBoxHeaderTextGreetings\">Пожалуйста, дождитесь подключения оператора...</span><br/><br/><span class=\"chatBoxHeaderTextName\"></span></div></div><div class=\"chatBoxToolbar\"><div class=\"chatBoxToolbarName\"><input type=\"text\" class=\"chatBoxToolbarNameText\" value=\"Ваше имя\" size=\"12\"> <input type=\"image\" class=\"chatBoxToolbarNameButton\" title=\"Изменить имя\" src=\"/images/mod_clientmsg/exec.gif\"></a></div></div><div class=\"chatBoxBody\"><table height=\"100%\" width=\"100%\" style=\"width:100%;height:100%;\"><tr><td colspan=\"2\"  ><table class=\"chatBoxLog\"><tr><td></td></tr></table></td></tr></table></div><div class=\"chatBoxInput\"><textarea class=\"chatBoxMessageText\">Ваше сообщение..</textarea><a title=\"Отправить сообщение\" href=\"javascript:void(1);\" class=\"chatBoxMessageButtonSend\"><img border=\"0\" alt=\"Отправить (Enter)\" src=\"/images/mod_clientmsg/send.gif\"></a></div></div></div>",
	
	create: function(params){
		
		var options = $.extend({index:this.activeChats.length,winContent:this.__winContent},this.defaults, params);
		var chat = new this._constructor(options);
		
		this.activeChats.push(chat);
        
        return chat;
	},
	
	_constructor: function(options){
		/* Инициализация */
        
        
        
        this.title = document.title.substring(document.title.lastIndexOf("|")+1);
        this.url = document.URL;
		this.options = options;
		this.index = options.index;
        
        this.window = null;
        if(!this.uid)
            this.uid = 0;
        this.timestamp = 0;
        this.timestamp_sess = 0;
        this.onlineops = 0;
        this.name = '';
        this.ip = '';
        this.autoRafrashing = false;
        
        if(options.selfVars)
            $.extend(true,this,options.selfVars);
        delete options.selfVars;
		
        this.req = function(method,pars,callback){
            if(!method){
                if(console)
                    console.error('Необходимо указать метод подзапроса');
                throw new Error('Необходимо указать метод подзапроса');
            }
                
            var chatObject = this; 
           var dat = {
                    uid: this.uid,
                    method: method,
                    data: $.extend({timestamp: this.timestamp, timestamp_sess: this.timestamp_sess},pars)
                };
           
            $.extend(true,dat,this.reqData);
          
            $.ajax({
                data:dat,
                url: this.options.url,
                dataType: 'json',
                type: 'POST',
                processData: true,
                success: function(data){
                   
                    if(data.error)
                        if(console && console.error)
                            console.error('Ошибка сервера: '+data.error.text + '( '+data.error.desc + ' )');
                        else
                            alert('Ошибка серверного сценария ClientChat: ' + data.error.text);
                    
                    if(data.events && data.events.list && data.events.list instanceof Array){
                        
                        if(data.events.opsonline && data.events.opsonline !== undefined && data.events.opsonline !== null)
                            chatObject.onlineops = parseInt(data.events.opsonline);
                        
                        chatObject.onEvents(data.events.list);
                        if(data.events.timestamp && parseInt(data.events.timestamp) > chatObject.timestamp)
                            chatObject.timestamp = parseInt(data.events.timestamp);
                        if(data.events.timestamp_sess && parseInt(data.events.timestamp_sess) > chatObject.timestamp_sess)
                            chatObject.timestamp_sess = parseInt(data.events.timestamp_sess);
                    }
                    if(callback && typeof callback == 'function')
                        callback(data);
                        
                    
                     if(data.disconnect){
                        if(chatObject.autoRafrashing)
                            chatObject.stopAutoRefrashing();
                        var evTime = new Date;
                        $('#chatWin' + chatObject.index +' .chatBoxLog td').eq(0).append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+chatObject.f(evTime.getHours())+":"+chatObject.f(evTime.getMinutes())+":"+chatObject.f(evTime.getSeconds())+"]</span> Вы были отключены от сервера по причине: "+ data.disconnect.reason + ". </div>"));
                    }
                        
                },
                error: function(jqXHR, textStatus, errorThrown){
                    if(console && console.error)
                            console.error('Ошибка запроса к серверу: ',textStatus, errorThrown, jqXHR);
                        else
                            alert('Ошибка запроса к серверу ClientChat: ' + textStatus);
                    
                }
            });
            
        }
        
       
        
        this.sendMsg = function(text){
                this.req('sendMessage',{
                    text: text

                });
        }
        
        this.f = function(d){
                if(d<10)
                    return '0'+d;
                else
                    return d;
        }
        
        this.onEvents = function(events){
           
            var lastTimestamp = 0;
            var logBox = $('#chatWin' + this.index +' .chatBoxLog td').eq(0);
            var evTime = new Date;
            
            
            
            for(eKey in events){
                evTime.setTime(parseInt(events[eKey].timestamp)*1000);
               
                switch(parseInt(events[eKey].type)){
                    case 1:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineMsg'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> <span class = 'chatBoxLineName'>" + this.name + "</span>: " + events[eKey].pars.text + "</div>"));
                    break;
                    case 2:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineOMsg'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> <span class = 'chatBoxLineOName'>" + events[eKey].pars.oname + "</span>: " + events[eKey].pars.text + "</div>"));
                    break;
                   
                    
                    case 10:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> <span class = 'chatBoxLineName'>" + this.name + "</span> вошел в чат. </div>"));
                    break;
                    case 11:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> <span class = 'chatBoxLineName'>" + this.name + "</span> закрыл окно чата. </div>"));
                    break;
                    case 12:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> <span class = 'chatBoxLineName'>" + this.name + "</span> прервал связь с сервером и вышел из чата. </div>"));
                    break;
                    
                    case 15:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> Посетитель <span class = 'chatBoxLineName'>" + events[eKey].pars.olduname + "</span> сменил имя на <span class = 'chatBoxLineName'>" + this.name + "</span>. </div>"));
                    break;
                    
                    case 20:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> Оператор <span class = 'chatBoxLineOName'>" + events[eKey].pars.oname + "</span> присоединился к разговору. </div>"));
                    if(this.timestamp)
                        this.refrashHeader(events[eKey].pars.oid,events[eKey].pars.oname);
                    break;
                    case 21:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> Оператор <span class = 'chatBoxLineOName'>" + events[eKey].pars.oname + "</span> покинул чат. </div>"));
                    if(this.timestamp)
                        this.refrashHeader();
                    break;
                    case 22:
                    logBox.append($("<div class = 'chatBoxLine chatBoxLineSystem'><span class = 'chatBoxLineTime'>["+this.f(evTime.getHours())+":"+this.f(evTime.getMinutes())+":"+this.f(evTime.getSeconds())+"]</span> Связь с оператором <span class = 'chatBoxLineOName'>" + events[eKey].pars.oname + "</span> потеряна. </div>"));
                    if(this.timestamp)
                        this.refrashHeader();
                    break;
                }
                lastTimestamp = parseInt(events[eKey].timestamp);
            }
            if(lastTimestamp > this.timestamp)
                this.timestamp = lastTimestamp;
                
            $('#chatWin' + this.index +' .chatBoxBody').scrollTop(99999999);
            
        }
        
        this.startAutoRefrashing = function(){
            var chatObject = this;
            this.refrashTimer = window.setInterval(function(){
            chatObject.req('getLastEvents');
        },this.options.refrashTime);
            this.autoRafrashing = true;
            
            $("#chatWin"+this.index +" .window-closeButton").click(function(){chatObject.req('visDisconnect');chatObject.destroy();});
        }
        
        this.stopAutoRefrashing = function(){
            
            window.clearTimeout(this.refrashTimer);
            delete this.refrashTimer;
            this.autoRafrashing = false;
        }
        
        this.destroy = function(){
            
            if(this.autoRafrashing)
                this.stopAutoRefrashing();
            
            $("#chatWin"+this.index+" .chatBoxMessageText").eq(0).unbind();
            $("#chatWin"+this.index+" .chatBoxToolbarNameText").eq(0).unbind();
            $("#chatWin"+this.index+" .chatBoxMessageButtonSend").eq(0).unbind();
            $("#chatWin"+this.index +" .window-closeButton").eq(0).unbind();
            $("#chatWin"+options.index+" .chatBoxToolbarNameButton").eq(0).unbind();
            
        }
        this._clearVal = function() {
            
            $(this).attr('value','');
            $(this).unbind('click',this._clearVal);
            
        }
        this._onKeySend = function (event){
            
            if(event.ctrlKey && event.keyCode == 13)
                $("#chatWin"+options.index+" .chatBoxMessageButtonSend").click();
            
        }
        
		this.attach = function(options){
			
            
			$.newWindow($.extend({id: "chatWin"+options.index,content:options.winContent,className:'chatWindow'},options.windowPars));
			this.window =  $("#chatWin"+options.index);
            
            $("#chatWin"+options.index+' .window-statusBar').append('<div class="window-statusBar-leftCorner"></div>').append('<div class="window-statusBar-rightCorner"></div>');
            
            $("#chatWin"+options.index+' .window-titleBar').append('<div class="window-titleBar-leftBorder"></div>').append('<div class="window-titleBar-rightBorder"></div>');
            
            this.window.css('top',($(window).height()-options.windowPars.height)-10);
         
            
            
            
            var chatObject = this;
            
            
            $("#chatWin"+options.index+" .chatBoxMessageText").click( this._clearVal );
            $("#chatWin"+options.index+" .chatBoxToolbarNameText").click( this._clearVal );
            $("#chatWin"+options.index+" .chatBoxMessageText").keydown(this._onKeySend);
            
            //console.info($("#chatWin"+options.index+" .chatBoxMessageText"));
                
            if(this.oname){
                $("#chatWin"+options.index+" .chatBoxToolbarNameText").eq(0).hide();
                $("#chatWin"+options.index+" .chatBoxToolbarNameButton").eq(0).hide();
            } else
                $("#chatWin"+options.index+" .chatBoxToolbarNameButton").eq(0).click( function(){
                    var text = $("#chatWin"+options.index+" .chatBoxToolbarNameText");
                    //console.info('Событие ',chatObject.req);
                    
                    chatObject.req('visChName',{
                        name: text.attr('value')
                    },function(data){
                        text.attr('value','Готово!');
                        
                        chatObject.name = data.name;
                        window.setTimeout(function(){
                           text.attr('value','');
                        },3000);
                    });
                    text.attr('value','Изменяем...');
                }
            );
                
            
                
                
            $("#chatWin"+options.index+" .chatBoxMessageButtonSend").eq(0).click( function(){
                    var textarea = $("#chatWin"+options.index+" .chatBoxMessageText");
                    chatObject.sendMsg(textarea.attr('value'));
                    textarea.attr('value','');
                }
            );
            
            this.req('visConnect',{name:this.name,title:this.title,url:this.url}, function(data){
                    
                    chatObject.uid = data.uid;
                    chatObject.name = data.uname;
                    chatObject.ip = data.ip;
                
                     if(options.autoEventsOnStart && (!data.events || !data.events.list || !data.events.list.length)){
                        chatObject.onEvents(options.autoEventsOnStart); 
                     }
                
                
                    if(!chatObject.oid)
                        chatObject.refrashHeader();
                    else
                        $("#chatWin"+chatObject.index+" .chatBoxHeader").hide();
                    
                }
                
            );
                
		}
        
        this.refrashHeader = function(opId, opName){
            if(this.oid)
                return  false;
            
               
            
            //console.trace();
            var msg;
            if(parseInt(opId) && opName && opName.length)
                msg = 'С вами на связи консультант центра Эрудит';
            else {
                if(this.onlineops)
                    msg = 'Пожалуйста, подождите подключения оператора..';
                else
                    msg = 'В данный момент оператор не в сети, но вы можете оставить сообщение и email или телефон.';
                opName = '';
            }
            var windowindex = this.index;
            $("#chatWin"+windowindex+" .chatBoxHeaderTextName").html(opName);
            $("#chatWin"+windowindex+" .chatBoxHeaderTextGreetings").html(msg);
            $("#chatWin"+windowindex+" .chatBoxHeaderPhoto").css('background','none');
            
            if(opId)
                $.ajax({
                  url: "/admin/_files/mod_clientmsg/avatar"+parseInt(opId)+".png",
                  statusCode: {
                    404: function() {
                       $("#chatWin"+windowindex+" .chatBoxHeaderPhoto").css('background','url("/images/mod_clientmsg/new_photo.png") repeat-y scroll right top transparent');
                    },
                    200: function() {
                       $("#chatWin"+windowindex+" .chatBoxHeaderPhoto").css('background','url("/admin/_files/mod_clientmsg/avatar'+opId+'.png") repeat-y scroll right top transparent');
                    }
                  }
                });
        }
		
		/* Автоматические действия */
		
		if(options.attachOnInit)
			this.attach(options);
        
        if(options.autoRefrashingStartOnInit)
            this.startAutoRefrashing();
	}
};
	
	//$(function(){ClientChat.create()});
	

