var pca = 0; var onlinThumb = 0; var onlinChat = 0; var onlnPicName = 'onlin.gif'; var onlnPicNameH = 'onlinh.gif'; function mousePageXY(e) { var x = 0, y = 0; if (!e) e = window.event; if (e.pageX || e.pageY) { x = e.pageX; y = e.pageY; } else if (e.clientX || e.clientY) { x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; } return {"x":x, "y":y}; } var divOnlineSmall; function slideDivHor(dH){ var deltaHor = dH; var endX = 0; divOnlineSmall.style.left = (parseInt(divOnlineSmall.style.left) + deltaHor) + 'px'; if (parseInt(divOnlineSmall.style.left) < endX - deltaHor) { setTimeout('slideDivHor(' + (dH+2) + ')',20); } else { divOnlineSmall.style.left = endX + 'px'; } } function initOnline(){ var now = new Date(); if ((now.getHours() > 17 ) || (now.getHours() < 8) ){ onlnPicName = 'olof1.gif'; onlnPicNameH = 'olof2.gif'; } var t = 210; var w = 260; var h = 79; var d = 0; var ont = insPanel(0,d-w,t,w,h, '#dddddd','onlinThumb'); ont.hidd = 1; ont.style.backgroundImage = "url('/img/onlin/bg.gif')"; ont.h = h; ont.w = w; ont.olcb = 0; var HeaderText = drawText(ont, 10, 10, 'Онлайн консультация', "#ffffff"); HeaderText.style.fontSize = '15px'; var HintBlock = insPanel(0,0,0,0,0,"#7cc6ff"); HintBlock.style.position = 'absolute'; var HintBlockText = drawText(HintBlock, 5, 3, '', "#ffffff"); HintBlock.text = HintBlockText; HintBlock.hidden = 0; var StartChatBlock = fullRect(ont,2,25,w-50,h-28,trans,0,0,0,0,"#7F9FBF"); var StartChatText = drawText(StartChatBlock, 74, 22, 'Начать разговор', "#ffffff"); StartChatText.style.fontSize = '15px'; StartChatBlock.style.cursor = 'pointer'; StartChatBlock.onclick = function(){ EmptyDiv(HintBlock); if (!onlinChat) initChat(ont) else onlinChat.style.display = 'block'; }; StartChatBlock.onmouseover = function(){ HintBlock.style.width = '110px'; HintBlock.style.height = '23px'; HintBlock.hidden = 0; HintBlock.text.innerHTML = 'Начать разговор'; }; StartChatBlock.onmouseout = function(){ HintBlock.style.width = '0px'; HintBlock.style.height = '0px'; HintBlock.text.innerHTML = ''; HintBlock.hidden = 1; }; StartChatBlock.onmousemove = function(e){ var mCur = mousePageXY(e); HintBlock.style.left = mCur.x + 20 + 'px'; HintBlock.style.top = mCur.y + 20 + 'px'; }; imagRect(ont, 20,42,35,26, "/img/onlin/bklogo3.gif"); var ShowPic = imagRect(ont, w,0,30,79, "/img/onlin/" + onlnPicName); divOnlineSmall = ont; ShowPic.style.cursor = 'pointer'; ShowPic.onclick = function(){ if (ont.hidd) { ShowPic.src = '/img/onlin/' + onlnPicNameH; ont.hidd = 0; slideDivHor(1); if (onlinChat) onlinChat.style.display = 'block'; } else { ShowPic.src = '/img/onlin/'+ onlnPicName; hideOnline(); } }; ShowPic.onmouseover = function(){ HintBlock.style.width = '120px'; HintBlock.style.height = '23px'; HintBlock.hidden = 0; if (ont.hidd) { HintBlock.text.innerHTML = 'Развернуть панель'; } else { HintBlock.text.innerHTML = 'Свернуть панель';}; }; ShowPic.onmouseout = function(){ HintBlock.style.width = '0px'; HintBlock.style.height = '0px'; HintBlock.text.innerHTML = ''; HintBlock.hidden = 1; }; ShowPic.onmousemove = function(e){ var mCur = mousePageXY(e); HintBlock.style.left = mCur.x + 20 + 'px'; HintBlock.style.top = mCur.y + 20 + 'px'; }; ont.ShowPic = ShowPic; onlinThumb = ont; return ont; } function initChat(onp){ var t = 290; var l = 0; var w = 400; var h0 = 253; var h1 = 600; var ont = insPanel(0,l,t,w,h0, '#dddddd','onlinThumb'); ont.t = t; ont.l = l; ont.w = w; ont.h0 = h0; ont.h1 = h1; onp.olcb = ont; var sht = fullRect(ont,7,7,w-4,h0-4,"#000000",0,0,0,0,"#000000"); setOpact(sht,0.20); ont.sht = sht; // задний блок var ozb = fullRect(ont,0,0,w,h0,"#FFFFFF",1,1,1,1,"#7F9FBF"); ont.ozb = ozb; fullRect(ont, 0 ,0 ,w, 25,"#D3D3D3" , 1,1,1,1,"#7F9FBF"); fontText(false,false,1,0); drawText(ont, 10, 5,"Онлайн консультация" , "#FFFFFF"); loweRect(ont, w-23, 5,15,15, 1 ); var xxx = drawText(ont, w-19, 4, "x","#D68F0C"); moveRect(ont, 0 ,0 ,w-2, 25, trans ); var but = fillRect(ont, w-23, 5,15,15, trans ); but.title = "закрыть"; but.onclick = function(){ hideOnline(); }; xxx.onclick = function(){ hideOnline(); }; xxx.style.cursor= "default"; fDefault( ); ont.hidd = 1; var HintBlock = insPanel(0,0,0,0,0,"#ff0000"); HintBlock.style.position = 'absolute'; var HintBlockText = drawText(HintBlock, 5, 3, '', "#ffffff"); HintBlock.text = HintBlockText; HintBlock.hidden = 0; var StarterBlock = insPanel(ont,0,0,0,0,"#ffffff"); var aboutText = 'Вы можете ввести свое имя и вопрос оператору.
После нажатия кнопки "Отправить" Ваше сообщение
будет обработано оператором.'; var AboutText = drawText(StarterBlock, 10, 40, '', "#0060a9"); AboutText.innerHTML = aboutText; var NameText = drawText(StarterBlock, 10, 98, 'Ваше имя:', "#0060a9"); var MessageText = drawText(StarterBlock, 10, 120, 'Ваш вопрос:', "#0060a9"); var clientNameInput = editText(StarterBlock, 90,95,w-100,20,0,'', '#333333', '#ffffff'); var clientMessage = memoText(StarterBlock, 10,137,w-20,75, 0, '', '#333333', '#ffffff'); clientMessage.style.overflow = "auto"; var btnStart = fillRect(StarterBlock, w/2-50,h0-30,100,20, '#72a81b'); var btnStartText = drawText(btnStart, 15, 2, 'Отправить', "#ffffff"); btnStartText.style.fontWeight = 'bold'; btnStart.style.cursor= "pointer"; btnStart.onclick = function(){ if (clientNameInput.value.length < 1) { clientNameInput.focus(); fadeRect(clientNameInput,150,"#FD5711","#FFFFFF"); } else if (clientMessage.value.length < 1) { clientMessage.focus(); fadeRect(clientMessage,150,"#FD5711","#FFFFFF"); } else { ont.ClientName = clientNameInput.value; ont.ClientMessage = clientMessage.value; EmptyDiv(HintBlock); EmptyDiv(StarterBlock); CreateChatDialog(ont); } }; btnStart.onmouseout = function(){ btnStart.style.backgroundColor = '#72a81b'; HintBlock.style.width = '0px'; HintBlock.style.height = '0px'; HintBlock.text.innerHTML = ''; HintBlock.hidden = 1; }; btnStart.onmouseover = function(){ btnStart.style.backgroundColor = '#a5d525'; HintBlock.style.backgroundColor = '#7cc6ff'; HintBlock.style.width = '135px'; HintBlock.style.height = '23px'; HintBlock.hidden = 0; HintBlock.text.innerHTML = 'Отправить сообщение'; }; btnStart.onmousemove = function(e){ var mCur = mousePageXY(e); HintBlock.style.left = mCur.x + 20 + 'px'; HintBlock.style.top = mCur.y + 20 + 'px'; }; onlinChat = ont; return ont; } function CreateChatDialog(Block){ var t = 140; // отступ сверху var chatH = 326; var messH = 63; var ChatBlock = insPanel(Block,0,0,0,0,"#ffffff"); // увеличение панели обратной связи до рабочего размера Block.style.height = Block.h1 + 'px'; Block.ozb.style.height = Block.h1 + 'px'; Block.sht.style.height = Block.h1-2 + 'px'; // хинт var HintBlock = insPanel(0,0,0,0,0,"#ff0000"); HintBlock.style.position = 'absolute'; HintBlockText = drawText(HintBlock, 5, 3, '', "#ffffff"); HintBlock.text = HintBlockText; HintBlock.hidden = 0; var ChatHeaderBlock = fullRect(ChatBlock,10,t-20,146,20,"#7cc6ff",1,1,1,0,"#7F9FBF"); var ChatHeader = drawText(ChatHeaderBlock, 3, 2, 'Диалог с консультантом', "#ffffff"); var inittext = 'Здравствуйте!
Подождите, пожалуйста. Оператор ответит вам в ближайшее время.'; inittext += '
' + Block.ClientName + ': ' + Block.ClientMessage; var ClientMessage0 = Block.ClientMessage; var ChatBorder = drawRect(ChatBlock, 10,t,Block.w-20,chatH, '#7F9FBF'); var Chat = insPanel(ChatBlock, 15,t+5,Block.w-20-10,chatH-10, '#ffffff', 'onlineChat'); Chat.style.overflow = "auto"; Chat.style.color = '#333333'; Chat.innerHTML = inittext; ChatBlock.Chat = Chat; ChatBlock.ClientName = Block.ClientName; onlinChat.ChatText = Chat; var ChatHeaderBlock = fullRect(ChatBlock,10,t + chatH +10,105,20,"#7cc6ff",1,1,1,0,"#7F9FBF"); var ClientMessHeader = drawText(ChatHeaderBlock, 3, 2, 'Ваше сообщение', "#ffffff"); var ClientMess = memoText(ChatBlock, 10,t + chatH + 30,Block.w-20,messH, 0, 'Введите текст вашего сообщения...', '#333333', '#ffffff'); onlinChat.ClientMessage = ClientMess; ClientMess.style.overflow = "auto"; ClientMess.onclick = function(){ if (ClientMess.value == 'Введите текст вашего сообщения...') { ClientMess.value = ''; } }; var isCtrl = false; ClientMess.isCtrl = isCtrl; ClientMess.onkeyup=function(e){ if(e.which == 17) ClientMess.isCtrl=false; } ClientMess.onkeydown=function(e){ if(e.which == 17) ClientMess.isCtrl=true; if(e.which == 13 && ClientMess.isCtrl == true) { clientSendMess(ChatBlock); return false; } } ChatBlock.ClientMess = ClientMess; var btnSend = fillRect(ChatBlock, Block.w/2-50,Block.h1-30,100,20, '#72a81b'); var btnSendText = drawText(btnSend, 15, 2, 'Отправить', "#ffffff"); btnSendText.style.fontWeight = 'bold'; btnSend.style.cursor= "pointer"; btnSend.onclick = function(){ clientSendMess(ChatBlock); }; btnSend.onmouseout = function(){ btnSend.style.backgroundColor = '#72a81b'; HintBlock.style.width = '0px'; HintBlock.style.height = '0px'; HintBlock.text.innerHTML = ''; HintBlock.hidden = 1; }; btnSend.onmouseover = function(){ btnSend.style.backgroundColor = '#a5d525'; HintBlock.style.backgroundColor = '#7cc6ff'; HintBlock.style.width = '215px'; HintBlock.style.height = '20px'; HintBlock.hidden = 0; HintBlock.text.innerHTML = 'Нажмите для отправки сообщения'; }; btnSend.onmousemove = function(e){ var mCur = mousePageXY(e); HintBlock.style.left = mCur.x + 20 + 'px'; HintBlock.style.top = mCur.y - 20 + 'px'; }; var ChatFotoBlock = fullRect(ChatBlock,Block.w-103,35,93,93,"#ffffff",1,1,1,1,"#7F9FBF"); var ChatFoto = imagRect(ChatFotoBlock, 20,28,50,34, "/img/onlin/bk2.gif" ); var TopText = drawText(ChatBlock, 10, 40, '', "#e4f3fe"); TopText.innerHTML = 'БалтКам
Онлайн-консультация'; TopText.style.fontSize = '24px'; onlinChat.ChatText.style.backgroundPosition = "center"; onlinChat.ChatText.style.backgroundRepeat = "no-repeat"; onlinChat.ChatText.style.backgroundImage = 'url("/img/onlin/load.gif")'; AjaxPost('/onlin.java','act0' + '' + Block.ClientName + '-mess-' + ClientMessage0,clientInitSession); } function clientInitSession(str){ var strs=str.split("\n"); onlinChat.ClientID = strs[0]; onlinChat.ChatText.style.backgroundImage = ''; var disclamer = drawText(onlinChat, 10, 30, '', "#000000"); disclamer.innerHTML = strs[1]; onlinChat.disclamer = disclamer; pca = 1; PeriodCheckAnswer(); } function clientSendMess(chat){ if (onlinChat.ClientMessage.value.length > 0) { onlinChat.ChatText.style.backgroundImage = 'url("/img/onlin/load.gif")'; AjaxPost('/onlin.java','act1' + onlinChat.ClientID + onlinChat.ClientMessage.value,clientMessageSend); } else { } } function clientMessageSend(str){ if (str == 1){ onlinChat.ChatText.innerHTML += '
' + onlinChat.ClientName + ': ' + onlinChat.ClientMessage.value.replace(/\r\n|\r|\n/g,'
'); onlinChat.ChatText.scrollTop = onlinChat.ChatText.scrollHeight; onlinChat.ClientMessage.value = ''; onlinChat.ChatText.style.backgroundImage = ''; } else { alert('Ошибка отправки, попробуйте еще раз.') onlinChat.ChatText.style.backgroundImage = ''; } } function clientGetMessage(){ AjaxPost('/onlin.java','act2'+onlinChat.ClientID,clientMessageGet) } function clientMessageGet(str){ if (str.substr(0,5)=='close') { EmptyDiv(onlinThumb); EmptyDiv(onlinChat); if (pca==1) {alert('Диалог завершен со стороны оператора.');} pca = 0; } else { var strs=str.split("##ms##"); var strss; for (i=1; i < strs.length; i++) { strss = strs[i].split("##ans##"); // разбор ответа сервера onlinChat.ChatText.innerHTML += '
' + strss[0] + ': ' + strss[1].replace(/\r\n|\r|\n/g,'
'); } onlinChat.ChatText.scrollTop = onlinChat.ChatText.scrollHeight; } } function hideOnline(){ onlinThumb.hidd = 1; onlinThumb.style.left = -onlinThumb.w + 'px'; if (onlinChat != 0) onlinChat.style.display = 'none'; pca = 0; } function PeriodCheckAnswer(){ clientGetMessage(); if (pca) setTimeout('PeriodCheckAnswer()',10000); }