// ----------------------------------------
// ConneXor
// ----------------------------------------
//
// Connection manager for dynamic data.
// Connects Sheezy to the database
//        using XMLHTTP or iFrames.
//
// ----------------------------------------
// Copyright © Michael Hill 2005
// ----------------------------------------

var connectMethod;
var connectFrame;
var connectXML;
var connectDiv;
var connectFunction;
function findConnectionMethod(){
	try {
		connectXML = new ActiveXObject("Msxml2.XMLHTTP");
		connectMethod='xml';
	}
	catch(e){
		try {
			connectXML = new ActiveXObject("Microsoft.XMLHTTP");
			connectMethod='xml';
		}
		catch(e){
			try{
				connectXML = new XMLHttpRequest();
				connectMethod = 'xml';
			}
			catch(e){
				try{
					connectFrame = document.getElementById('connectFrame');
					connectDiv = document.getElementById('connectDiv');
					connectMethod='frame';
				}
				catch(e){
					connectMethod=false;
				}
			}
		}
	}
}
function sendRequest(requestURL, returnFunction, sendVariables, debug){
	connectFunction = returnFunction;
	if(typeof sendVariables=="undefined"){
		sendVariables={};
		var method='GET';
	} else {
		var method='POST';
	}
	if(typeof sendVariables!="undefined"){
		sendVariables['conneXor']=connectMethod;
		if(connectMethod == 'frame'){
			var output = '<form name="connectForm" target="connectFrame" method="post" action="'+requestURL+'?frame">';
			for(n in sendVariables){
				output += '<input type="hidden" name="'+n+'" value="'+htmlspecialchars(sendVariables[n])+'">';
			}
			output += '</form>';
			connectDiv.innerHTML = output;
			document.connectForm.submit();
		}
		else if(connectMethod=='xml'){
			var input = '';
			for(n in sendVariables){
				if(input!='')input += '&';
				input += n+'='+encodeURIComponent(sendVariables[n]);
			}
			
			connectXML.open(method,requestURL+'?http',true);
			if(debug!=undefined){
				alert('Querying '+requestURL);
				connectXML.onreadystatechange=function() {
					alert('Response: '+connectXML.responseText);
				}
			}
			else{
				connectXML.onreadystatechange=function() {
					if (connectXML.readyState==4) {
						if(connectXML.status == 200){
							eval(connectXML.responseText);
							//try{eval(connectXML.responseText);}
							//catch(e){alert('Invalid server response :-(');}
						}
						else{
							//alert('Error!  Connection returned status '+connectXML.status+'.');
						}
					}
				}
			}
			connectXML.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
			connectXML.setRequestHeader("X-Requested-With", "XMLHttpRequest");
			if ( method=='POST' ) {
				connectXML.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				connectXML.setRequestHeader("Content-Length", input.length);
				connectXML.send(input);
			} else {
				connectXML.send();
			}
		}
	}
	else{
		if(connectMethod == 'frame'){
			connectFrame.src = requestURL+'?frame';
		}
		else if(connectMethod=='xml'){
			connectXML.open("GET",requestURL+'?http',true);
			connectXML.onreadystatechange=function() {
				if (connectXML.readyState==4) {
					eval(connectXML.responseText);
				}
			}
			connectXML.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
			connectXML.setRequestHeader("X-Requested-With", "XMLHttpRequest");
			connectXML.send(null);
		}
	}
	refreshAds();
}
function connectionResponse(statusValue, returnValue){
	eval(connectFunction+'(statusValue, returnValue);');
}