//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(basic_check(http_request[whichRequest]['the_item'].tagName) && typeof(http_request[whichRequest]['the_item'])=='object'){
					http_request[whichRequest]['the_item'].innerHTML = result;}
				else{
					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){
	//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);
		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,"?");
	return url_find+"?"+newString+"&";
}
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="";}
	//select_item=document.forms['theform'].elements['manufacturer'];
	//var poststr = "manufacturer_id=" + encodeURI(select_item.options[select_item.selectedIndex].value) + "&";
	whichItem.innerHTML='Adding..';
	var poststr = add_to_querystring(whichItem.href,"ajax_mode=1");
	resultFunction = new Object();
	resultFunction['result']=function (varIn){apply_cart_result(varIn,whichItem);};
	makePOSTRequest(split_url(poststr)+"?ajax_mode=1", split_querystring(poststr), whichItem, resultFunction,'xml');
	return false;
}
function apply_cart_result(resultIn,itemOBJ){
	//obj_parent=get_parent(itemOBJ,'li');
	//if(obj_parent){
	if(resultIn.getElementsByTagName('xml_return').item(0).hasChildNodes() && basic_check(itemOBJ.tagName) && typeof(itemOBJ)=='object'){
		var result=resultIn.getElementsByTagName('xml_return').item(0);//childNodes.item(0)
		var result=resultIn.getElementsByTagName('xml_return').item(0).childNodes.item(0).childNodes.item(0).data;//childNodes.item(0)
		if(result.toLowerCase()=='true' || result.toLowerCase()=='present'){
			obj_parent=get_parent(itemOBJ,'li');
			if(obj_parent){
				obj_parent.innerHTML='<a href="quote/">View Quote Request</a>';
			}else{
				itemOBJ.innerHTML='<a href="quote/">View Quote Request</a>';}
		}else{
			itemOBJ.innerHTML="Add this item to quote";
		}
		/*for(i=0;i<node.childNodes.length; i++){
			var sibl = node.childNodes.item(i);
			if(sibl.hasChildNodes()){
				var opt = document.createElement("option");
				modelObj.options.add(opt);
				opt.text = sibl.childNodes[1].childNodes.item(0).data;
				opt.value = sibl.childNodes[0].childNodes.item(0).data;
			}
		}*/
	}
}
function remove_from_cart(whichItem, incExtra){
	if(!(incExtra)){incExtra="";}
	//select_item=document.forms['theform'].elements['manufacturer'];
	//var poststr = "manufacturer_id=" + encodeURI(select_item.options[select_item.selectedIndex].value) + "&";
	whichItem.innerHTML='Removing..';
	var poststr = add_to_querystring(whichItem.href,"ajax_mode=1");
	resultFunction = new Object();
	resultFunction['result']=function (varIn){apply_remove_result(varIn,whichItem);};
	makePOSTRequest(split_url(poststr)+"?ajax_mode=1", split_querystring(poststr), whichItem, resultFunction,'xml');
	return false;
}
function apply_remove_result(resultIn,itemOBJ){
	result_find=false;
	if(resultIn.getElementsByTagName('xml_return').item(0).hasChildNodes() && basic_check(itemOBJ.tagName) && typeof(itemOBJ)=='object'){
		var result=resultIn.getElementsByTagName('xml_return').item(0);//childNodes.item(0)
		var result=resultIn.getElementsByTagName('xml_return').item(0).childNodes.item(0).childNodes.item(0).data;//childNodes.item(0)
		if(result.toLowerCase()=='true'){// || result.toLowerCase()=='present'
			result_find=true;
		}
	}
	if(result_find==true){
		foundOBJ=get_parent(itemOBJ,'div');
		foundOBJ.style.display="none";
	}else{
		whichItem.innerHTML='- Remove Item';
	}
}