/*
Библиотека функций для сайта joinmuse
Адрес /clientside/ajax.js
Ноябрь 2007 Кича Владимир

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2 функции для общения с сервером. Первая возвращает разделы (контент вставляется в несколько областей 
документа, вторая возвращает отдельные модули (голосование, комменты).
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/

var resolution = '&resolution=' + screen.width + 'x' + screen.height;
function newContent(param) {
	//Если ожидается ответ от прошлого зароса.
	if (typeof(request) == "object") {
		request.abort();
	}
	//Разбираем чпу в url-стринг
	var arrhash = param.split("/");
	var qstring = "section="+arrhash[0];

	if (arrhash[0] == "news" || arrhash[0] == "biography" || arrhash[0] == "press") {
		if (typeof(arrhash[1]) != "undefined") {
			qstring += "&id="+arrhash[1]
		}
		if (typeof(arrhash[2]) != "undefined") {
			qstring += "&page="+arrhash[1]
		}
	}
	else if (arrhash[0] == "discography") {
		if (typeof(arrhash[1]) != "undefined") {
			qstring += "&album="+escape(arrhash[1]);
		}
		if (typeof(arrhash[2]) != "undefined") {
			qstring += "&track="+escape(arrhash[2]);
		}
	}
	else if (arrhash[0] == "gallery" || arrhash[0] == "attach") {
		if (typeof(arrhash[1]) != "undefined") {
			qstring += "&year="+arrhash[1];
		}
		if (typeof(arrhash[2]) != "undefined") {
			qstring += "&gall_id="+arrhash[2];
		}
		if (typeof(arrhash[3]) != "undefined") {
			qstring += "&page_id="+arrhash[3];
		}
	}
	else if (arrhash[0] == "concert") {
		if (typeof(arrhash[1]) != "undefined") {
			qstring += "&year="+arrhash[1];
		}
		if (typeof(arrhash[2]) != "undefined") {
			qstring += "&month="+arrhash[2];
		}
		if (typeof(arrhash[3]) != "undefined") {
			qstring += "&day="+arrhash[3];
		}
	}
	else if (arrhash[0] == "search") {
		if (typeof(arrhash[1]) != "undefined") {
			qstring += "&words="+arrhash[1].replace("&", "");
		}
		if (typeof(arrhash[2]) != "undefined" && typeof(arrhash[3]) != "undefined") {
			qstring += "&"+arrhash[2]+"="+arrhash[3];
		}
		if (typeof(arrhash[4]) != "undefined" && typeof(arrhash[5]) != "undefined") {
			qstring += "&"+arrhash[4]+"="+arrhash[5];
		}
		if (typeof(arrhash[6]) != "undefined" && typeof(arrhash[7]) != "undefined") {
			qstring += "&"+arrhash[6]+"="+arrhash[7];
		}
		if (typeof(arrhash[8]) != "undefined" && typeof(arrhash[9]) != "undefined") {
			qstring += "&"+arrhash[8]+"="+arrhash[9];
		}
		if (typeof(arrhash[10]) != "undefined" && typeof(arrhash[11]) != "undefined") {
			qstring += "&"+arrhash[10]+"="+arrhash[11];
		}
	}
    qstring += resolution;
	qstring = qstring.replace(/backslash%3B/i, "/");
	qstring = qstring.replace(/&quote;/i, '"');
	param = param.replace(/backslash;/i, "/")
	param = param.replace(/&quote;/i, '"');
	location.hash = param;
    if (window.XMLHttpRequest) {
		var request = new XMLHttpRequest();  
		request.onreadystatechange = function () { processRequestChange(request) }; 
	    request.open("POST", "./main.php" , true); 
	    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    request.send(qstring);  

    }
    else if (window.ActiveXObject) {  
		var request = new ActiveXObject("Microsoft.XMLHTTP");  
	        request.onreadystatechange = function () { processRequestChange(request) }; 
	        request.open("POST", "./main.php" , true);
		    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	        request.send(qstring);
    }
}
function processRequestChange(request) {
	var abortRequest = setTimeout( function () { request.abort(); }, 10000);
	if (request.readyState == 4) {
	    clearTimeout(abortRequest);
		if (typeof(request.status) == "undefined" || typeof(request.status) != "number") {
			newContent(param);
			return false;
		}
		if (request.status == 200) {
			otvet = new String(request.responseText);
			request.abort();
			otvetarr = otvet.split('&&&strtitle2=');
			document.title = otvetarr[0];
			document.getElementById('navibar').innerHTML = otvetarr[1];
			document.getElementById('content').innerHTML = otvetarr[2];
			//Опустошаем слой со старыми звездами
			omg = document.getElementById('mainlayer');
			document.body.removeChild(omg);
			//После получения - ставим разрешение
			//Новые звезды
			starlight();
			loadind(false);
			var pageTracker = _gat._getTracker("UA-8366619-1"); 
			pageTracker._trackPageview(); 
		}
		else {
			loadind(true);
		}
	}
	else {
		loadind(true);
	}
}

//Те же функции, но с доп параметрами
function newContent2(param, page, div) {
    param += resolution;
    if (window.XMLHttpRequest) {  
		var request = new XMLHttpRequest();  
        request.onreadystatechange =  function () { processRequestChange2(request, div) }; 
        request.open("POST", "./main.php", true); 		
        request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        request.send(param);  
    }
    else if (window.ActiveXObject) {  
        var request = new ActiveXObject("Microsoft.XMLHTTP");  
        request.onreadystatechange = function () { processRequestChange2(request, div) }; 
        request.open("POST", "./main.php", true);
	    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        request.send(param);
	}
}
function processRequestChange2(request, div) {
	var abortRequest = setTimeout( function () { request.abort(); }, 10000);
	if (request.readyState == 4) {
		clearTimeout(abortRequest);
		if (request.status == 200) {   
			if (div == "rating") {
				document.getElementById(div).innerHTML = request.responseText;
				document.getElementById("votetbl").innerHTML = 'Ваш голос учтен';
			}
			if (div == "newcomment") {
				var text = request.responseText;
				if (text.search('<div style="border: 1px') == 0) {
					//Если пришло сообщение об ошибке
					document.getElementById("error").innerHTML = text;
				}
				else	{
					//Если все ок
					document.getElementById("error").innerHTML = "";
					document.getElementById(div).innerHTML += text;
					//Ставим временную метку
					document.getElementById("lasttime").innerHTML = (Date.parse(new Date()))/1000;
				}
				if (document.cookie.search("SMFCookie451") < 0)
					changeimg();
				
				document.getElementById("textarea").value = "";
			}
			if (div == "calendar") {
				document.getElementById(div).innerHTML = request.responseText;
			}
			request.abort();
			var pageTracker = _gat._getTracker("UA-8366619-1"); 
			pageTracker._trackPageview(); 
		}
	}
}
