есть js код, когда я добавляю фун-цию wchatopen(), то возникает ошибка chatShowNewElement is not defined (так пишет firebug), если закомментировать функцию wchatopen, то ошибки ни какой не возникает и работает все как надо. В чем может быть проблема?
Обявление функции chatShowNewElement строка 101
Ну и собственно сам код:
CODE (javascript):
скопировать код в буфер обмена
скопировать код в буфер обмена
- $jj = jQuery.noConflict();
- // открытие окна чата
- function wchatopen(id){
- window.open('http://behappy2day.com/chat/index.php?gID='+id,
- 'chatWin',
- 'top=15,
- left=20,
- menubar=0,
- toolbar=0,
- location=0,
- directories=0,
- status=0,
- scrollbars=0,
- resizable=0,
- width=600,
- height=600'
- );
- return;
- }
- function getElementSizes(element)
- {
- var width = element.offsetWidth;
- var height = element.offsetHeight;
- return {"width": width, "height": height};
- }
- // удаление элемента DOM
- function removeElement(element)
- {
- if(element)
- {
- element.parentNode.removeChild(element);
- }
- }
- function getClientWidth()
- {
- return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
- }
- function getClientHeight()
- {
- return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
- }
- function chatCreateMainContainer()
- {
- var mainContainer = document.getElementById("chat_main_container");
- if(mainContainer != null)
- {
- // если контейнер уже существует, то просто возвращаем ссылку на него
- return mainContainer;
- }
- else
- {
- // создаем элемент Div, который будет служить основным контейнером для всех остальных элементов
- var body = document.getElementsByTagName("body")[0];
- var newDiv = document.createElement("div");
- body.appendChild(newDiv);
- newDiv.id = "chat_main_container";
- // ширина основного контейнера
- var containerWidth = 230;
- newDiv.style.width = containerWidth+"px";
- newDiv.style.border = "1px solid #5AAED6"; //"1px solid #0000FF";
- newDiv.style.borderCollapse = "collapse";
- newDiv.style.zIndex = 10000;
- newDiv.style.display = "none";
- newDiv.style.backgroundColor = "#ffffff";
- // позиционирование основного контейнера на видимой области браузера (правый нижний угол)
- newDiv.style.position = "fixed";
- newDiv.style.bottom = "10px";
- newDiv.style.right = "3px";
- // определяем первоначальный блок для функций Minimize и Maximize
- newDiv.innerHTML = '<div style="height: 20px; background-color: #5AAED6; text-align: right; font-weight: bold; padding-right: 3px; color: #FFFFFF; cursor: pointer; display: none;" id="r_block" onclick="chatMiniMaxi();">Minimize</div>';
- // это общий суб-контейнер для блоков-элементов с приглашениями к чату
- newDiv.innerHTML += '<div id="visual_elements"></div>';
- return newDiv;
- }
- }
- function sendTest()
- {
- requestProcess("/xml.php", "?v=23", chatShowNewElement, true);
- }
- // счетчик отображаемых элементов (переменная с глобальной областью видимости)
- chatElementCounter = 0;
- function chatShowNewElement()
- {
- if(requestObject.readyState == 4)
- {
- if(requestObject.status == 200)
- {
- // определяем вернул ли запрос данные для отображения
- var name = requestObject.responseXML.getElementsByTagName("name").item(0).firstChild.data;
- // ID нужен для того, чтобы определить не был ли уже показан этот элемент
- var id = requestObject.responseXML.getElementsByTagName("id").item(0).firstChild.data;
- var se = document.getElementById("e_"+id);
- // если количество уже отображаемых элементов не превышает 3, то добавляем новый элемент, если превышает, то ничего не делаем
- if(chatElementCounter < 3 && name != "empty" && se == null)
- {
- var mainContainer = chatCreateMainContainer();
- // получаем данные из XML-документа (который получили от сервера)
- var name = requestObject.responseXML.getElementsByTagName("name").item(0).firstChild.data;
- var city = requestObject.responseXML.getElementsByTagName("city").item(0).firstChild.data;
- var age = requestObject.responseXML.getElementsByTagName("age").item(0).firstChild.data;
- var mess = requestObject.responseXML.getElementsByTagName("mess").item(0).firstChild.data;
- var image = requestObject.responseXML.getElementsByTagName("image").item(0).firstChild.data;
- var id = requestObject.responseXML.getElementsByTagName("id").item(0).firstChild.data;
- document.getElementById("chat_main_container").style.display = "block";
- $jj("#r_block").fadeIn(700);
- // создаем HTML-код нового элемента
- var newElement = '<div style="display: none; margin: 6px;" id="e_'+id+'"><table border="0" cellspacing="0" cellpadding="0">';
- newElement += '<tr>';
- newElement += '<td align="center" style="padding-right: 5px;"><img src="'+image+'"></td>';
- newElement += '<td align="left" valign="top"><div style="height: 134px; font-size: 13px; font-family: Arial, san-serif; overflow: hidden;"><b>'+name+'</b> (ID: '+id+')<br />Age: '+age+'<br />'+city+'<div style="margin-top: 5px;">'+mess+'</div></td>';
- newElement += '</tr>';
- newElement += '<tr>';
- newElement += '<td align="center" style="padding-bottom: 5px;"><div style="border: 1px solid #D94A24; height: 5px; width: 90%;"><div id="c_'+id+'" style="background-color: #D94A24; overflow: hidden; height: 5px; margin-right: 0%;"> </div></div><a href="/" style="text-decoration: none; color: #5AAED6;" onclick="chatHideElement(\''+id+'\'); return false;">Close</a></td>';
- newElement += '<td align="center" style="padding-bottom: 5px;"><button onclick="wchatopen(\''+id+'\')">Start Chat Now</button><fromt action="/" method="post"><input type="hidden" value="open" name="s_'+id+'" id="s_'+id+'" /></form></td>';
- newElement += '</tr>';
- newElement += '</table></div>';
- document.getElementById("visual_elements").innerHTML += newElement;
- // если в блоке больше одного элемента, то добавляем разграничивающую линию (верх)
- if(chatElementCounter > 0)
- {
- var nEl = document.getElementById("e_"+id);
- nEl.style.borderTop = "1px silver dotted";
- nEl.style.paddingTop = "10px";
- }
- $jj("#e_"+id).slideDown(600);
- // увеличиваем счетчик отображаемых элементов
- chatElementCounter++;
- // запускаем таймер для закрытия блока (после того, как пройдет 1 минута)
- evalCloseTimer(500, id);
- }
- }
- else
- {
- alert("Error of remote server connect - code "+requestObject.status);
- }
- }
- }
- function chatMiniMaxi()
- {
- var rBlock = document.getElementById("r_block");
- if(rBlock.innerHTML == "Minimize") rBlock.innerHTML = "Maximize";
- else rBlock.innerHTML = "Minimize";
- $jj("#visual_elements").slideToggle(700);
- }
- function chatHideElement(elementID)
- {
- $jj("#e_"+elementID).slideUp(700);
- // определяем статус блока (закрыт или открыт)
- var status = document.getElementById("s_"+elementID);
- if(status.value == "open")
- {
- status.value = "closed";
- // уменьшаем счетчик отображаемых элементов (если он уже не был закрыт каким-либо другим путем)
- chatElementCounter--;
- setTimeout(function () {removeElement(document.getElementById("e_"+elementID));}, 700);
- }
- if(chatElementCounter < 1)
- {
- $jj("#chat_main_container").fadeOut(700);
- }
- }
- function evalCloseTimer(timeout, elementID)
- {
- try
- {
- var intervalID = setInterval(function () {
- var element = document.getElementById("c_"+elementID);
- var i = parseInt(element.style.marginRight, 10);
- if(i < 100)
- {
- i += 1.7;
- element.style.marginRight = i+"%";
- }
- else
- {
- clearInterval(intervalID);
- chatHideElement(elementID);
- return;
- }
- }, timeout);
- }
- catch(e) {}
- }