Form2QueryString = function(pElement)
{
	var bSubmitDisabledElements = false;
	if ( arguments.length > 1 && arguments[1] == true )
	{
		bSubmitDisabledElements = true;
	}
	var sPrefix = '';
	if ( arguments.length > 2 )
	{
		sPrefix = arguments[2];
	}
	if ( 'string' == typeof(pElement) )
	{
		pElement = document.getElementById(pElement);
	}
	var arrReturn = new Array;
	if ( pElement && pElement.tagName && 'FORM' == pElement.tagName.toUpperCase() )
	{
		var arFormElements = pElement.elements;
		for ( var i = 0; i < arFormElements.length; ++i )
		{
			var pChild = arFormElements[i];
			if ( !pChild.name ) continue;
			if ( sPrefix != pChild.name.substring(0, sPrefix.length) ) continue;
			if ( pChild.type && (pChild.type == 'radio' || pChild.type == 'checkbox') && pChild.checked == false ) continue;
			if ( pChild.disabled && true == pChild.disabled && false == bSubmitDisabledElements ) continue;
			var strField = pChild.name;
			if ( strField )
			{
				if ( 1 < arrReturn.length )
				{
					arrReturn.push('&');
				}
				if ( 'select-multiple' == pChild.type )
				{
					if ( strField.substr(strField.length-2, 2) != '[]' )
					{
						strField += '[]';
					}
					for ( var j = 0; j < pChild.options.length; ++j )
					{
						var oOption = pChild.options[j];
						if ( oOption.selected )
						{
							arrReturn.push(strField);
							arrReturn.push('=');
							arrReturn.push(encodeURIComponent(oOption.value));
							arrReturn.push('&');
						}
					}
				}
				else
				{
					arrReturn.push(strField);
					arrReturn.push('=');
					arrReturn.push(encodeURIComponent(pChild.value));
				}
			}
		}
	}
	return arrReturn.join('');
}
function CHttpRequest()
{
	var pSelf        = this;
	pSelf.pDiv       = null;
	pSelf.arHandlers = {};
	pSelf.Setup = function()
	{
		while ( true )
		{
			var sId = 'ID_' + Math.floor(Math.random() * 1000000);
			if ( !pSelf.arHandlers[sId] )
			{
				break;
			}
		}
		return sId;
	},
	pSelf.__Show = function()
	{
		pSelf.__Close();
		oDiv = document.createElement('DIV');
		document.body.appendChild(oDiv);
		pSelf.pDiv = oDiv;
		oDiv.id = 'pageloadbar';
	},
	pSelf.__Close = function()
	{
		if ( pSelf.pDiv )
		{
			try {
				pSelf.pDiv.parentNode.removeChild(pSelf.pDiv);
			} catch ( e ) {}
		}
	}
	pSelf.SetHandler = function(sId, f)
	{
		pSelf.arHandlers[sId] = f;
	}
	pSelf.Close = function(sId, oRequest, bScrollTop)
	{
		pSelf.__Close();
		if ( bScrollTop != false )
		{
			window.scrollTo(0, 0);
		}
		for ( var t in pSelf.arHandlers )
		{
			if ( !(t != sId) )
			{
				pSelf.arHandlers[t] = null;
			}
		}
		oRequest = null;
	}
	pSelf.OnDataReady = function(sId, r)
	{
		if ( pSelf.arHandlers[sId] )
		{
			pSelf.arHandlers[sId](r);
		}
	}
	pSelf.CreateHttpObject = function()
	{
		var oXmlHttpRequest = null;
		if ( window.XMLHttpRequest )
		{
			try {
				oXmlHttpRequest = new XMLHttpRequest();
			} catch ( e ) {}
		}
		else if ( window.ActiveXObject )
		{
			try {
				oXmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
			} catch ( e ) {}
			if ( !oXmlHttpRequest )
			{
				try {
					oXmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');
				} catch ( e ) {}
			}
		}
		return oXmlHttpRequest;
	}
	pSelf.AddHandler = function(sId, oRequest, bScrollTop)
	{
		var pSelf = this;
		function ReadyStateChangehandler()
		{
			if ( !(oRequest.readyState != 4) )
			{
				try {
					var str1 = oRequest.responseText;
					var arScripts = [];
					var q, q1 = 0;
//					while ( (q = str1.indexOf('<script', q1)) != -1 )
//					{
//						var q1 = str1.indexOf('>', q);
//						if ( q1 != -1 )
//						{
//							q1 += 1;
//						}
//						var j = str1.indexOf('</script>', q);
//						if ( j != -1 )
//						{
//							arScripts[arScripts.length] = str1.substr(q1, j - q1);
//							str1 = str1.substr(0, q) + str1.substr(j + 9);
//						}
//					}
					pSelf.OnDataReady(sId, str1);
//					for ( var i in arScripts )
//					{
//						if ( arScripts[i] != '' )
//						{
//							eval(arScripts[i]);
//						}
//					}
				}
				catch ( e )
				{
					var pWindow = window.open('about:blank');
					pWindow.document.write(oRequest.responseText);
				}
				pSelf.Close(sId, oRequest, bScrollTop);
			}
		}
		oRequest.onreadystatechange = ReadyStateChangehandler;
	}
	pSelf.Post = function(sId, sUrl, strVars, bScrollTop)
	{
		pSelf.__Show();
		var oRequest = pSelf.CreateHttpObject();
		if ( oRequest )
		{
			pSelf.AddHandler(sId, oRequest, bScrollTop);
			oRequest.open('POST', sUrl, true);
			oRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			return oRequest.send(strVars);
		}
	}
}
oHttpRequest = new CHttpRequest();