function addLoadEvent(func) {

	var oldonload = window.onload;

	if (typeof window.onload != 'function') {

		window.onload = func;

	} else {

		window.onload = function() {

			oldonload();

			func();

		}
	}
}

addLoadEvent(doAjax);

function doAjax() {

	prepareForm(
		"product-form",
		"basket-container",
		"basket-container",
		"/ajax/basket-update.php"
	);

	prepareSelector(
		"unit-id",
		"blurb-container",
		"/ajax/blurb-update.php"
	);

	prepareForm(
		"basket-form",
		"basket-form-container",
		"basket-form-total",
		"/ajax/basket-update-form.php"
	);
	prepareLinks(
		"basket-form",
		"basket-form-container",
		"basket-form-total",
		"/ajax/basket-update-form.php"
	);
	prepareLinks(
		"giftwrap",
		"basket-container",
		"basket-container",
		"/ajax/basket-update.php"
	);

}

function prepareLinks(containerId,canvasId,updateId,ajaxFile) {

	if (!document.getElementById) return false;

	if (!document.getElementById(canvasId)) return false;

	if (!document.getElementById(containerId)) return false;

	var lnks = document.getElementById(containerId).getElementsByTagName("a");

	for (var i=0; i< lnks.length; i++) {

		if (lnks[i].getAttribute("href").indexOf("?") > -1 ) {

			var lnk = lnks[i].getAttribute("href").match(/\?(\w.+)/)[1];
	
			lnks[i].canvasId = canvasId;
	
			lnks[i].theurl = ajaxFile+"?"+lnk;

			lnks[i].theaction = function() { doAction(canvasId,updateId); }
	
			lnks[i].onclick = function() {

				ajax = getHTTPObject();
			
				if (!ajax) return true;
	
				loadXMLDoc(this.theurl,this.theaction);
	
				return false;
	
			}
		}
	}
}

function prepareSelector(selectorId,canvasId,ajaxFile) {

	if (!document.getElementById) return false;

	if (!document.getElementById(canvasId)) return false;

	if (!document.getElementById(selectorId)) return false;

	var theselector = document.getElementById(selectorId);

	var lnk = ajaxFile+"?";

	theselector.theurl = lnk;

	theselector.canvasId = canvasId;

	theselector.theaction = function() { doAction(canvasId,canvasId); }

	theselector.onchange = function() {

		ajax = getHTTPObject();
	
		if (!ajax) return true;

		var url = this.theurl;

		url+= this.getAttribute("name");
		url+= "=";
		url+= this.value;

		loadXMLDoc(url,this.theaction);

	}

}

function prepareForm(formId,canvasId,updateId,ajaxFile) {

	if (!document.getElementById) return false;

	if (!document.getElementById(canvasId)) return false;

	if (!document.getElementById(formId)) return false;

	var theform = document.getElementById(formId);

	var lnk = ajaxFile+"?";

	theform.theurl = lnk;

	theform.canvasId = canvasId;

	theform.theaction = function() { doAction(canvasId,updateId); }

	theform.onsubmit = function() {

		ajax = getHTTPObject();
	
		if (!ajax) return true;

		var npts = this.getElementsByTagName("input");

		for (var i=0; i< npts.length; i++) {
	
			this.theurl+= npts[i].getAttribute("name");
			this.theurl+= "=";
			this.theurl+= npts[i].value;
			this.theurl+= "&";
	
		}
	
		var slcts = this.getElementsByTagName("select");
	
		for (var i=0; i< slcts.length; i++) {
	
			this.theurl+= slcts[i].getAttribute("name");
			this.theurl+= "=";
			this.theurl+= slcts[i].value;
			this.theurl+= "&";
	
		}

		loadXMLDoc(this.theurl,this.theaction);

		return false;

	}

}

function doAction(canvasId,updateId) {

	if (ajax.readyState != 4) return false;

	if (ajax.status != 200) return false;

	var canvas = document.getElementById(canvasId);

	canvas.innerHTML = ajax.responseText;

	fadeup(updateId,255,126,153);

	doAjax();

}

function loadXMLDoc(url,action) {

	ajax.onreadystatechange = action;
	ajax.open("GET", url, true);
	ajax.send(null);

}

function getHTTPObject() {

	try {

		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

	} catch (e) {

		try {

			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

		} catch (e) {

			try {

				var xmlhttp = new XMLHttpRequest();

			} catch (e) {

				var xmlhttp = false;

			}
		}
	}

	return xmlhttp;

}


function fadeup(elementId,red,green,blue) {

	if (red ==255 && green == 255 && blue==255) {
		document.getElementById(elementId).style.backgroundColor = "transparent";
		return true;
	}

	document.getElementById(elementId).style.backgroundColor = "rgb("+red+","+green+","+blue+")";

	red = red + Math.ceil((255 - red)/10);
	green = green + Math.ceil((255-green)/10);
	blue = blue + Math.ceil((255-blue)/10);

	setTimeout("fadeup('"+elementId+"',"+red+","+green+","+blue+")", 20);

}