
var simple_load = "<img src='images/loading_small.gif' width='16' height='16' alt='' title='Loading...' />";


function setup_ajax() {
	var http_request = false;

	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest()
	} else if (window.ActiveXObject) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP")
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP")
			} catch (E) {
				http_request = false;
			}
		}
	}

	return http_request;
}



function render_new_html(request_method, url, vars, div) {

	var http_request = new setup_ajax();

	http_request.onreadystatechange = function() { deliver_new_html(http_request, div); };
	http_request.open(request_method, url, true);
	http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	http_request.send(vars);
}

function addressbook_swapccode(url, countrycode_div) {

	var http_request = new setup_ajax();

	http_request.onreadystatechange = function() { deliver_new_value(countrycode_div); };
	http_request.open('POST', url, true);
	http_request.send(null);


}

function get_form_values(f,func){

	var str = "";
	var valueArr = null;
	var val = "";
	var cmd = "";

	for(var i = 0; i < f.elements.length; i++) {
		switch(f.elements[i].type) {
			case "text":
				/*if(func) {
					//use single quotes for argument so that the value of
					//fobj.elements[i].value is treated as a string not a literal
					cmd = func + "(" + 'f.elements[i].value' + ")";
					val = eval(cmd)
				}*/

				str += f.elements[i].name + "=" + escape(f.elements[i].value) + "&";
				break;

			case "select":
				str += f.elements[i].name + "=" + f.elements[i].options[f.elements[i].selectedIndex].value + "&";
				break;
			default:
				str += f.elements[i].name + "=" + escape(f.elements[i].value) + "&";
				break;
		}
	}

	str = str.substr(0,(str.length - 1));
	return str;
}

function update_shopping_cart(url, pid) {

	var http_request = new setup_ajax();
	var return_val = "";
	var height = (!window.innerHeight) ? document.body.clientHeight : window.innerHeight;
	var offset = (!window.innerHeight) ? 260 : 200;

	var screen_center = Math.round(document.body.scrollTop + (height / 2)) - offset;

	http_request.onreadystatechange = function() { 

		if (http_request.readyState == 4) {
			var return_val = http_request.responseText;
			var split = return_val.split("|||");

			if (split[0] == 'DUPLICATE') {
				document.getElementById('overlay').style.display = "";
				document.getElementById('overlay_message').style.display = "";
				document.getElementById('overlay_message').style.top = screen_center;
				document.getElementById('overlay_message').innerHTML = split[1];
			} else {
				document.getElementById('IC_'+ pid).innerHTML = split[0];
				document.getElementById('RPCART').innerHTML = split[1];
	
	
				if (document.getElementById('RPCART_BASE') != null) {
					document.getElementById('RPCART_BASE').innerHTML = split[2];
				}
				if (document.getElementById('RPC_HIDE') != null) {
					document.getElementById('RPC_HIDE').style.display = "";
				}
			}
		}
	};

	http_request.open('get', url, true);
	http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	http_request.send("");
}


function generate_nu_image(request_url, div) {

	var http_request = new setup_ajax();

	var rc = '';
	var reg_img = document.getElementById('simg');
	var reg_div = document.getElementById(div);
	var imgname = random_string(14);

	do_request_function = function() {
		if (http_request.readyState == 4) {

			var html = http_request.responseText;

			reg_div.innerHTML = "<img src='"+ request_url +"/"+ imgname +"' width='240' height='55' id='simg' alt='Loading' style='border:1px solid #000;cursor:pointer;' title='Click to generate a fresh image' onclick=\"generate_nu_image('"+ request_url +"', '"+ div +"'); set_image_loading();\" />";
		}
	};

   	reg_img._ready = 0;

   	http_request.onreadystatechange = do_request_function;
	http_request.open('GET', request_url, true);
	http_request.send(null);


}


function swap_shipping_info(the_select, request_url) {

	var http_request = new setup_ajax();

	var code = the_select.options[the_select.selectedIndex].value;
	var url = request_url +'/'+ code;
	
	document.getElementById('SP').innerHTML = simple_load;

   	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4) {

			var html = http_request.responseText; 

			var taxtotal = document.getElementById('TAX') ? parseFloat(document.getElementById('TAX').value) : 0.00;
			var subtotal = parseFloat(document.getElementById('HT').value);
			var shiprate = parseFloat(html)

			var new_total =  format_float(subtotal + taxtotal + shiprate);
	
			document.getElementById('SP').innerHTML = '$'+ html;
			document.getElementById('TOT').innerHTML = '$'+ new_total;
			document.getElementById('SC').value = code;
		}
	};

	http_request.open('GET', url, true);
	http_request.send(null);
}

function generate_billing_info(request_url) {

	var http_request = new setup_ajax();

   	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4) {
			var html = http_request.responseText;	
			document.getElementById('LOAD').innerHTML = html;
		}
	};

	http_request.open('POST', request_url, true);
	http_request.send(null);
}

function send_ajax_request(url) {

	var http_request = new setup_ajax();

	http_request.onreadystatechange = function() { echo_contents(http_request); };
	http_request.open('POST', url, true);
	http_request.send(null);	
}


function deliver_new_html(http_request, element) {

	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if (http_request.responseText != "") {
				document.getElementById( element ).innerHTML = http_request.responseText;
			} else {
				document.getElementById( element ).innerHTML = '';
			}
		}
	}
}

function deliver_new_value(http_request, element) {
	
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if (http_request.responseText != "") {
				document.getElementById( element ).value = http_request.responseText;
			} else {
				document.getElementById( element ).value = '';
			}
		}
	}
}

function alert_contents(http_request) {

	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if (http_request.responseText == 'NR') {
				triggered = false;
				return false;
			} else {
				alert(http_request.responseText);
				triggered = false;
			}
		} else {
			alert('There was a problem with the request.');
		}
	}
} 

function get_return_value(request_method, url) {
	
	var http_request = new setup_ajax();

	http_request.open(request_method, url, false);
	http_request.send(null);

	return http_request.responseText;
}

function random_string(len) {
	var chars = "0123456789Zabcdef";
	var string_length = len;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}
