comment.query=false;//Флаг активного запроса
comment.ajax=null;//Объект AJAX-запроса
comment.form_comment=undefined;//Окно комментария
comment.win=undefined;//Текущий объект окна со свойствами obj={} и dom=[]
comment.array_win=[];//Массив предыдущих окон (пополняется с начала)
comment.current_file=null;//Выделенный файл FTP
comment.current_index=0;//Текущий индекс для поля загрузки FTP
comment.generate='generate_html/';//Каталог генерации
function comment(src)
{
	var action='js_user/comment_manager.php';

	if (typeof src !='string')//SRC - событие
	{
		src=(src) ? src :((window.event) ? window.event : null);
		if (src===null && !comment.query)				                               
			return;
	}

	//****** Отсутствие активного запроса ******
	if (!comment.query)
	{
		if (typeof src !='string')//Первичные события
		{
			//----- Источник события -----
			var element=(src.target) ? src.target : src.srcElement;
			
			//----- Сброс -----
			if (comment.form_comment==undefined)
				return;
			//----- Перемещение окна комментария -----
			//----- Закрытие окна комментария -----
			else if (element.parentNode.id.slice(0,8)=='comment_')
			{
				if (element.firstChild.nodeValue=='прокомментировать')
				{
					if (comment.form_comment.parentNode.id!='content')
					{
						comment.form_comment.parentNode.lastChild.previousSibling.firstChild.nodeValue='прокомментировать';
						comment.form_comment.parentNode.lastChild.previousSibling.className='';
					}
					comment.form_comment=comment.form_comment.parentNode.removeChild(comment.form_comment);
					element.firstChild.nodeValue='скрыть';
					element.className='red';
					element.parentNode.appendChild(comment.form_comment);
				}
				else
				{
					comment.form_comment=comment.form_comment.parentNode.removeChild(comment.form_comment);
					element.firstChild.nodeValue='прокомментировать';
					element.className='';
					document.getElementById('content').appendChild(comment.form_comment);
				}
				return;
			
				//----- Запрос -----
				/*src='CMS_HTML_LIST='+element.value;
				action=comment.generate+'generate_manager.php';	 */
			}
			//----- Отправка комментария -----
			else if (element.id=='submit_comment')
			{
				//----- Запрос -----
				//alert(comment.form_comment);
				if (comment.form_comment.parentNode.id=='content')
					src='PARENT=null';
				else
					src='PARENT='+comment.form_comment.parentNode.id.slice(8);
				src+='&TEXT='+element.previousSibling.value;
				src+='&EMAIL='+element.previousSibling.previousSibling.previousSibling.value;
				src+='&NAME='+element.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.value;
				src+='&ID='+id;
				src+='&NOMER='+nomer;
			}
			else
				return;
		}
		//----- Обновление комментариев -----
		else if (src=='NULL')
			src='ID='+id+'&NOMER='+nomer+'&EXT='+location.pathname.slice(location.pathname.lastIndexOf('.')+1);
		else
			return;

		//----- Отправка AJAX-запроса (GET) -----
		comment.ajax=new Ajax();
		comment.ajax.action='http://'+location.hostname+'/'+action+'?'+src;
		//alert(comment.ajax.action);
		comment.ajax.method='get';
		comment.ajax.onready=comment;
		/*var interface_ball;
		if (!(interface_ball=document.getElementById('interface_ball')))
		{
			//----- Создание объекта INTERFACE_BALL -----
			interface_ball=document.createElement('div');
			interface_ball.setAttribute('id','interface_ball');
			var ball;
			var angle=Math.PI/6;
			var delta=Math.PI/3;
			var R=30;
			for(var i=0; i<6; i++)
			{
				ball=document.createElement('div');
				ball.style.left=R*(1+Math.cos(angle))+'px';
				ball.style.top=R*(1-Math.sin(angle))+'px';
				interface_ball.appendChild(ball);
				angle+=delta;
			}
			interface_ball.firstChild.id='interface_ball_current';
			document.getElementById('full').appendChild(interface_ball);
		}
		interface_ball.style.visibility='visible';
		comment.query=setInterval('comment(\'ball\')',250);	*/ 
		comment.query=true;
		comment.ajax.start();
	}
	//****** Присутствие активного запроса ******
	else
	{
		if (typeof src =='string' && src=='ball')
		{
			var div=document.getElementById('interface_ball_current');
			div.id='';
			if (div.previousSibling)
				div.previousSibling.id='interface_ball_current';
			else
				div.parentNode.lastChild.id='interface_ball_current';
			return;
		}
		/*else if (typeof src =='string' && src=='frame' && window.frames['hidden'].document.title=='JSON')//Ответ через фрейм
		{
			//----- Подтверждение получения ответа -----
			document.getElementById('interface_ball').style.visibility='hidden';
			clearInterval(comment.query);
			comment.query=false;
			
			var p=window.frames['hidden'].document.getElementsByTagName('p')[0];
			if (!p.hasChildNodes())
				ajax_object={'FATAL':''};
			else
				try
				{
					//alert(p.firstChild.nodeValue);
					var ajax_object=eval('('+p.firstChild.nodeValue+')');//Объект JSON
				}
				catch(e)
				{
					ajax_object={'FATAL':p.firstChild.nodeValue};
					//alert(p.firstChild.nodeValue);//Невозможно преобразовать в объект
				}
		}*/
		else if (comment.ajax)//Ответ через AJAX
		{
			//----- Промежуточные ответы -----
			if (comment.ajax.request.readyState!=4)
				return;
				
			//----- Подтверждение получения ответа -----
			/*document.getElementById('interface_ball').style.visibility='hidden';
			clearInterval(comment.query); */
			comment.query=false;

			//----- Ошибка передачи -----
			if (comment.ajax.request.status!=200)
			{
				ajax_object={'FATAL':'Ошибка '+comment.ajax.request.status+'.\nОбновите страницу и попробуйте еще раз.'};
				//alert('Ошибка '+comment.ajax.request.status+'.\nОбновите страницу и попробуйте еще раз.');
				//return;
			}
			
			try
			{
				//alert(comment.ajax.request.responseText.length);
				//alert(comment.ajax.request.responseText.slice(-1));
				var ajax_object=eval('('+comment.ajax.request.responseText+')');//Объект JSON
			}
			catch(e)
			{
				//alert(comment.ajax.request.responseText);
				ajax_object={'FATAL':comment.ajax.request.responseText};
				//alert(comment.ajax.request.responseText);//Невозможно преобразовать в объект
				//return;	
			}

			//----- Сброс в NULL объекта AJAX -----
			comment.ajax=null;
		}
		else//Ошибка
			return;
		//return;
		/*var temp='';	
		for(var name in ajax_object)
			temp+=name+'=>'+ajax_object[name]+"\n";
		alert(temp);
		return;	*/
			
		//****** Обработка ответа ******
		if (comment.form_comment)
		{
			var order_nesting;
			if (comment.form_comment.parentNode.id=='content')
				order_nesting=0;
			else
				order_nesting=parseInt(comment.form_comment.parentNode.className.slice(8))+1;
		}

		//----- Конец транзакции -----
		if ('END_QUERY' in ajax_object)
		{
			return;
		}
		//----- Фатальная ошибка -----
		else if ('FATAL' in ajax_object)
		{
			//----- Сообщение -----
			if (ajax_object.FATAL)
				alert(ajax_object.FATAL.replace(/---/g,"\n"));
		}
		else if ('MESSAGE' in ajax_object)
		{
			//------- Сообщение -------------
			if (ajax_object.MESSAGE)
				alert(ajax_object.MESSAGE.replace(/---/g,"\n"));			  
			else
				alert('Неопознанная ошибка');
				
			return;
		}
		//----- Обновление комментариев -----
		else if ('NEWS' in ajax_object)
		{
			//----- Создание абзацев -----
			var p,span,a,br;
			for(var k=0; k<ajax_object.NEWS.length; k++)
			{
				var parent=false;
				if (ajax_object.NEWS[k].parent===null)
					order_nesting=0;
				else
				{
					parent=document.getElementById('comment_'+ajax_object.NEWS[k].parent)
					order_nesting=parseInt(parent.className.slice(8))+1;
				}
				//----------------------------------
				p=document.createElement('p');
				p.setAttribute('id','comment_'+ajax_object.NEWS[k].id_comment);
				p.className='comment_'+order_nesting;
				for(var i=0; i<ajax_object.NEWS[k].text.length; i++)
				{
					if (i)
					{
						br=document.createElement('br');
					p.appendChild(br);
					}
					p.appendChild(document.createTextNode(ajax_object.NEWS[k].text[i]));
				}
				//----------------------------------
					br=document.createElement('br');
				p.appendChild(br);
				//----------------------------------
					span=document.createElement('span');
					span.className='comment_author';
					span.appendChild(document.createTextNode(ajax_object.NEWS[k].name));
				p.appendChild(span);
				//----------------------------------
					span=document.createElement('span');
					span.appendChild(document.createTextNode(ajax_object.NEWS[k].date));
				p.appendChild(span);
				//----------------------------------
				if (order_nesting<2)
				{
					span=document.createElement('a');
					span.setAttribute('href','javascript: void(0)');
					span.onclick=comment;
					span.appendChild(document.createTextNode('прокомментировать'));
				p.appendChild(span);
				}
				//----------------------------------
				if (order_nesting==0)
					document.getElementById('content').appendChild(p);
				else
				{
					var last_node=parent.nextSibling;
					while(parseInt(last_node.className.slice(8))==order_nesting)
						last_node=last_node.nextSibling;
					document.getElementById('content').insertBefore(p,last_node);
				}
			}

			//----- Создание окна комментирования -----
			var label,input,textarea,text;
			comment.form_comment=document.createElement('p');
			comment.form_comment.setAttribute('id','form_comment');
				label=document.createElement('label');
				text=document.createTextNode('Имя');
			   	label.appendChild(text);
			   	comment.form_comment.appendChild(label);
				//---------------------------------------
				input=document.createElement('input');
				input.setAttribute('name','');
				input.setAttribute('type','text');
				input.setAttribute('maxlength','32');
			   	comment.form_comment.appendChild(input);
				//---------------------------------------
				label=document.createElement('label');
				text=document.createTextNode('E-mail');
			   	label.appendChild(text);
			   	comment.form_comment.appendChild(label);
				//---------------------------------------
				input=document.createElement('input');
				input.setAttribute('name','');
				input.setAttribute('type','text');
				input.setAttribute('maxlength','32');
			   	comment.form_comment.appendChild(input);
				//---------------------------------------
				label=document.createElement('label');
				text=document.createTextNode('Текст комментария');
			   	label.appendChild(text);
			   	comment.form_comment.appendChild(label);
				//---------------------------------------
				textarea=document.createElement('textarea');
				textarea.setAttribute('name','');
			   	comment.form_comment.appendChild(textarea);
				//---------------------------------------
				input=document.createElement('input');
				input.setAttribute('id','submit_comment');
				input.setAttribute('name','');
				input.setAttribute('type','button');
				input.setAttribute('value','Добавить комментарий');
				input.onclick=comment;
			   	comment.form_comment.appendChild(input);
			document.getElementById('content').appendChild(comment.form_comment);
			
			return;
		}
		//----- Вставка нового комментария -----
		else if ('TEXT' in ajax_object)
		{
			//----- Создание нового абзаца -----
			var p,span,a,br;
				
			p=document.createElement('p');
			p.setAttribute('id','comment_'+ajax_object.ID);
			p.className='comment_'+order_nesting;
			for(var i=0; i<ajax_object.TEXT.length; i++)
			{
				if (i)
				{
					br=document.createElement('br');
				p.appendChild(br);
				}
				p.appendChild(document.createTextNode(ajax_object.TEXT[i]));
			}
			//----------------------------------
				br=document.createElement('br');
			p.appendChild(br);
			//----------------------------------
				span=document.createElement('span');
				span.className='comment_author';
				span.appendChild(document.createTextNode(ajax_object.NAME));
			p.appendChild(span);
			//----------------------------------
				span=document.createElement('span');
				span.appendChild(document.createTextNode(ajax_object.DATE));
			p.appendChild(span);
			//----------------------------------
			if (order_nesting<2)
			{
				span=document.createElement('a');
				span.setAttribute('href','javascript: void(0)');
				span.onclick=comment;
				span.appendChild(document.createTextNode('прокомментировать'));
			p.appendChild(span);
			}
			//----------------------------------
			if (order_nesting==0)
				comment.form_comment.parentNode.insertBefore(p,comment.form_comment);
			else
			{
				var last_node=comment.form_comment.parentNode.nextSibling;
				while(parseInt(last_node.className.slice(8))==order_nesting)
					last_node=last_node.nextSibling;
				comment.form_comment.parentNode.parentNode.insertBefore(p,last_node);
			}
			//return;
		}
		if (order_nesting!=0)
		{
			comment.form_comment.parentNode.lastChild.previousSibling.firstChild.nodeValue='прокомментировать';
			comment.form_comment.parentNode.lastChild.previousSibling.className='';
			comment.form_comment=comment.form_comment.parentNode.removeChild(comment.form_comment);
			document.getElementById('content').appendChild(comment.form_comment);
		}
		comment.form_comment.getElementsByTagName('input')[0].value='';
		comment.form_comment.getElementsByTagName('textarea')[0].value='';
	}
}
