//http://www.captain.at/howto-ajax-form-post-request.php <- Modified
//11/30/2007 Added http_request as an array
//12/18/2007 Created AJAX queue
//06/01/2008 Added result function
var http_request = new Object();
//var http_request = new Array();
var request_count=0;
function makePOSTRequest(url, parameters, theItem, theFunctions,returnFormat){
	this_count=request_count;
	request_count++;
	//document.getElementById(theItem).innerHTML='checking';
	ident = this_count;
	http_request[ident]= new Object;
	http_request[ident]['request'] = false;
	http_request[ident]['the_item']=theItem;
	http_request[ident]['params']=parameters;
	http_request[ident]['url']=url;
	http_request[ident]['is_handled']=false;
	http_request[ident]['status']='queued';
	if(theFunctions){
		if(theFunctions['complete']){http_request[ident]['on_complete']=function(){theFunctions['complete']()};}
		if(theFunctions['result']){http_request[ident]['on_result']=function(varIn){theFunctions['result'](varIn)};}
	}
	if(returnFormat){
		if(returnFormat.toLowerCase()=="xml"){
			http_request[ident]['return_as']='xml';
		}else{
			http_request[ident]['return_as']='text';}
	}else{
		http_request[ident]['return_as']='text';
	}
	if(!ajax_is_busy()){
		ajax_create(ident);
	}
}
function ajax_create(ident){
	http_request[ident]['status']='processing';
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request[ident]['request'] = new XMLHttpRequest();
		if (http_request[ident]['request'].overrideMimeType) {// set type accordingly to anticipated content type
			if(http_request[ident]['return_as']=='xml'){
				http_request[ident]['request'].overrideMimeType('text/xml');}
			else{
				http_request[ident]['request'].overrideMimeType('text/html');}
		}
	}else if(window.ActiveXObject) { // IE
		try {
			http_request[ident]['request'] = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
			try {
				http_request[ident]['request'] = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				http_request[ident]['is_handled']=true;
				http_request[ident]['status']='failed';
				ajax_next_request();
			}
		}
	}
	if(!http_request[ident]['request']){
		alert('Cannot create XMLHTTP instance');
		http_request[ident]['is_handled']=true;
		http_request[ident]['status']='failed';
		ajax_next_request();
		return false;
	}
	url=http_request[ident]['url'];
	parameters=http_request[ident]['params'];
	http_request[ident]['request'].onreadystatechange = function(){ajax_contents(ident);};
	http_request[ident]['request'].open('POST', url, true);
	http_request[ident]['request'].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request[ident]['request'].setRequestHeader("Content-length", parameters.length);
	http_request[ident]['request'].setRequestHeader("Connection", "close");
	http_request[ident]['request'].send(parameters);
}
function ajax_contents(whichRequest){
	if(http_request[whichRequest]['request'].readyState == 4){
		if(http_request[whichRequest]['request'].status == 200){
			if(http_request[ident]['return_as']=='xml'){
				result = http_request[whichRequest]['request'].responseXML;}
			else{
				result = http_request[whichRequest]['request'].responseText;}
			/*
			export_text=result;
			export_text=export_text.replace(/</gi, "&lt;");
			export_text=export_text.replace(/>/gi, "&gt;");*/
			if(http_request[whichRequest]['on_complete']){
				http_request[whichRequest]['on_complete']();
			}
			if(http_request[whichRequest]['on_result']){
				http_request[whichRequest]['on_result'](result);
			}else{
				if(http_request[whichRequest]['the_item']){
					if(basic_check(http_request[whichRequest]['the_item'].tagName) && typeof(http_request[whichRequest]['the_item'])=='object'){
						http_request[whichRequest]['the_item'].innerHTML = result;}
					else if(document.getElementById(http_request[whichRequest]['the_item'])){
						document.getElementById(http_request[whichRequest]['the_item']).innerHTML = result;}
				}
			}
			http_request[whichRequest]['is_handled']=true;
			http_request[whichRequest]['status']='complete';
			ajax_next_request();
		}else{
			alert('There was a problem with the request.');
			http_request[whichRequest]['is_handled']=true;
			http_request[whichRequest]['status']='failed';
			ajax_next_request();
		}
	}
}
function ajax_next_request(){
	for(var http_key in http_request){
		if(http_request[http_key]['is_handled']==false && http_request[http_key]['status']=='queued'){
			ajax_create(http_key);
			break;
		}
	}
}
function ajax_is_busy(){
	for(var busy_key in http_request){
		if(http_request[busy_key]['is_handled']==false && http_request[busy_key]['status']=='processing'){
			return true;
			break;
		}
	}
	return false;
}
function add_to_querystring(urlIn,newString){
	var url_find;
	var query_find;
	//urlIn=urlIn.trim();
	//newString=newString.trim();
	url_find=urlIn;
	query_find="";
	if(!(urlIn.indexOf("?")==-1)){//found
		startPoint=urlIn.indexOf("?")+1;
		url_find=urlIn.substr(0,(startPoint-1));
		query_find=urlIn.substr(startPoint,urlIn.length);
	}
//alert("url_find: " + url_find + " ||| query_find: " + query_find);
	newString=check_strip_last(newString,"&");
	newString=check_strip_first(newString,"&");
	newString=check_strip_first(newString,"?");

	query_find=check_strip_last(query_find,"&");
	query_find=check_strip_first(query_find,"&");
	query_find=check_strip_first(query_find,"?");

	output=url_find;
	appended=false;
	if(basic_check(query_find)){
		output=output+"?"+query_find;
		appended=true;}
	if(basic_check(newString)){
		output=output+(appended==false?"?":"&")+newString;
		appended=true;}
	return output;
}
function split_querystring(urlIn){
	if(!(urlIn.indexOf("?")==-1)){//found
		tmp=urlIn.substr(urlIn.indexOf("?")+1,urlIn.length);
		return tmp;
	}else{
		return urlIn;}
}
function split_url(urlIn){
	if(!(urlIn.indexOf("?")==-1)){//found
		tmp=urlIn.substr(0,urlIn.indexOf("?"));
		return tmp;
	}else{
		return urlIn;}
}
function add_to_cart(whichItem, incExtra){
	if(!(incExtra)){incExtra="";}
	var href='';
	if(whichItem.tagName=='form'){href=whichItem.action;}
	else if(whichItem.tagName=='a'){href=whichItem.href;}
	else{return false;}
	
	var poststr = add_to_querystring(href,"ajax_mode=1");
	resultFunction = new Object();
	//resultFunction['result']=function (varIn){apply_cart_result(varIn,whichItem);};
	resultFunction['result']=function (varIn){return false;};
	makePOSTRequest(split_url(poststr)+"?ajax_mode=1", split_querystring(poststr), whichItem, resultFunction,'xml');
	return false;
}
function printList(){
	var timestamp = Number(new Date());
	makePOSTRequest("print_track.php?ajax_mode=1&stamp="+(timestamp), "ajax_mode=1&stamp="+(timestamp), null);
	window.print();
}
