//
// Inventory Javascript
// (c) 2006 Robert P. Mena, IntelliXense. All Rights Reserved.
//

var http = createRequestObject();

var cartShipZip = 0;
var cartTaxRate = 0;
var cartShipRate = 0;
var cartItemCount = 0;
var cartTotal = 0;

var tempHTML = '';

function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

function Req(action) {
    http.open('get', 'set.php?' + action);
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
	if(http.readyState == 4){
        var response = http.responseText;
		var update = new Array();
        if(response.indexOf('|' != -1)) {
            update = response.split('|');
			document.getElementById(update[0]).innerHTML = update[1];
        //	document.getElementById("calendar").innerHTML = response;
        	parent.view.location.reload();
        }
    }
}

function formatCurrency(amount)
{
	if (typeof amount != 'number') amount = amount.toFixed(2);
	if (typeof amount != 'string') amount = amount.toString();
	var delimiter = ",";
	var a = amount.split('.',2);
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if(d.length < 1) { amount = n; }
	else { amount = n + '.' + d; }
	amount = minus + amount;
	return amount;
}


function updateDisplayItems() {
	if (http.readyState != 0 && http.readyState != 4) return;
	http.open('get', 'cart.php?xCartReq=xCartGet');
	http.onreadystatechange = updateDisplayItemsResponse;
	http.send(null);
}

function updateDisplayItemsResponse() {
	if(http.readyState == 4) {
        var response = http.responseText;
        //
        
        if (window.ActiveXObject)
  		{
  			var xml=new ActiveXObject("Microsoft.XMLDOM");
  			xml.async="false";
  			xml.loadXML(response);
  		}
		else
  		{
    		var xml = (new DOMParser()).parseFromString(response, "text/xml");
    	}
		var root = xml.getElementsByTagName('root')[0];
		var cart = root.getElementsByTagName('cart');
		for (var i = 0 ; i < cart.length ; i++) {
			
			if (cart[i].getElementsByTagName('ship_zip')[0].firstChild != null)
				cartShipZip = parseInt(cart[i].getElementsByTagName("ship_zip")[0].firstChild.nodeValue);
			if (cart[i].getElementsByTagName('ship_rate')[0].firstChild != null)
				cartShipRate = parseFloat(cart[i].getElementsByTagName("ship_rate")[0].firstChild.nodeValue);
			if (cart[i].getElementsByTagName('tax_rate')[0].firstChild != null)
				cartTaxRate = parseFloat(cart[i].getElementsByTagName("tax_rate")[0].firstChild.nodeValue); 
			
		}
    	var items = root.getElementsByTagName('item');
    	//
    	var subtotal = 0;
    	var taxable = 0;
    	//var shipping = 0;
    	cartTotal = 0;
    	cartItemCount = 0;
		for (var i = 0 ; i < items.length ; i++) {
			// get one item after another
			var item = items[i];
			// now we have the item object, time to get the contents, get the name of the item
			
			if (item.getElementsByTagName("id")[0].firstChild != null) {
				var id = item.getElementsByTagName("id")[0].firstChild.nodeValue;
				var qty = item.getElementsByTagName("qty")[0].firstChild.nodeValue;
				var price = item.getElementsByTagName("price")[0].firstChild.nodeValue;
				if (item.getElementsByTagName("taxable")[0].firstChild.nodeValue == 'Y')
				{
					taxable += qty * price;
				}
				if (parseInt(qty) > 0) {
					subtotal += qty * price;
					cartItemCount += parseInt(qty);
				}
				if (document.getElementById("qty" + id) != null) document.getElementById("qty" + id).innerHTML = qty;
			}
		}	
		var tax = (taxable + cartShipRate) * cartTaxRate;
		cartTotal = subtotal + cartShipRate + tax;
		//document.getElementById("cartSubtotal").innerHTML = subtotal.toFixed(2);
		if (document.getElementById("cartSubtotal") != null) document.getElementById("cartSubtotal").innerHTML = '$' + subtotal.toFixed(2);
		if (document.getElementById("cartShipping") != null) document.getElementById("cartShipping").innerHTML = '$' + cartShipRate.toFixed(2);
		if (document.getElementById("cartTax") != null) document.getElementById("cartTax").innerHTML = '$' + tax.toFixed(2);
		if (document.getElementById("cartTotal") != null) {
			document.getElementById("cartTotal").innerHTML = '$' + cartTotal.toFixed(2);
		}
		if (document.getElementById("cartItemCount") != null) {
			if (cartItemCount == 0)
				document.getElementById("cartItemCount").innerHTML = 'No items';
			else
			if (cartItemCount == 1)
				document.getElementById("cartItemCount").innerHTML = cartItemCount + ' item';
			else
				document.getElementById("cartItemCount").innerHTML = cartItemCount + ' items';
		}
		if (document.getElementById("cartShippingTo") != null)
			if (cartShipZip > 0) 
				document.getElementById("cartShippingTo").innerHTML = ' to ' + cartShipZip;
			else
				document.getElementById("cartShippingTo").innerHTML = '';
    }
}


function cartAdd(id,price,taxable,name,type)
{
	if (http.readyState != 0 && http.readyState != 4) return;
	var query = 'xCartReq=xCartAdd&xCartId=' + id + '&xCartPrice=' + price + '&xCartTaxable=' + taxable + '&xCartName=' + name + '&xCartTypeId=' + type;
	http.open('POST', 'cart.php', true);
	http.onreadystatechange = cartResponse;
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(query);
}

function cartResponse() {
	if(http.readyState == 4) {
        updateDisplayItems();
    }
}

function cartDel(id)
{
	if (http.readyState != 0 && http.readyState != 4) return;
	var query = 'xCartReq=xCartDel&xCartId=' + id;
	http.open('POST', 'cart.php', true);
	http.onreadystatechange = cartResponse;
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(query);
}

function cartClear()
{
	if (cartItemCount < 1)
		alert('There are no items in your cart.');
	else
	if (confirm('Are you sure you want to clear your cart?')) {
		if (http.readyState != 0 && http.readyState != 4) return;
		var query = 'xCartReq=xCartClear';
		http.open('POST', 'cart.php', true);
		http.onreadystatechange = cartClearResponse;
		http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http.send(query);
	}
}

function cartClearResponse()
{
	if(http.readyState == 4) {
		cartTaxRate = 0;
		cartShipRate = 0;
		window.location.reload();
        //updateDisplayItems();
    }
}

function cartCancel()
{
	if (cartItemCount < 1)
		alert('There are no items in your cart.');
	else
	if (confirm('Are you sure you want to cancel this order?')) {
		if (http.readyState != 0 && http.readyState != 4) return;
		var query = 'xCartReq=xCartClear';
		http.open('POST', 'cart.php', true);
		http.onreadystatechange = cartCancelResponse;
		http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http.send(query);
	}
}

function cartCancelResponse()
{
	if(http.readyState == 4) {
		document.location.href = 'index.php';
    }
}

function cartSetZip(zip)
{
	if (http.readyState != 0 && http.readyState != 4) { alert('Unable to update. (' + http.readyState + ')'); return; }
	var query = 'xCartReq=xCartSetZip&xCartZip=' + zip;
	http.open('POST', 'cart.php', true);
	http.onreadystatechange = cartResponse;
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(query);
}

function processOrder() {
	if (http.readyState != 0 && http.readyState != 4) return;
	http.open('get', 'cart.php?xCartReq=xCartGet');
	http.onreadystatechange = processOrderGetCart;
	http.send(null);
}

function processOrderGetCart() {
	if(http.readyState == 4) {
        var response = http.responseText;
        if (window.ActiveXObject)
  		{
  			var xml=new ActiveXObject("Microsoft.XMLDOM");
  			xml.async="false";
  			xml.loadXML(response);
  		}
		else
  		{
    		var xml = (new DOMParser()).parseFromString(response, "text/xml");
    	}
		var root = xml.getElementsByTagName('root')[0];
		var cart = root.getElementsByTagName('cart');			
		cartTotal = 0;
		if (cart[0].getElementsByTagName('total')[0].firstChild != null)
			cartTotal = parseFloat(cart[0].getElementsByTagName("total")[0].firstChild.nodeValue);
		else {
			alert('Error accessing your cart. Can\'t continue.');
			return false;
		}			

	var cardRef = '0';
	var cardName = document.getElementById('cardName').value;
	var cardMo = document.getElementById('cardMo').value;
	var cardYear = document.getElementById('cardYear').value;
	var cardNumber = document.getElementById('cardNumber').value;
	var cardID = document.getElementById('cardID').value;
	
	var billFirst = document.getElementById('billFirst').value;
	var billMiddle = '';
	var billLast = document.getElementById('billLast').value;
	var billStreet = document.getElementById('billStreet').value;
	var billSuite = '';
	var billCity = document.getElementById('billCity').value;
	var billState = document.getElementById('billState').value;
	var billZip = document.getElementById('billZip').value;
	var billPhone = document.getElementById('billPhone').value;
	var billEmail = document.getElementById('billEmail').value;
	var shipName = document.getElementById('shipName').value;
	var shipStreet = document.getElementById('shipStreet').value;
	var shipSuite = '';
	var shipCity = document.getElementById('shipCity').value;
	var shipState = document.getElementById('shipState').value;
	var shipZip = document.getElementById('shipZip').value;
	
	if (confirm('Confirm to process order of $' + cartTotal.toFixed(2))) {
		document.getElementById('orderProcess').disabled = true;
		if (http.readyState != 0 && http.readyState != 4) {
			alert('Unable to process at the moment. Please try later.');
			document.getElementById('orderProcess').disabled = false;
			return;
		}
		tempHTML = document.getElementById('title').innerHTML;
		document.getElementById('title').innerHTML = '<img src="images/wait.gif" style="vertical-align:middle;">&nbsp;&nbsp;<img src="images/cart_processing.png" style="vertical-align:middle;">';
		var query = 'clientID=IXWS&cardRef=' + cardRef + '&cardName=' + cardName 
			+ '&cardAmount=' + cartTotal.toFixed(2) + '&cardMo=' + cardMo + '&cardYear=' + cardYear
			+ '&cardNumber=' + cardNumber + '&cardID=' + cardID 
			+ '&billFirst=' + billFirst + '&billMiddle=' + billMiddle + '&billLast=' + billLast
			+ '&billStreet=' + billStreet + '&billSuite=' + billSuite + '&billCity=' + billCity + '&billState=' + billState + '&billZip=' + billZip
			+ '&billPhone=' + billPhone + '&billEmail=' + billEmail
			+ '&shipName=' + shipName
			+ '&shipStreet=' + shipStreet + '&shipSuite=' + shipSuite + '&shipCity=' + shipCity + '&shipState=' + shipState + '&shipZip=' + shipZip;
		http.open('POST', 'process.php', true);
		http.onreadystatechange = processOrderResponse;
		http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http.send(query);
		}
	}
}

function processOrderResponse()
{
	if(http.readyState == 4) {
		//alert('receiving ...' + http.readyState + ' >' + http.responseText);
		document.getElementById('orderProcess').disabled = false;
		var response = http.responseText;
		if (window.ActiveXObject)
  		{
  			var xml=new ActiveXObject("Microsoft.XMLDOM");
  			xml.async="false";
  			xml.loadXML(response);
  		}
		else
  		{
    		var xml = (new DOMParser()).parseFromString(response, "text/xml");
    	}
		var root = xml.getElementsByTagName('request');
		if (root[0] == null) {
			document.getElementById('title').innerHTML = tempHTML;
			alert('Service is unavailable.\nSorry for the inconvenience.\nPlease Try later or call our Toll Free number.');
			return;
		}
		var orderStatus = root[0].getElementsByTagName("status")[0].firstChild.nodeValue;
		var orderAmount = root[0].getElementsByTagName("amount")[0].firstChild.nodeValue;
		var orderCardId = root[0].getElementsByTagName("cardid")[0].firstChild.nodeValue;
		if (orderStatus == '1') {
			var orderAuth = root[0].getElementsByTagName("auth_id")[0].firstChild.nodeValue;
			var orderDateTime = root[0].getElementsByTagName("datetime")[0].firstChild.nodeValue;
			var orderNumber = root[0].getElementsByTagName("orderid")[0].firstChild.nodeValue;
			document.location.href = 'receipt.php?orderAuth=' + orderAuth + '&orderDateTime=' + orderDateTime
			+ '&orderNumber=' + orderNumber + '&orderAmount=' + orderAmount + '&orderCardId=' + orderCardId;
			return;
		}
		else {
			document.getElementById('title').innerHTML = tempHTML;
			var response = root[0].getElementsByTagName("resp")[0].firstChild.nodeValue;
			alert('Order Declined\n' + response + '\n\nAmount: $' + orderAmount);
		}
    }
}