var shop_items = new Array();

function parseXML(shop_xml) {
	//Internet Explorer
	try {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	} catch(e) {
		 //Firefox, Mozilla, Opera, etc.
		try {
			xmlDoc=document.implementation.createDocument("","",null);
		} catch(e) {
			alert(e.message);
			return;
		}
	}
	var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

	if (IE6) {
		xmlDoc.async=false;
		xmlDoc.load(shop_xml);
	} else {
		var objXMLHTTP = new XMLHttpRequest();
		objXMLHTTP.open("GET", shop_xml, false);
		objXMLHTTP.send(null);
		xmlDoc = objXMLHTTP.responseXML;
	}

	var xml_structure = new Array();
	var x=xmlDoc.documentElement.childNodes;

	for (var i=0;i<x.length;i++) {
		if (x[i].nodeType==1) {
			xml_structure[x[i].getAttribute("ref")] = new Array();
			var y = x[i].childNodes;
			for (var j=0;j<y.length;j++) {
				if (y[j].nodeType==1) {
					xml_structure[x[i].getAttribute("ref")][y[j].nodeName] = y[j].childNodes[0].nodeValue;
				}
			}
		}
	}
	return xml_structure;
}

function display_shop_listing() {
	shop_items = parseXML("/xml/shop.xml");
	if (document.getElementById("shop_listing")) {
		var shop_listing = document.getElementById("shop_listing");
		shop_listing.innerHTML = "";
		var count = 0;
		for(var key in shop_items) {
			shop_listing.innerHTML +=
				'<div class="shop_item row' + (count++%2) + '" id="' + key + '">' +
					'<div class="item_name">' + shop_items[key]['prompt'] + '</div>' +
					'<div class="item_price">' + shop_items[key]['price'] + '</div>' +
					'<div class="item_quantity"><input type="text" name="' + key + '_quantity" size="2" onkeyup="update_totals()" value="0" style="text-align:center;" maxlength="3" /></div>' +
					'<div class="item_subtotal"><input type="text" name="' + key + '_subtotal" value="0.00" size="5" disabled style="text-align:right;" /></div>' +
					'<div class="clear"></div>' +
				'</div>';
		}
	}
	document.shop_form.submit.disabled = false;
}

function update_totals() {
	var numericExpression = /^[0-9]+$/;
	var subtotal_amount = 0.00;
	var shipping_amount = 0.00;
	for(var key in shop_items) {
		var item_quantity = document.shop_form[key + '_quantity'].value;
		if (item_quantity == '') item_quantity = '0';
		if(item_quantity.match(numericExpression)) {
			subtotal_amount += item_quantity * shop_items[key]['price'];
			document.shop_form[key + '_subtotal'].value =  truncate(item_quantity * shop_items[key]['price']);
			document.shop_form[key + '_quantity'].className = document.shop_form[key + '_quantity'].className.replace(/formError/g, '');
		} else {
			document.shop_form[key + '_quantity'].value = "0";
			document.shop_form[key + '_quantity'].className += ' formError';
			alert("Warning: Quantity for " + shop_items[key]['prompt'] + " must be valid number.");
		}
	}

	// Calculate shipping
	if (subtotal_amount < 20) {
		shipping_amount = 5;
	} else if (subtotal_amount < 50) {
		shipping_amount = 10;
	} else if (subtotal_amount < 200) {
		shipping_amount = 15;
	} else {
		// Display "Please contact Arthritis QLD to make this order" and disable the form
		disableForm();
		return;
	}

	// Enable form if it was disabled previously
	enableForm();

	document.shop_form['subtotal_amount'].value = truncate(subtotal_amount);
	document.shop_form['shipping_amount'].value = truncate(shipping_amount);
	document.shop_form['total_amount'].value = truncate(subtotal_amount + shipping_amount);
	return;
}

function enableForm() {
	document.getElementById('shop_subtotal').style.display = 'block';
	document.getElementById('shop_shipping').style.display = 'block';
	document.getElementById('shop_total').style.display = 'block';
	document.getElementById('shop_buttons').style.display = 'block';

	document.getElementById('shop_message').style.display = 'none';
}

function disableForm() {
	document.getElementById('shop_subtotal').style.display = 'none';
	document.getElementById('shop_shipping').style.display = 'none';
	document.getElementById('shop_total').style.display = 'none';
	document.getElementById('shop_buttons').style.display = 'none';

	document.getElementById('shop_message').style.display = 'block';
}

function truncate(num) {
	var str = num + ''; // Now it's a string.
	if (str.indexOf('.') == -1) { return str + '.00'; }
	dot = str.length - str.indexOf('.');
	if (dot > 3) { return str.substring(0,str.length-dot+3); }
	else if (dot == 2) { return str + '0'; }
	return str;
}

