var xmlHttp=createXmlHttpRequestObject();
var xmlHttp1=createXmlHttpRequestObject();

function createXmlHttpRequestObject()
{
	var xmlHttp;
	
	//все кроме ИЕ 6 и ранее
	try
	{
			xmlHttp=new XMLHttpRequest();
			flagie=0;
	}
	catch(e)
	{
			//IE 6
			var xmlHttpVersions=new Array("MSXML2.XMLHTTP.6.0",
										  "MSXML2.XMLHTTP.5.0",
										  "MSXML2.XMLHTTP.4.0",
										  "MSXML2.XMLHTTP.3.0",
										  "MSXML2.XMLHTTP",
										  "Microsoft.XMLHTTP");
			flagie=1;										  
			// perebor prog_id
			for(var i=0; i<xmlHttpVersions.length&&!xmlHttp; i++){
				try{
					//
					xmlHttp=new ActiveXObject(xmlHttpVersions[i]);
				}catch(e){}
			}
	}
			
	//vernem object ili owibka
	if(!xmlHttp)
		alert("Ошибка создания этого мудреного объекта!");
	else
		return xmlHttp;
			
}		

//проверка, зашел ли уже юзер
function check(){
	//alert("");
	if(xmlHttp){
		//popytka connect
		try{
			
			xmlHttp.open("GET", "js/chk_user.php", true);
			xmlHttp.onreadystatechange=handleCheckUser;
			xmlHttp.send(null);				
		}
		catch(e){
		//error!
			alert("Невозможно соединиться с сервером!:\n"+e.toString());
		}
	}
}

//проверка, зашел ли уже юзер - сложная
function check_k(){
	//alert("");
	
	if(xmlHttp){
		//popytka connect
		try{
			
			xmlHttp.open("GET", "js/chk_user.php", true);
			xmlHttp.onreadystatechange=handleCheckUserK;
			xmlHttp.send(null);				
		}
		catch(e){
		//error!
			alert("Невозможно соединиться с сервером!:\n"+e.toString());
		}
	}
}

function retrieve_comments(from,count,mode){
	if(xmlHttp1){
		//popytka connect
		try{
			var url="js/view_comments.php?from="+encodeURIComponent(from)+"&count="+encodeURIComponent(count)+"&mode="+encodeURIComponent(mode);
			xmlHttp1.open("GET", url, true);
			xmlHttp1.onreadystatechange=handleShowComments;
			xmlHttp1.send(null);		
		}
		catch(e){
		//error!
			alert("Невозможно соединиться с сервером!:\n"+e.toString());
		}
	}
}

///изменение состояния запроса http
function handleCheckUser(){
	//когда 4, можно прочесть ответ сервера
	if(xmlHttp.readyState==4){
		if(xmlHttp.status==200){
			try{
				//обработать ответ сервера
				CheckUser();
			}
			catch(e){
				alert("Ошибка чтения ответа: "+e.toString());
			}
		}else{
			alert("Проблемы во время получения данных:\n"+xmlHttp.statusText);
		}
	}	
}

///изменение состояния запроса http
function handleCheckUserK(){
	//когда 4, можно прочесть ответ сервера
	if(xmlHttp.readyState==4){
		if(xmlHttp.status==200){
			try{
				//обработать ответ сервера
				CheckUserK();
			}
			catch(e){
				alert("Ошибка чтения ответа: "+e.toString());
			}
		}else{
			alert("Проблемы во время получения данных:\n"+xmlHttp.statusText);
		}
	}	
}

///изменение состояния запроса http
function handleShowComments(){
	//когда 4, можно прочесть ответ сервера
	if(xmlHttp1.readyState==4){
		if(xmlHttp1.status==200){
			try{
				//обработать ответ сервера
				ShowComments();
			}
			catch(e){
				alert("Ошибка чтения ответа: "+e.toString());
			}
		}else{
			alert("Проблемы во время получения данных:\n"+xmlHttp1.statusText);
		}
	}	
}

///изменение состояния запроса http
function handleSendComment(){
	//когда 4, можно прочесть ответ сервера
	if(xmlHttp1.readyState==4){
		if(xmlHttp1.status==200){
			try{
				//обработать ответ сервера
				//alert('');
				ShowComments();
			}
			catch(e){
				alert("Ошибка чтения ответа: "+e.toString());
			}
		}else{
			alert("Проблемы во время получения данных:\n"+xmlHttp1.statusText);
		}
	}	
}

//обработка ответа по проверке юзера
function CheckUser(){
	//прочитать сообщение от сервера
	response=xmlHttp.responseXML;
	
	xmlRoot=response.documentElement;
	errorl=xmlRoot.getElementsByTagName("errorcode");
	error_code=errorl.item(0).firstChild.data;
	
	
	
	//покажем ответ
	myDiv=document.getElementById("logblock");
	
	if(unescape(error_code)=="0") {
		//myDiv.innerHTML = "Такой юзер есть в БД!";
		//будем разбирать xml-ответ
		namew=xmlRoot.getElementsByTagName("username");
		named=namew.item(0).firstChild.data;	
		myDiv.innerHTML = "";
		var HTML="";
		HTML += "<div class=\"rinfo\"><strong>Добро пожаловать, "+unescape(named)+"!</strong></div>\n";
		HTML +="<ul type=\"circle\" style=\"text-align: left;\">";
		HTML +="<li class=\"rinfo\"><a href=\"loguser.php?action=out\" class=\"small\" onclick=\"\">выйти</a><br>\n";
		HTML +="<li class=\"rinfo\"><a href=\"profile.php?action=edit\" class=\"small\">Ваш профиль</a><br>\n";
		HTML +="</ul>";			
		
		
	}else{
		HTML ="";
		HTML += "<form><strong>Вход для пользователей</strong><br>"+
					 	  "<input type=\"text\" name=\"login\" id=\"login\" size=\"10\" maxlength=\"16\" value=\"логин\" onblur=\"if(this.value=='') this.value='логин';\" onfocus=\"if(this.value=='логин') this.value='';\"><br>"+
						"<input type=\"password\" name=\"pass\" id=\"pass\" size=\"10\" maxlength=\"16\" value=\"******\" onblur=\"if(this.value=='') this.value='******';\" onfocus=\"if(this.value=='******') this.value='';\"><p>"+
						"<input type=\"button\" name=\"doLog\" id=\"doLog\" value=\"Войти\" onclick=\"tryauth(false)\"><br></form>";
		HTML += "<a href=\"profile.php?action=new\" class=\"small\">регистрация нового посетителя</a><p>";
	}
	myDiv.innerHTML=HTML;

}

//обработка ответа по проверке юзера
function CheckUserK(){
	//прочитать сообщение от сервера
	response=xmlHttp.responseXML;
	
	xmlRoot=response.documentElement;
	errorl=xmlRoot.getElementsByTagName("errorcode");
	error_code=errorl.item(0).firstChild.data;
	
	
	
	//покажем ответ
	myDiv=document.getElementById("logblock");
	
	//форма нижняя
	downDiv=document.getElementById("downblock");
	
	if(unescape(error_code)=="0") {
		//myDiv.innerHTML = "Такой юзер есть в БД!";
		//будем разбирать xml-ответ
		namew=xmlRoot.getElementsByTagName("username");
		named=namew.item(0).firstChild.data;	
		myDiv.innerHTML = "";
		downDiv.innerHTML = "";
		
		myDiv.innerHTML += "<div class=\"rinfo\"><strong>Добро пожаловать, "+unescape(named)+"!</strong></div>\n"+
		"<ul type=\"circle\" style=\"text-align: left;\">"+
		"<li class=\"rinfo\"><a href=\"loguser.php?action=out\" class=\"small\" onclick=\"\">выйти</a><br>\n"+
		"<li class=\"rinfo\"><a href=\"profile.php?action=edit\" class=\"small\">Ваш профиль</a><br>\n"+
		"</ul>";			
		
		downDiv.innerHTML += "<div class=\"smaller\"><form name=\"updd\">"+
			"Оцените этот текст:) :<select name=\"mark\" id=\"mark\">"+
			"<option value=\"1\">1 = УГ более, чем полностью!</option>"+
			"<option value=\"2\">2 = УГ!</option>"+
			"<option value=\"3\" SELECTED>3 = Какбэ Символизирует</option>"+
			"<option value=\"4\">4 = Какбэ Доставляет</option>"+
			"<option value=\"5\">5 = Неиллюзорно Доставляет!</option>"+
			"</select><br>"+
			"Ваш комментарий: <em>(обязательно заполните это поле, иначе комментарий не будет отправлен)</em><br>"+
			"<textarea cols=\"70\" rows=\"4\" name=\"comment\" id=\"comment\"></textarea><br>"+
			"<input type=\"button\" name=\"doEdit\" id=\"doEdit\" value=\"Отправить\" onclick=\"if(document.forms.updd.comment.value.length==0){ document.forms.updd.comment.focus(); return false;}else{trysend();} \">"+
			 "</form></div>"+
			"<hr align=\"left\" width=\"50%\">";
		//alert(downDiv.innerHTML);
	}else{
		myDiv.innerHTML ="";
		downDiv.innerHTML = "";
		myDiv.innerHTML += "<form><strong>Вход для пользователей</strong><br>"+
					 	  "<input type=\"text\" name=\"login\" id=\"login\" size=\"10\" maxlength=\"16\" value=\"логин\" onblur=\"if(this.value=='') this.value='логин';\" onfocus=\"if(this.value=='логин') this.value='';\"><br>"+
						"<input type=\"password\" name=\"pass\" id=\"pass\" size=\"10\" maxlength=\"16\" value=\"******\" onblur=\"if(this.value=='') this.value='******';\" onfocus=\"if(this.value=='******') this.value='';\"><p>"+
						"<input type=\"button\" name=\"doLog\" id=\"doLog\" value=\"Войти\" onclick=\"tryauth(true)\"><br></form>";
		myDiv.innerHTML += "<a href=\"profile.php?action=new\" class=\"small\">регистрация нового посетителя</a><p>";
		
		downDiv.innerHTML += "<em>Чтобы оставлять комментарии, необходимо зарегистрироваться на сайте!</em><br><a href=\"profile.php?action=new\">новый пользователь</a><hr align=\"left\" width=\"50%\">";
	}

}

//покажем возвращенные комменты
function ShowComments(){
	//прочитать сообщение от сервера
	response=xmlHttp1.responseXML;
	
	xmlRoot=response.documentElement;

	
	
	//покажем ответ
	cDiv=document.getElementById("commentsthis");
	cDiv.innerHTML ="<em>комментариев пока нет...</em>";
	var html="";
	
	errcode=xmlRoot.getElementsByTagName("errorcode");
	e_code=errcode.item(0).firstChild.data;
	try{
		document.getElementById("doEdit").disabled=false;	
	}catch(e){}
	if(e_code==0){
		//alert('');
		navigArray=xmlRoot.getElementsByTagName("ntxt");
		lnkArray=xmlRoot.getElementsByTagName("lnk");
		html+="<div align=\"center\" class=\"alblinks\">";
		for(var i=0; i<navigArray.length; i++){
			if(navigArray.length<=1) continue;
			if(lnkArray.item(i).firstChild.data=="__"){
				html+=navigArray.item(i).firstChild.data+"\n";
			}else{
				html+="<a href=\"javascript://\" onclick=\"retrieve_comments("+lnkArray.item(i).firstChild.data+");\" >";
				html+=navigArray.item(i).firstChild.data;
				html+="</a> \n";
			}
		}
		html+="</div>";
		
		ctxtArray=xmlRoot.getElementsByTagName("ctxt");
		unameArray=xmlRoot.getElementsByTagName("uname");
		pdateArray=xmlRoot.getElementsByTagName("pdate");
		markArray=xmlRoot.getElementsByTagName("mark");			
	
		for(var i=0; i<ctxtArray.length; i++){
			html+="<div class=\"smaller\">";
			html+="<em>Посетитель: </em>"; 					
			html+="<strong>"+ unameArray.item(i).firstChild.data+ "</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"; 				

			
			html+="<em>Дата: </em>"; 		
			html+="<strong>"+ pdateArray.item(i).firstChild.data+ "</strong><br>\n";
			html+="<em>Оценка: </em>";
			html+="<strong>";
			html+=markArray.item(i).firstChild.data;
			html+="</strong><br>";
			html+="<em>Комментарий: </em><br>\n";
			comm_arr=ctxtArray.item(i).firstChild.data.split("\n");
			html+="<strong>";//
			for(j=0; j<comm_arr.length;j++)
				html+=comm_arr[j]+"<br>";
			html+="</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"; 
			html+="<hr align=\"left\" width=\"50%\">\n";
			html+="</div>\n";
		}
		
		html+="<div align=\"center\" class=\"alblinks\">";
		for(var i=0; i<navigArray.length; i++){
			if(navigArray.length<=1) continue;
			if(lnkArray.item(i).firstChild.data=="__"){
				html+=navigArray.item(i).firstChild.data;
			}else{
				html+="<a href=\"javascript://\" onclick=\"retrieve_comments("+lnkArray.item(i).firstChild.data+");\" >";
				html+=navigArray.item(i).firstChild.data;
				html+="</a> ";
			}
		}
		html+="</div>";
		//alert(html);
		cDiv.innerHTML =html;
	}
}


//вход через авторизационную форму
function tryauth(hazdubl){
	if(xmlHttp){
		//popytka connect
		try{
			username=document.getElementById("login").value;
			password=document.getElementById("pass").value;			
			var params="username="+encodeURIComponent(username)+"&password="+encodeURIComponent(password)+"&ie="+encodeURIComponent(flagie);
								
			xmlHttp.open("POST", "js/chk_user.php", true);
			if(hazdubl)xmlHttp.onreadystatechange=handleCheckUserK;
			else xmlHttp.onreadystatechange=handleCheckUser;
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=windows-1251');			
			xmlHttp.send(params);				
		}
		catch(e){
		//error!
			alert("Невозможно соединиться с сервером!:\n"+e.toString());
		}
	}
}

//отправка коммента
function trysend(){
	try{
		document.getElementById("doEdit").disabled=true;	
	}catch(e){}
	if(xmlHttp1){
		//popytka connect
		try{
			//alert('');
			comment=document.getElementById("comment").value;
			mark=document.getElementById("mark").value;
			
			var params="mark="+encodeURIComponent(mark)+"&comment="+encodeURIComponent(comment);
								
			xmlHttp1.open("POST", "js/add_comment.php", true);
			xmlHttp1.onreadystatechange=handleSendComment;
			xmlHttp1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=windows-1251');			
			xmlHttp1.send(params);	
			
			document.getElementById("comment").value='';
			document.getElementById("mark").value='3';
		}
		catch(e){
		//error!
			alert("Невозможно соединиться с сервером!:\n"+e.toString());
		}
	}
}

