/* ******************************* AJAX **************** */
/* TODO Move it to another place */

/* Create a new XMLHttpRequest object to talk to the Web server */
// XMLRequest variable
var xmlHttp = false;
// Show status ticker?
var container = '';
/* Mappings */
var dataProcessor = '/test2.php'
var dataContainer = '';
var dataReceiver = new Array();
var dataReceiverType = new Array();
var xt=0;

/* Browser independence */
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}

////////////////////////////////////////////////////////////
// Статус
////////////////////////////////////////////////////////////
function status(st)
{
	if(std = document.getElementById("statusdiv"))
	{
		if(st=='show')
		{
			std.style.display = 'block';
		} else
		{
			std.style.display = 'none';
		}
	}
}
////////////////////////////////////////////////////////////
// Установка контейнера
////////////////////////////////////////////////////////////
function setContainer(name) {
	if(dataContainer == '')
	{
		dataContainer = name;
	}
}
////////////////////////////////////////////////////////////
// Установка приемника (receiver) для блока (block)
// block - блок (div) в принимаемых данных
// receiver - блок на текущей странице для приема данных
// type - тип блока приемника w - write, ow - overwrite
////////////////////////////////////////////////////////////
function setMapping(receiver, block, type)
{
	if(!dataReceiver[block] || dataReceiver[block]=='')
	{
		dataReceiver[block] = receiver;
		dataReceiverType[receiver] = type;
	}
}
////////////////////////////////////////////////////////////
// Drop mapping of elements
////////////////////////////////////////////////////////////
function dropMapping(block)
{
	dataReceiver[block] = '';
}
////////////////////////////////////////////////////////////
// Fill block with content
////////////////////////////////////////////////////////////
function receiveBlock(block)
{
	//alert(block+" TO "+dataReceiver[block]);
	if(recv = dataReceiver[block])
	{
		//alert('receive "'+block+'" to "'+recv+'"');
		//alert(document.getElementById(block).innerHTML);
		if(document.getElementById(recv))
		{
			document.getElementById(recv).innerHTML = document.getElementById(block).innerHTML;
		} else
		{
			alert('receiveBlock error : block "'+recv+'" missing');
		}
	}
}
////////////////////////////////////////////////////////////
// Ajax response receiver
////////////////////////////////////////////////////////////
function receiveContent()
{
	if (xmlHttp.readyState == 4) {
		// Get response
		var response = xmlHttp.responseText;
		// Set response container
		response.replace(/\</g,'&lt;').replace(/\>/g,'&gt;');
		//alert("RESP "+response);
		var	z = document.getElementById("cont0");
		if(z)
		{
			z.innerHTML = response;
			//alert("INNER "+z.innerHTML);
			responseDivs = z.getElementsByTagName("div");
			for(var i=0;i<responseDivs.length;i++)
			{
				div = responseDivs[i];
				//alert("DIV "+div.id+" |||||| "+div.innerHTML);
				receiveBlock(div.id);
				dropMapping(div.id);
				responseDivs[i].innerHTML = "";
			}
			status('hide');
		} else
		{
			alert('receiveContent error');
		}
  	}
}
////////////////////////////////////////////////////////////
// Send request
////////////////////////////////////////////////////////////
function getContent(method, _get, _post)
{
	var url = dataProcessor;
	var postData = null;
	if(_get)
	{
		url = dataProcessor + "?" + _get;
	}
	if(method == "POST")
	{
		if(params)
		{
			postData = params;
		}
	}

	// Open a connection to the server
	xmlHttp.open(method, url, true);
	// Setup a function for the server to run when it's done
	xmlHttp.onreadystatechange = receiveContent;
	// Show ticker
	status('show');
	// Send the request
	xmlHttp.send(postData);
}
////////////////////////////////////////////////////////////
// Send request
////////////////////////////////////////////////////////////
function getContentExt(dP, method, _get, _post)
{
	var url = dP;
	var postData = null;
	if(_get)
	{
		url = dP + "?" + _get;
	}
	if(method == "POST")
	{
		if(params)
		{
			postData = params;
		}
	}

	// Open a connection to the server
	xmlHttp.open(method, url, true);
	// Setup a function for the server to run when it's done
	xmlHttp.onreadystatechange = receiveContent;
	// Show ticker
	status('show');
	// Send the request
	xmlHttp.send(postData);
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
function getInput(form_name)
{
	var	frm = document.getElementById(form_name);
	// TODO textareas
	var url = "";
	var delim = "";
	var inps = frm.getElementsByTagName("input");
	for(var i=0;i<inps.length;i++)
	{
		x = inps[i];
		if(x.value !== "")
		{
			switch(x.type)
			{
				case "checkbox":
					if(x.checked)
					{
						url = url + delim + x.name + "=" + escape(x.value);
					}
				break;
				default:
					url = url + delim + x.name + "=" + escape(x.value);
			}
			if(delim == "") delim = "&";
		}
	}
	return url;
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////

function ajaxEnabled()
{
	alert("AJAX enabled =)");
}

function emptyHTML(id)
{
	document.getElementById(id).innerHTML = "";
}

function onDisplay(id)
{
	var el = document.getElementById(id);
	if(el)
	{
		el.style.display='block';
	}
}

function offDisplay(id)
{
	var el = document.getElementById(id);
	if(el)
	{
		el.style.display='none';
	}
}

function switchDisplay(id)
{
	var el = document.getElementById(id);
	if(el)
	{
		if(el.style.display=='none')
		{
			el.style.display='block';
		} else
		{
			el.style.display='none';
		}
	}
}

function copyValue(id, idv, idt)
{
	var el = document.getElementById(id);
	var elv = document.getElementById(idv);
	var elt = document.getElementById(idt);
	if(el && elv && elt)
	{
		elv.value = el.value;
		elt.value = el.options[el.options.selectedIndex].text;
	}
}

function dropValue(idv, idt)
{
	var elv = document.getElementById(idv);
	var elt = document.getElementById(idt);
	if(elv)
	{	elv.value = "";	}
	if(elt)
	{	elt.value = "";	}
}

