var READY_STATE_UNINITIALIZED	= 0;
var READY_STATE_LOADING			= 1;
var READY_STATE_LOADED			= 2;
var READY_STATE_INTERACTIVE		= 3;
var READY_STATE_COMPLETE		= 4;

// Bridge XMLHTTP to XMLHttpRequest in pre-7.0 Internet Explorers (source: wikipedia)
/*
if (typeof XMLHttpRequest == "undefined") {
	XMLHttpRequest = function() {
		try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) {};
		try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) {};
		try { return new ActiveXObject("Msxml2.XMLHTTP"); }     catch(e) {};
		try { return new ActiveXObject("Microsoft.XMLHTTP"); }  catch(e) {};
		return null;
		//throw new Error("This browser does not support XMLHttpRequest or XMLHTTP.");
	}
}
*/

// shared requests
var http	= createXMLHTTPRequest();	// osDate compatibility, i.e. for shoutbox, ...
var http1	= createXMLHTTPRequest();	// PowerDating: cascading country, IM send message
var httpIM	= createXMLHTTPRequest();	// PowerDating: integrated IM refresh

// one-time-only request to avoid caching, needed for picture gallery
var http_fresh = null;

function createXMLHTTPRequest()
{
	var xRequest = null;
	
	if (window.XMLHttpRequest && !(window.ActiveXObject))
	{
		//Mozilla 1.0+, Netscape 8.0+, Firefox 1.0+, Safari 1.2+, IE 7.0+
		xRequest = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		// IE 5.0, 5.5, 6.0
		xRequest = new ActiveXObject('MSXML2.XMLHTTP.6.0');
		if (xRequest == null)
		{
			xRequest = new ActiveXObject('MSXML2.XMLHTTP.5.0');
			if (xRequest == null)
			{
				xRequest = new ActiveXObject('MSXML2.XMLHTTP.4.0');
				if (xRequest == null)
				{
					xRequest = new ActiveXObject('MSXML2.XMLHTTP.3.0');
					if (xRequest == null)
					{
						xRequest = new ActiveXObject('MSXML2.XMLHTTP');
						if (xRequest == null)
						{
							xRequest = new ActiveXObject('Microsoft.XMLHTTP');
						}
					}
				}
			}
		}
	}
	return xRequest;
}

function sendHTTPRequest(url, parameters, method, callback)
{
	if (method == "get")
	{
		url = url + '?' + parameters;
		parameters = null;
	}
	
	// alert(url); //debug

	if (http)
	{
		http.onreadystatechange = callback;
		http.open(method, url, true);	// true = asynchronous
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http.send(parameters);
	}
	else
	{
		alert("The object XMLHttpRequest is not supported by your browser.");
	}
}

function sendHTTPRequest1(url, parameters, method, callback)
{
	if (method == "get")
	{
		url = url + '?' + parameters;
		parameters = null;
	}
	
	// alert(url); //debug

	if (http1)
	{
		http1.onreadystatechange = callback;
		http1.open(method, url, true);	// true = asynchronous
		http1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http1.send(parameters);
	}
	else
	{
		alert("The object XMLHttpRequest is not supported by your browser.");
	}
}

function sendHTTPRequestIM(url, parameters, method, callback)
{
	if (method == "get")
	{
		url = url + '?' + parameters;
		parameters = null;
	}
	
	//alert(url); //debug

	if (httpIM)
	{
		httpIM.onreadystatechange = callback;
		httpIM.open(method, url, true);	// true = asynchronous
		httpIM.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		httpIM.send(parameters);
	}
	else
	{
		alert("The object XMLHttpRequest is not supported by your browser.");
	}
}

function sendHTTPRequest_fresh(url, parameters, method, callback)
{
	http_fresh = createXMLHTTPRequest();
	
	if (method == "get")
	{
		url = url + '?' + parameters;
		parameters = null;
	}

	if (http_fresh)
	{
		http_fresh.onreadystatechange = callback;
		http_fresh.open(method, url, true);	// false = synchronous
		http_fresh.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http_fresh.send(parameters);
	}
	else
	{
		alert("The object XMLHttpRequest is not supported by your browser.");
	}
}

function handleResponse()
{
    if (http.readyState == READY_STATE_COMPLETE)
	{
		var response = http.responseText;
		//alert(response); // debug
        var update = new Array();
		var up2 = new Array();
        
		if (response.indexOf('|||') != -1)
		{
            update = response.split('|||');
			for (var i = 1; i < update.length; i++)
			{
				up2 = update[i].split("|:|");
				// alert(up2[0] + ':' + up2[1]); // debug
            	document.getElementById(up2[0]).innerHTML = up2[1];
			}
        }
    }
}

function handleResponse1()
{
    if (http1.readyState == READY_STATE_COMPLETE)
	{
		var response = http1.responseText;
		// alert(response); // debug
        var update = new Array();
		var up2 = new Array();
		
		var zipsavailable = '';
        
		if (response.indexOf('|||') != -1)
		{
            update = response.split('|||');
			for (var i = 1; i < update.length; i++)
			{
				up2 = update[i].split("|:|");
				if (up2[0] == 'zipsavailable')
				{
					var zipsavailable = up2[1];
				}
				else
				{
					document.getElementById(up2[0]).innerHTML = up2[1];
				}
			}
        }
		try
		{
			display_radiussearch(zipsavailable);
		}
		catch(err)
		{
			// do nothing
		}
    }
}

// old ajax code for cascading location select etc.
/*
var http = createXMLHTTPRequest();

function createRequestObject()
{
	if (window.XMLHttpRequest && !(window.ActiveXObject))
	{
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		try 
		{
			return new ActiveXObject('MSXML2.XMLHTTP');  
		}
		catch (e)
		{
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
	} 
}

function handleResponse()
{
    if (http.readyState == 4)
	{
		var response = http.responseText;
        var update = new Array();
		var up2 = new Array();
        
		if (response.indexOf('|||' != -1))
		{
            update = response.split('|||');
			for (var i = 1; i < update.length; i++)
			{
				up2 = update[i].split("|:|");
            	document.getElementById(up2[0]).innerHTML = up2[1];
			}
        }
    }
}
*/