/*jsl:option explicit*/

	var rushChargeItems = [];
	$(document).ready(function(){
		checkCart();
		if(rushChargeItems.length !== 0){
			var t = "";
			$.each(rushChargeItems, function(){
				t+= "&itemId=" + escape(this);
			});
			$.getJSON(rushChargeURL + t + "&jsoncallback=?", function(chargeResp){
				if(chargeResp.isSuccess){
					for(var id in chargeResp.idMap){
						var chargeItem = chargeResp.idMap[id].surchargeId;
						var chargeAmount = chargeResp.idMap[id].amount;
						$("#chargeHolder" + id).append("<span class='chargeItem'>"+ chargeItem +"</span><span class='chargeAmnt'>"+ chargeAmount +"</span>");
					}
				}
			});

		}
	});

	function warnRushCharge(cb){
		if(cb.checked){
			if(!acceptsRushCharge(cb.form.elements['buyid'].value)) {cb.checked = false; $(cb).triggerHandler('click');}
		}
	}
	
	
	function acceptsRushCharge(id){
		var chargeAmount = $("#chargeHolder"+ id +" span.chargeAmnt").text();
		return confirm(chargeNote.replace("{chargeAmount}", chargeAmount));
	}


	function hideOptRow(node){
		if(!node) return; // what happened?
		if(node.tagName == "TR") node.style.display = "none";
		else hideOptRow(node.parentNode);
	}

	function checkPendingPost(){
			var pendingId = pendingOrders.pop();
			if(pendingId){
				var myForm = document.forms['form' + pendingId];
				if(myForm.onsubmit()) myForm.submit();
			}
	}
	
	function getItemForm(id){
		var myForm =  document.getElementById("form" + id);
		if (myForm) return myForm;
		var ips = document.getElementsByTagName("INPUT");
		for(var i = 0; i< ips; i++){
			var ip = ips[i];
			if(ip.name && ip.name == 'buyid' && ip.value == id) return ip.form;
		}
		return null;
	}
			


	var pendingOrders = [];

	function prepRushForm(id, myForm, isDropShip, rushShipItem, qtyAvailable){
		var isOutOfStock = parseInt(qtyAvailable, 10) === 0;
		var rushCB = myForm.elements["custcolrushship"];
		if(rushCB && rushCB.type == "checkbox"){
			if(!displayRushCB(rushShipItem, isDropShip, isOutOfStock)) hideOptRow(rushCB);
			if(rushShipItem && (isDropShip || isOutOfStock)){
				rushChargeItems.push(id);
				document.write("<div id='chargeHolder"+ id +"' style='display:none;'></div>");
				
				if(!isDropShip){ // for normally stock items
					$(rushCB).click(function(){warnRushCharge(this);});
					//var origSubmit = myForm.elements['addtocart'].onclick;
					myForm.elements['addtocart'].onclick = function(evt){
						if(myForm.onsubmit()){
							if(!myForm.elements['custcolrushship'].checked){ 
								myForm.submit();
							}else{
								pendingOrders.push(id);
								var rushForm = document.forms['rushPostForm'];
								rushForm.elements['buyid'].value = $("#chargeHolder"+ id +" span.chargeItem").text();
								rushForm.submit();
							}
						}
					};
				} else{ // drop ship items
					//var origSubmit = myForm.elements['addtocart'].onclick;
					getSubmitter(id, myForm).each(function() { this.onclick = function(evt){
						if(myForm.onsubmit() && acceptsRushCharge(id)){
							myForm.elements['custcolrushship'].checked = true;
							pendingOrders.push(id);
							var rushForm = document.forms['rushPostForm'];
							rushForm.elements['buyid'].value = $("#chargeHolder"+ id +" span.chargeItem").text();
							rushForm.submit();
						}
					};
					});
					
				}
				
			}
			
		}
		
		function displayRushCB(hasRush, isDropShip, isOutOfStock){
			return (hasRush && !isDropShip && isOutOfStock);
		}
		
		function getSubmitter(id, myForm){
			if(myForm.elements['addtocart']) return $(myForm.elements['addtocart']);
			var el = $("#addtocart");
			if(el.length == 1) return el;
			for(var i = 0; i< myForm.elements.length; i++){
				var elem = myForm.elements[i];
				if(elem.type == 'submit') return $(elem);
			}
			return $([]);// just an empty jQuery 
		}
	}

function checkCart(){
	var cart = document.getElementById("carttable");
	if(cart){
		var itemIds = [];
		var itemMap = {};

		$("TR", cart).each(function(){
			var itemRow = this;
			var targetIn = null;
			var id = null;
			var inputs = this.getElementsByTagName("INPUT");
			for(var i = 0; i< inputs.length; i++) {
				var idMatch = (/^item([0-9]+)set[0-9]+$/).exec(inputs[i].getAttribute("id"));
				if(idMatch && idMatch.length == 2) {
					var rushSet = $.trim($("TD", itemRow).eq(3).text()).indexOf("Drop Ship") != -1;
					itemMap[idMatch[1]] = {iset:idMatch[0], ip:inputs[i], tr:itemRow, rushSet:rushSet};
				}
			}
		});

		var t = "";
		for(var id in itemMap) t+= "&itemId=" + escape(id);
		if(t) {
			$.getJSON(rushChargeURL + t + "&checkCharge=T&jsoncallback=?", function(chargeResp){
				if(chargeResp.isSuccess){
					var haveChange = false;
					// does each rush have a charge?
					for(var id in itemMap){
						if(chargeResp.idMap[id].isCharge){
							// is it the charge for some item in the cart?
							if(chargeUsed(id)){
								var chargeItem = itemMap[id];
								if(chargeItem.ip.value != 1) { chargeItem.ip.value = 1; haveChange = true;}
								chargeItem.ip.disabled = true;
								$("A", chargeItem.tr).slice(-1).eq(0).remove();
							}else{
								itemMap[id].ip.value = 0; // delete it.
								haveChange = true;
							}
						}else if(itemMap[id].rushSet){
							var chargeId = chargeResp.idMap[id].surchargeId;
							if(!itemMap[chargeId]){
								$(itemMap[id].ip).css("border", "1px solid red");
								alert("The drop ship charge for this item is missing. Please remove this item");
							}
						}
					}
					if(haveChange){
						document.forms['cart'].submit();
					}

				}
				
				function chargeUsed(id){
					for(var checkId in itemMap){
						if(chargeResp.idMap[checkId].surchargeId == id && itemMap[checkId].rushSet)  return true;
					}
				return false;
				}
			});
		}
	}
}

