function loadXMLDoc(url, fnName, fnObj) {
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {
			if (req.readyState == 4) {
				if (req.status == 200) { 
					fnName(fnObj, req);
				} else {
					alert("There was a problem retrieving the XML data:\n" + req.statusText);
					return false;
				 }
			}
		};
		req.open("GET", url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = function() {
				if (req.readyState == 4) {
					if (req.status == 200) {
						fnName(fnObj, req);
					} else {
						alert("There was a problem retrieving the XML data:\n" + req.statusText);
						return false;
					 }
				}
			};
            req.open("GET", url, true);
            req.send();
        }
    }
}

function validateDiscountCode(obj, req) { 
	if ( isErroneous(req) )	{
		//alertXMLErrors(req.responseXML);
		document.getElementById('discountMessage').innerHTML = "Invalid Discount Code";
		document.getElementById('discountMessage').className = "alert";
		document.getElementById('discountMessage').style.display = "inline";
		document.getElementById('discountCodeAmount').value = 0;
		recalculateTotalOrderAmount();
		return;
	}
	var discount = req.responseXML.getElementsByTagName("discount")[0];
	if (discount) {
		var amount = getXMLNode("amount", discount, 0);
		var discountType = getXMLNode("type", discount, 0);
		document.getElementById('discountCodeAmount').value = amount;
		document.getElementById('discountCodeType').value = discountType;
		if(discountType == 'flat'){
			discountMsg = "$ " + (amount) + " off";
		}else{
			discountMsg = (amount*100) + "% off";
		}
		document.getElementById('discountMessage').innerHTML = discountMsg;
		document.getElementById('discountMessage').className = "calm";
		document.getElementById('discountMessage').style.display = "inline";
	}
	recalculateTotalOrderAmount();
}

function isErroneous(req) {
	if ( req.responseXML.getElementsByTagName("error")[0] ) return true;
	else return false;
}

function isSuccess(req) {
	if ( req.responseXML.getElementsByTagName("confirm")[0] ) return true;
	else return false;
}

function alertXMLErrors(xml) {
	var errorAggregateString = "";
	var errors = xml.getElementsByTagName("error");
	for (var i = 0; i < errors.length; i++) {
		errorAggregateString += getXMLNode("error", xml, i) + "\n";
	}
	alert(errorAggregateString);
}

function getXMLNode(local, parentElem, index) {
    var result = parentElem.getElementsByTagName(local)[index];

    if (result) {
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
    } else {
		return false;
	}
}


