var xmlReqS=false;

function getRandomNumber () {
  return Math.floor(Math.random()*99999999999);
}

function xmlRequestS () {
	try {
		xmlReqS = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
		try {
			xmlReqS = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (E) {
			xmlReqS = false;
		}
	}
	if (!xmlReqS && 'undefined' != typeof(XMLHttpRequest)) {
		try {
			xmlReqS = new XMLHttpRequest();
		}
		catch (e) {
			xmlReqS=false;
		}
	}
	if (!xmlReqS && window.createRequest) {
		try {
			xmlReqS = window.createRequest();
		} catch (e) {
			xmlReqS=false;
		}
	}
}

function xmlRequestImproved () {
	var xmlReqS = '';
	try {
		xmlReqS = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
		try {
			xmlReqS = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (E) {
			xmlReqS = false;
		}
	}
	if (!xmlReqS && 'undefined' != typeof(XMLHttpRequest)) {
		try {
			xmlReqS = new XMLHttpRequest();
		}
		catch (e) {
			xmlReqS=false;
		}
	}
	if (!xmlReqS && window.createRequest) {
		try {
			xmlReqS = window.createRequest();
		} catch (e) {
			xmlReqS=false;
		}
	}
	
	return xmlReqS;
}

function xmlSyncRequestReturnText (file, params, id, callBackFunc) {
	if (file) {
		if ( file.indexOf("?") >= 0 ){
			var url = file +'&'+ params;
		}
		else {
			var url = file +'?'+ params;
		}
		var xmlReqSS = xmlRequestImproved();
		xmlReqSS.open("GET", url, false);
		xmlReqSS.send(null);
		if (typeof(callBackFunc) == 'function') 
		{
				callBackFunc(xmlReqSS.responseText);
		}
		return xmlReqSS.responseText;

	}
	else {
		return false;
	}
}

function xmlSyncRequestText (file, params, id,callBackFunc) {
//alert(file +', '+ params +', '+ id);
	if (file) {
		if ( file.indexOf("?") >= 0 ){
			var url = file +'&'+ params;
		}
		else {
			var url = file +'?'+ params;
		}
		xmlRequestS ();
		xmlReqS.open("GET", url, false);
		xmlReqS.send(null);

		document.getElementById(id).innerHTML = xmlReqS.responseText;
		if (typeof(callBackFunc) == 'function') 
		{
				callBackFunc(xmlReqS.responseText);
		}
		
		return true

	}
	else {
		alert(
			'Source: ajax.js: \n\n' + 
			'File: '+ file +' not found!'
		);
	}
}

function xmlSyncRequestTextPost (file, params, id) {
//prompt("alert",file +', '+ params +'');
	if (file) {
		xmlRequestS ();
		xmlReqS.open("POST", file, false);
		xmlReqS.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlReqS.setRequestHeader("Content-length", params.length);
		xmlReqS.setRequestHeader("Connection", "close");
		xmlReqS.send(params);
		document.getElementById(id).innerHTML = xmlReqS.responseText;

	}
	else {
		alert(
			'Source: ajax.js: \n\n' + 
			'File: '+ file +' not found!'
		);
	}
}

function xmlSyncRequestXml (file, params, callBackFunc) {
//alert(file +', '+ params +', '+ callBackFunc);
	if (file) {
		if ( file.indexOf("?") >= 0 ){
			var url = file +'&'+ params;
		}
		else {
			var url = file +'?'+ params;
		}
		xmlRequestS ();
		xmlReqS.open("GET", url, false);
		xmlReqS.send(null);
		if (typeof(callBackFunc) == 'function') {
				callBackFunc(xmlReqS.responseXML);
		}
		else {
			alert(
				'Source: ajax.js: \n\n' + 
				'Undefined callback function: '+ callBackFunc
			);
		}
	}
	else {
		alert(
			'Source: ajax.js: \n\n' + 
			'File: '+ file +' not found!'
		);
	}
}

function xmlSyncRequestXmlPost (file, params, callBackFunc) {
	if (file) {
		if ( file.indexOf("?") >= 0 ){
			var url = file +'&'+ params;
		}
		else {
			var url = file +'?'+ params;
		}
		xmlRequestS ();
		xmlReqS.open("POST", url, false);
		xmlReqS.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlReqS.setRequestHeader("Content-length", params.length);
		xmlReqS.setRequestHeader("Connection", "close");
		xmlReqS.send(params);
		if (typeof(callBackFunc) == 'function') {
				callBackFunc(xmlReqS.responseXML);
		}
		else {
			alert(
				'Source: ajax.js: \n\n' + 
				'Undefined callback function: '+ callBackFunc
			);
		}
	}
	else {
		alert(
			'Source: ajax.js: \n\n' + 
			'File: '+ file +' not found!'
		);
	}
}

function xmlAsyncRequestText (file, params, id, callback) {
//prompt('Ajax request:', file +', '+ params +', '+ id)
	if (file) {
		if ( file.indexOf("?") >= 0 ){
			var url = file +'&'+ params;
		}
		else {
			var url = file +'?'+ params;
		}
		xmlRequestS ();
		xmlReqS.open("GET", url, true);
		xmlReqS.send(null);
		xmlReqS.onreadystatechange = function() {
			if (4 == xmlReqS.readyState) {
				if (404 != xmlReqS.status) {
					document.getElementById(id).innerHTML = xmlReqS.responseText;
					if (typeof callback == 'function')
					{
						callback(xmlReqS.responseText);
					}
				}
				else {
					alert(
						'Source: ajax.js: \n\n' + 
						'File: '+ file +' not found!'
					);
				}
			}
		}
	}
	else {
		alert(
			'Source: ajax.js: \n\n' + 
			'Malformed request: no URL!'
		);
	}
}

function xmlAsyncRequestXml (file, params, callBackFunc) {
	if (file) {
		if ( file.indexOf("?") >= 0 ){
			var url = file +'&'+ params;
		}
		else {
			var url = file +'?'+ params;
		}
		xmlRequestS ();
		xmlReqS.open("GET", url, true);
		xmlReqS.send(null);
		xmlReqS.onreadystatechange = function() {
			if (4 == xmlReqS.readyState) {
				if (404 != xmlReqS.status) {
					if (typeof(callBackFunc) == 'function') {
							callBackFunc(xmlReqS.responseXML);
					}
					else {
						alert(
							'Source: ajax.js: \n\n' + 
							'Undefined callback function: '+ callBackFunc
						);
					}
				}
				else {
					alert(
						'Source: ajax.js: \n\n' + 
						'File: '+ file +' not found!'
					);
				}
			}
		}
	}
	else {
		alert(
			'Source: ajax.js: \n\n' + 
			'Malformed request: no URL!'
		);
	}
}

/* Cookies */
function getCookie(sName)	{
	var i, v = document.cookie.split(';'), vT;
	for (i = 0; i < v.length; i++) {
		vT = v[i].split(sName + '=');	if (vT.length > 1) return vT[1];
	}

	return null;
}

function setCookie(sName, sValue, iSeconds) {
	var sE = "";
	if (iSeconds) {
		var d = new Date();
		d.setTime(d.getTime() + iSeconds * 1000);
		sE = '; expires=' + d.toGMTString();
	} 
	document.cookie = sName + '=' + sValue + sE + '; path=/';
}

function Cookie_Delete(sName) {
	setCookie(sName, '', -1);
}

function Form_MakeQueryString( form_name )
{
	var d=document, f, qry="", sep="";

	if( d && (f=d.forms[form_name]) )
	{
		for(var i=0;i<f.length;i++)
		{
			if( f[i].name!="" && f[i].name!="__VIEWSTATE" )
			{
				if( f[i].type=="hidden" || f[i].type=="text" || f[i].type=="textarea" )
				{
					qry += sep + escape(f[i].name) +"="+ escape(f[i].value);	sep = "&";
				}

				if( f[i].type=="select" || f[i].type=="select-one" )
				{
					if( f[i].selectedIndex >=0 && f[i].selectedIndex < f[i].options.length )
					{
						qry += sep + escape(f[i].name) +"="+ escape(f[i].options[f[i].selectedIndex].value);		sep = "&";
					}
				}

				if( f[i].type=="checkbox" && f[i].checked )
				{
					qry += sep + escape(f[i].name) +"="+ escape(f[i].value);	sep = "&";
				}

				if( f[i].type=="radio" && f[i].checked )
				{
					qry += sep + escape(f[i].name) +"="+ escape(f[i].value);	sep = "&";
				}
			}
		}
	}
	return qry;
}

