var xmlHttp = createXmlHttpRequestObject();
var destination = new Array();
var cache = new Array();
var showError = true;
var ajax_req;
var br_iE;

function createXmlHttpRequestObject()
	{
		var xmlHttp;

		try
		{
			br_iE = 0;
			xmlHttp = new XMLHttpRequest;

		}
		catch(e)
		{
			br_iE = 1;
			var XmlHttpVersion = new Array(
										   "MSXML2.XMLHTTP.6.0",
										   "MSXML2.XMLHTTP.5.0",
										   "MSXML2.XMLHTTP.4.0",
										   "MSXML2.XMLHTTP.3.0",
										   "MSXML2.XMLHTTP",
										   "Microsoft.XMLHTTP"
										   );
			for (var i=0; i<XmlHttpVersion.length && !xmlHttp; i++)
			{
				try
				{
				xmlHttp = new ActiveXObject(XmlHttpVersion[i]);
				}
				catch(e){}
			}
		}

		if(!xmlHttp)
			alert("Ошибка создания объекта XMLHttpRequest.");
		else
			return xmlHttp;
	}

function handleRequestStateChange()
	{
	if (xmlHttp.readyState == 4)
		{
		if(xmlHttp.status == 200)
			{
				try
				{
				readResponse();
				}
				catch(e)
				{
				displayError(e.toString());
				}
			}
		else
			{
			displayError(xmlHttp.statusText);
			}
		}
	}


function fnShowProps(obj, objName){
    var result = "";
    for (var i in obj) // обращение к свойствам объекта по индексу
        result += objName + "." + i + " = " + obj[i] + "";
    alert(result);
}




function readResponse()
	{
	var div_id =  destination.shift();
	if(div_id!='')
		{
		var div = document.getElementById(div_id);

		var response = xmlHttp.responseText;
		switch (div_id)
		{
		case 'order_summ':
			var arrResult = eval(response);
				div.innerHTML = ""+arrResult[0];
				if(parseInt(arrResult[3])==0) document.getElementById("order_us").style.display = "none";
				else document.getElementById("order_us").style.display = "inline";
				if(parseInt(arrResult[6])==0)
					{
					document.getElementById("orderfull").style.display = "none";
					document.getElementById("orderdisc").style.display = "none";
					}
				else
					{
					document.getElementById("orderfull").style.display = "block";
					document.getElementById("orderdisc").style.display = "block";
					}
				document.getElementById("price_summ_"+arrResult[2]).innerHTML = ""+arrResult[1];
				document.getElementById("order_cnt_us").innerHTML = ""+arrResult[3];
				document.getElementById("order_summ_us").innerHTML = ""+arrResult[0];
				document.getElementById("discount_summ").innerHTML = ""+arrResult[4];
				document.getElementById("fullprice").innerHTML = ""+arrResult[5];
		break;
		case 'order_us':
			var arrResult = eval(response);

			document.getElementById("order_cnt_us").innerHTML = ""+arrResult[0];
			document.getElementById("order_summ_us").innerHTML = ""+arrResult[1];
			if(parseInt(arrResult[0])==0) document.getElementById("order_us").style.display = "none";
			else document.getElementById("order_us").style.display = "inline";

		break;
		case 'rate_content':
			var arrResult = eval(response);

			document.getElementById("rate_content").innerHTML = ""+arrResult[0];
			document.getElementById("video_rate").innerHTML = "" +arrResult[1];
			document.getElementById("all_users").innerHTML = "" +arrResult[2];
		break;
		case 'comments_list':
			var arrResult = eval(response);
			if(!arrResult[0]) return 0;
			document.getElementById("cnt_comments").innerHTML =""+arrResult[2];
			document.getElementById("comments_list").innerHTML =""+arrResult[1];
		break;
		case 'gallery_strip':
			var arrResult = eval(response);
			document.getElementById("gallery_strip").innerHTML = ""+arrResult[0];
			document.getElementById("strip_pages").innerHTML =""+arrResult[1];
		break;
		case 'sub_section_id':
			var arrResult = eval(response);
			if(arrResult[0])
				{
				div.innerHTML = arrResult[1];
				document.getElementById("sub_sec_id").disabled = false;
				}
			else document.getElementById("sub_sec_id").disabled = true;
		break;
		case 'div_flashmap':
			eval(response);
		break;
		case 'div_port_category':
			eval(response);
		break;
		case 'for_eval':
			//alert(response);
			eval(response);
		break;
		default:
			//alert(response);
				div.innerHTML = response;
		break;
		}
		}
	execAjax();
	}

function displayError($message)
	{
	if(showError)
		{
		alert("Обнаружена ошибка: \n" + $message);
		}

	}


function  execAjax()
	{
 if(xmlHttp)
	{
		try
		{
			if((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length >0)
			{
			var cacheEntry = cache.shift();

			xmlHttp.open("POST",serverAdress,true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange  = handleRequestStateChange;

			xmlHttp.send(cacheEntry);
			}
		}
		catch (e)
			{
				location.reload();
				/*fnShowProps(location, "location");*/
				/*displayError(e.toString());*/
			}

	}
  }

