

var gaPositions= new Array;

function formToQueryString(xId){
	if ((typeof(xId) != 'object'))
		xId=document.getElementById(xId);
	if (xId && ('elements' in xId)){
		var sCGI='parsedByFTQS=1';
		for (i=0;i<xId.elements.length;i++){
			var oElement=xId.elements[i];
			if (oElement.type=="text")
				sCGI+='&'+encodeURIComponent(oElement.name)+'='+encodeURIComponent(oElement.value);
			if ((oElement.type=="checkbox")&&(oElement.checked))
				sCGI+='&'+encodeURIComponent(oElement.name)+'='+encodeURIComponent(oElement.value);
			if (oElement.type=="password")
				sCGI+='&'+encodeURIComponent(oElement.name)+'='+encodeURIComponent(oElement.value);
			if (oElement.type=="hidden")
				sCGI+='&'+encodeURIComponent(oElement.name)+'='+encodeURIComponent(oElement.value);
			if (oElement.type=="textarea")
				sCGI+='&'+encodeURIComponent(oElement.name)+'='+encodeURIComponent(oElement.value);
			if (oElement.options){
				if (oElement.selectedIndex >-1){
					sCGI+='&'+encodeURIComponent(oElement.name)+'='+encodeURIComponent(oElement.options[oElement.selectedIndex].value);
				}
			}
		}
		return sCGI;
	}
	return '';
}

function ajaxSendOnly(sUrl,sCGI){
		
	var oHttpRequest = null;
	
	if (window.XMLHttpRequest){
		// W3C
		oHttpRequest = new XMLHttpRequest();
		if (oHttpRequest.overrideMimeType)
			oHttpRequest.overrideMimeType('text/xml');
	}else if (window.ActiveXObject){
		// IE
		try{
			oHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
			try{
				oHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e){
			}
		}
	}
	
	if (!oHttpRequest)
		return false;
		
	oHttpRequest.open('POST', sUrl, true);
	oHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

	//sCookie=getCookie('BSXFrameWorkRnd');
	//if (null!=sCookie)
	//	sCGI+='&'+'BSXFrameWorkRnd'+'='+sCookie;

	oHttpRequest.send(sCGI);
	
}

// accepted modes: 1: fade out 2: fade in 4: show status 8: clear out 32: show small status
function ajaxRequest(sUrl,sCGI,oCallBack,sRequestID,iMode){
	
	if (!iMode)iMode=4;
	
	if (typeof(sRequestID)!='string')
		sRequestID='';
	
	var oHttpRequest = null;
	var i=1;
	while ((i in gaPositions) && (false!=gaPositions[i]))
		i++;
	
	
	if (window.XMLHttpRequest){
		// W3C
		oHttpRequest = new XMLHttpRequest();
		if (oHttpRequest.overrideMimeType)
			oHttpRequest.overrideMimeType('text/xml');
	}else if (window.ActiveXObject){
		// IE
		try{
			oHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
			try{
				oHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e){
			}
		}
	}
	
	if (!oHttpRequest)
		return false;
		
	gaPositions[i]={oCallBackFunc:oCallBack,oRequest:oHttpRequest,sID:sRequestID,iMode:iMode};
		
	oHttpRequest.onreadystatechange = new Function ("return ajaxResponse("+String(i)+",false)");
	oHttpRequest.open('POST', sUrl, true);
	oHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

	//sCookie=getCookie('BSXFrameWorkRnd');
	//if (null!=sCookie)
	//	sCGI+='&'+'BSXFrameWorkRnd'+'='+sCookie;

	oHttpRequest.send(sCGI);
	
}

// accepted modes: 1: fade out 2: fade in 4: show status 8: clear out 32: show small status
function ajaxResponse(i,bLastStep) {
	
	if ((gaPositions[i].iMode&4)==4)bNormalStatus=true;else bNormalStatus=false;
	if ((gaPositions[i].iMode&32)==32)bSmallStatus=true;else bSmallStatus=false;

	if (!(i in gaPositions) || (false==gaPositions[i]))
		return false;

	var oHttpRequest=gaPositions[i].oRequest;

	if (bNormalStatus&&!document.getElementById('ajaxStatus'+String(i))){
		oAjaxStatus=document.createElement('div');
		oAjaxStatus.setAttribute('id','ajaxStatus'+String(i));
		oAjaxStatus.style.height='14px';
		oAjaxStatus.style.width='260px';
		oAjaxStatus.style.padding='1px';
		oAjaxStatus.style.background='transparent';
		oAjaxStatus.style.fontFamily='"Lucida Sans", "Bitstream Vera Sans", "Trebuchet MS", Verdana, Arial, Helvetica';
		oAjaxStatus.style.fontSize='10px';
		oAjaxStatus.style.position='absolute';
		oAjaxStatus.style.border='1px solid black';
		oAjaxStatus.style.color='black';
		oAjaxStatus.style.filter="alpha(opacity=60)";
		oAjaxStatus.style.opacity=0.6;
		oAjaxStatus.style.MozOpacity=0.6;
		oAjaxStatus.style.KHTMLOpacity=0.6;
		var oOff=getPageOffset();
		oAjaxStatus.style.left=(20+oOff.x)+'px';
		oAjaxStatus.style.top=(15*i+oOff.y)+'px';
		oAjaxStatus.style.zIndex='100';
		window.document.body.appendChild(oAjaxStatus);
	}
	if (bSmallStatus&&!document.getElementById('ajaxSmallStatus'+String(i))){
		oAjaxStatus=document.createElement('div');
		oAjaxStatus.setAttribute('id','ajaxSmallStatus'+String(i));
		oAjaxStatus.style.height='16px';
		oAjaxStatus.style.width='16px';
		oAjaxStatus.style.background='transparent';
		oAjaxStatus.style.position='absolute';
		oAjaxStatus.style.filter="alpha(opacity=60)";
		oAjaxStatus.style.opacity=0.6;
		oAjaxStatus.style.MozOpacity=0.6;
		oAjaxStatus.style.KHTMLOpacity=0.6;
		var oOff=getPageOffset();
		oAjaxStatus.style.left=(10+oOff.x)+'px';
		oAjaxStatus.style.top=(10+oOff.y)+'px';
		oAjaxStatus.style.zIndex='100';
		window.document.body.appendChild(oAjaxStatus);
	}
	sDivString=Number(oHttpRequest.readyState);

	if (bNormalStatus){
		switch (sDivString){
			case 0: sDivString='preparing'; break;
			case 1: sDivString='loading'; break;
			case 2: sDivString='loaded'; break;
			case 3: sDivString='interactive'; break;
			case 4: sDivString='completed'; break;
			default: sDivString='state '.oHttpRequest.readyState; break;
		}
	
		oAjaxStatus=document.getElementById('ajaxStatus'+String(i));
		oAjaxStatus.style.background='#ffffff';
		oAjaxStatus.style.backgroundImage='url("/scripts.system/../images.system/processing.gif")';
		oAjaxStatus.innerHTML=sDivString;
		
	}

	if (bSmallStatus){
		oAjaxStatus=document.getElementById('ajaxSmallStatus'+String(i));
		oAjaxStatus.style.backgroundImage='url("/scripts.system/../images.system/indicator.gif")';
	}

	if (bLastStep){
		if (bNormalStatus){
			window.document.body.removeChild(document.getElementById("ajaxStatus"+String(i)));
		}
		if (bSmallStatus){
			window.document.body.removeChild(document.getElementById("ajaxSmallStatus"+String(i)));
		}
		gaPositions[i]=false;
		
	}else if ((oHttpRequest.readyState == 4) && (oHttpRequest.status == 200)){
	
		try{
			var oXMLDoc=null;
			if (!((sEngine=='SM')||(sEngine=='KHTML'))){
			
				var oXMLDoc = new ActiveXObject("Msxml2.DOMDocument");
				oXMLDoc.resolveExternals=false;
				oXMLDoc.validateOnParse=false;
				oXMLDoc.async=false;
				if (oXMLDoc.loadXML(oHttpRequest.responseText)){
					sDivString=oXMLDoc.selectSingleNode('response/status').firstChild.nodeValue;
					//sCookieString=oXMLDoc.selectSingleNode('response/bsxsessionid').firstChild.nodeValue;
					//iCookieLifetime=intval(oXMLDoc.selectSingleNode('response/bsxsessionlifetime').firstChild.nodeValue);
				}
			}else{
					
				sDivString=oHttpRequest.responseXML.getElementsByTagName('status')[0].firstChild.nodeValue;
				//sCookieString=oHttpRequest.responseXML.getElementsByTagName('bsxsessionid')[0].firstChild.nodeValue;
				//iCookieLifetime=intval(oHttpRequest.responseXML.getElementsByTagName('bsxsessionlifetime')[0].firstChild.nodeValue);

				oXMLDoc=oHttpRequest.responseXML;
			}

			//oExpireDate=new Date();
			//oExpireDate = new Date(oExpireDate.getTime() +1000*iCookieLifetime);
			//var sCookie='BSXFrameWorkRnd='+sCookieString+'; expires='+oExpireDate.toGMTString()+';';
			//document.cookie=sCookie;
			
			if (bNormalStatus){
				oAjaxStatus.innerHTML=sDivString.substring(0,40);
				oAjaxStatus.style.backgroundImage='';
				oAjaxStatus.style.background='#aac2da';
				oAjaxStatus.style.border='1px solid #453545';
			}
		
			if ((typeof gaPositions[i].oCallBackFunc) == 'function')
				gaPositions[i].oCallBackFunc(oXMLDoc,gaPositions[i].iMode);

			if (bSmallStatus)
				window.setTimeout('ajaxResponse('+String(i)+',true,'+String(gaPositions[i].iMode)+');',100);
			else
				window.setTimeout('ajaxResponse('+String(i)+',true,'+String(gaPositions[i].iMode)+');',4000);

		}catch(e){
			oXMLDoc=null;
			if ((typeof gaPositions[i].oCallBackFunc) == 'function')
				gaPositions[i].oCallBackFunc(gaPositions[i].sID,gaPositions[i].iMode);

			if (bNormalStatus){
				oAjaxStatus.innerHTML='error parsing response';
				oAjaxStatus.style.backgroundImage='';
				oAjaxStatus.style.background='#ffc2da';
				oAjaxStatus.style.border='1px solid #453545';
			}
			
			window.setTimeout('ajaxResponse('+String(i)+',true,'+String(gaPositions[i].iMode)+');',4000);
		}
			

	}else if (oHttpRequest.readyState==4){
		// function call without response but with old id

		if (bNormalStatus){
			oAjaxStatus.innerHTML='error interacting with server';
			oAjaxStatus.style.backgroundImage='';
			oAjaxStatus.style.background='#ffc2da';
			oAjaxStatus.style.border='1px solid #453545';
		}

		if ((typeof gaPositions[i].oCallBackFunc) == 'function')
			gaPositions[i].oCallBackFunc(gaPositions[i].sID);

		window.setTimeout('ajaxResponse('+String(i)+',true,'+String(gaPositions[i].iMode)+');',4000);
	}
}
