//Basic Ajax Routine- Author: Dynamic Drive (http://www.dynamicdrive.com)
//Last updated: Jan 15th, 06'

function myEncodeURI(str) {
	var badChars = Array("&","+","#");
	var goodChars = Array("%26","%2B","%23");

	for(var i=0; i < badChars.length; i++) {
		if (str.length == 1)
			if (str == badChars[i])
				str = goodChars[i];
		else
			str = str.replace(badChars[i],goodChars[i]);
	}

	return(encodeURI(str));
}

function createPOSTstr(frm, strFields) {
	var fieldsArr = strFields.split(",");
	var postStr = '';
	var tempStr = '';

	for(var i=0; i < fieldsArr.length; i++) {
		tempStr = fieldsArr[i] + '=' + myEncodeURI(eval("frm." + fieldsArr[i] + ".value"));
		postStr += (postStr == '') ? tempStr : "&" + tempStr;
	}

	return postStr;
}

function createPOSTstrByValues(strKeys, strValues) {
	var postStr = '';
	var tempStr = '';

	if (strKeys.indexOf(",") > 0) {
		var keysArr = strKeys.split(",");
		var valuesArr = strValues.split(",");

		if (keysArr.length == valuesArr.length) {
			for(var i=0; i < valuesArr.length; i++) {
				tempStr = keysArr[i] + '=' + myEncodeURI(valuesArr[i]);
				postStr += (postStr == '') ? tempStr : "&" + tempStr;
			}
		}
	} else {
		if (strKeys.length > 0)	{
			tempStr = strKeys + '=' + myEncodeURI(strValues);
			postStr += (postStr == '') ? tempStr : "&" + tempStr;
		}
	}

	return postStr;
}

function createAjaxObj(){
var httprequest=false
if (window.XMLHttpRequest){ // if Mozilla, Safari etc
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml')
}
else if (window.ActiveXObject){ // if IE
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
} 
catch (e){
try{
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return httprequest
}

var ajaxpack=new Object()
ajaxpack.basedomain="http://"+window.location.hostname
ajaxpack.ajaxobj=createAjaxObj()
ajaxpack.filetype="txt"
ajaxpack.addrandomnumber=0 //Set to 1 or 0. See documentation.

ajaxpack.getAjaxRequest=function(url, parameters, callbackfunc, filetype){
ajaxpack.ajaxobj=createAjaxObj() //recreate ajax object to defeat cache problem in IE
if (ajaxpack.addrandomnumber==1) //Further defeat caching problem in IE?
var parameters=parameters+"&ajaxcachebust="+new Date().getTime()
if (this.ajaxobj){
this.filetype=filetype
this.ajaxobj.onreadystatechange=callbackfunc
this.ajaxobj.open('GET', url+"?"+parameters, true)
this.ajaxobj.send(null)
}
}

ajaxpack.postAjaxRequest=function(url, parameters, callbackfunc, filetype){
ajaxpack.ajaxobj=createAjaxObj() //recreate ajax object to defeat cache problem in IE
if (this.ajaxobj){
this.filetype=filetype
this.ajaxobj.onreadystatechange = callbackfunc;
this.ajaxobj.open('POST', url, true);
this.ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
this.ajaxobj.setRequestHeader("Content-length", parameters.length);
this.ajaxobj.setRequestHeader("Connection", "close");
this.ajaxobj.send(parameters);
}
}

function parseQuerystring(response) {
		responseData = new Object();
		keypairs = new Object();
		numKP = 1;

		if (response.length < 1) return false;

		while (response.indexOf('&') > -1) {
			keypairs[numKP] = response.substring(0,response.indexOf('&'));
			response = response.substring((response.indexOf('&')) + 1);
			numKP++;
		}

		keypairs[numKP] = response;

		for (i in keypairs) {
			keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
			keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
			while (keyValue.indexOf('+') > -1) {
			  keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
			}
			keyValue = unescape(keyValue);
			responseData[keyName] = keyValue;
		}

		return responseData;
}
