
var httpTesting = true;
var inCall = false;
var callToArray = new Array();
var returnToArray = new Array();
var queueWatcher = setInterval(callQueue, 100);

function createRequestObject() {
	var ro;
	ro = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	return ro;
}

var http = createRequestObject();
if (typeof(http) != 'object') {
	alert("An error occurred initialising the XMLHttpRequest object. Please try refreshing the page.\n\nIf the problem persists, please contact support.\n\nSystem behaviour will be unpredictable until this fault is resolved.");
}

function callQueue() {
	if (!inCall && callToArray.length > 0) {
		if (callToArray.length > 0) {
			whereTo = callToArray.shift();
			returnTo = returnToArray.shift();
			
			doCall(whereTo, returnTo);
		} else {
			alert("???");
		}
	} else if (!inCall) {
		//hideProcessingMessage(500);
		displayProcessingMessage('none');
	}
}

function doCall(whereTo, returnTo) {
	inCall = true;
	displayProcessingMessage();
	var rpcDateObject = new Date();
	var url = '/ajax/rpc.php?timestamp=' + rpcDateObject.getTime();
	url += '&action=' + whereTo;
	
	//document.getElementById('xmlHTTPRequestLog').innerHTML += '<br />' + url;
	http.open('get', url);
	
	if (returnTo.length > 0) {
		eval("http.onreadystatechange = "+returnTo);
	}
	
	http.send(null);
}

function hr_inCall() {
	if (http.readyState == 4) {
		inCall = false;
	}
}

function sendRequest(onchange, action) {

	callToArray.push(action);
	returnToArray.push(onchange);
	
}

function handleAjaxSOPricing() {
	if (http.readyState == 4 && http.status == 200) {
		inCall = false;
		var xml = http.responseXML;
		var cCode = xml.getElementsByTagName('currency')[0];
		setSpecialOfferPricing(cCode.getAttribute('code'));
	}
}

function handleMultibuyPricing() {
	if (http.readyState == 4 && http.status == 200) {
		inCall = false;
		var i = 0;
		var xml = http.responseXML;
		var error = xml.getElementsByTagName('error');
		if (error && error.length > 0) {
			for (i = 0; i < error.length; i++) {
				alert(error[i].getElementsByTagName('message')[0].childNodes[0].nodeValue);
			}
		} else {
			var prices = xml.getElementsByTagName('multibuy');
			var target;
			for (i = 0; i < prices.length; i++) {
				var id = prices[i].getAttribute('multibuyID');
				var price = prices[i].getAttribute('multibuyPrice');
				var currency = prices[i].getAttribute('currencySymbol');
				var targetID = 'multibuyPriceSpan_' + id;
				var savingTargetID = 'multibuyOptionSaving_' + id;
				var saving = prices[i].getAttribute('multibuySaving');
				if (document.getElementById(targetID)) {
					target = document.getElementById(targetID)
					target.innerHTML = decodeURIComponent(currency) + price;
				}
				if (document.getElementById(savingTargetID)) {
					target = document.getElementById(savingTargetID);
					target.innerHTML = 'Save ' + decodeURIComponent(currency) + saving;
				}
			}
			var minimumSaving = xml.getElementsByTagName('pricingSet')[0].getAttribute('minimumSaving');
			var savingMessage = '';
			if (minimumSaving) {
				savingMessage = 'Save at least ' + currency + minimumSaving + '!';
			}
			document.getElementById('multibuySavingDetail').innerHTML = savingMessage;
		}
	}
}

function handlePricingSetData() {
	if (http.readyState == 4 && http.status == 200) {
		inCall = false;
		var xml = http.responseXML;
        var i = 0;
		error = xml.getElementsByTagName('error');
		if (error && error.length > 0) {
			for (i = 0; i < error.length; i++) {
				alert(error[i].getElementsByTagName('message')[0].childNodes[0].nodeValue);
			}
		} else {
			var prices = xml.getElementsByTagName('price');

			for (i = 0; i < prices.length; i++) {
				var price = prices[i];
				if (document.getElementById('variantPriceSpan_' + price.getAttribute('variantID'))) {
					var target = document.getElementById('variantPriceSpan_' + price.getAttribute('variantID'));
					target.innerHTML  = decodeURIComponent(price.getAttribute('currencySymbol'));
					target.innerHTML += price.getAttribute('priceAmount');
				}
			}

			refreshCartAJAX();

		}
	}
}

function sendPurchase() {
	var rpcDateObject = new Date();
	var f = document.getElementById('checkoutPaymentForm');

	if (f.cardType.selectedIndex == 0) {
		alert("Please select your payment card type.");
		return false;
	} 
	
	if ($('#cardType').val() != 'PAYPAL') {
		
		if (f.cardNumber.value.length < 10 || isNaN(f.cardNumber.value)) {
			alert("Please check you have entered your full card number, without spaces or hyphens.");
			return false;
		} else if (f.expiryMonth.selectedIndex == 0 || f.expiryYear.selectedIndex == 0) {
			alert("Please enter your card's expiry date.");
			return false;
		} else if (f.nameOnCard.value == '') {
			alert("Please enter the your name as it appears on your card.");
			return false;
		} else if (f.cv2Number.value.length < 3 || isNaN(f.cv2Number.value)) {
			alert("Please enter your card's CV2 number (the last 3 digits on the signature strip).");
			return false;
		}
		
	}

	if (f.accept_terms.checked!=true) {
		f.accept_terms.style.border = '2px solid #ff0000';
		alert("Please check the box to confirm you have read and accepted our terms and conditions.\n\nYour order cannot be placed until this is done.");
		return false;
	} else {
		f.accept_terms.style.border = '';
	}

	$('#checkoutBuyButtonLink').unbind('click');
	
	document.getElementById('processingMessage').style.display = 'inline';

	f = document.getElementById('checkoutForm');

    var i = 0;
	for (i = 0; i < f.elements.length; i++) {
		f.elements[i].disabled=true;
	}

	f = document.getElementById('checkoutPaymentForm');

	for (i = 0; i < f.elements.length; i++) {
		f.elements[i].disabled=true;
	}

	http.open('post', '/index.php?timestamp=' + rpcDateObject.getTime() + '&module=main&page=processPurchaseAJAX&action=test');
	http.onreadystatechange = processPurchaseResponse;
	http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

	var postData = 'firstField=1';

	for (i = 0; i < f.elements.length; i++) {
		postData = postData + '&' + f.elements[i].name + '=' + f.elements[i].value;
	}

	f = document.getElementById('checkoutPaymentForm');

	for (i =0; i < f.elements.length; i++) {
		postData = postData + '&' + f.elements[i].name + '=' + f.elements[i].value;
	}

	postData = postData + '&lastField=1';

	http.send(postData);

    return true;
}

function processPurchaseResponse() {
	if (http.readyState == 4) {
		inCall = false;
        var f, i;
		var response = http.responseXML;
		var error = response.getElementsByTagName("error")[0];
		var errorMessage = response.getElementsByTagName("message")[0];

        var formDisabled = false;
		if (errorMessage && errorMessage.childNodes[0].nodeValue) {
			document.getElementById('paymentStatusMessage').innerHTML = errorMessage.childNodes[0].nodeValue;
			
			f = document.getElementById('checkoutPaymentForm');

			for (i = 0; i < f.elements.length; i++) {
				f.elements[i].disabled=false;
			}

			$('#checkoutBuyButtonLink').bind('click', sendPurchase);
		} else {
			var threedsecure = response.getElementsByTagName('ThreeDSecureRequest');
			var paypal = response.getElementsByTagName('PayPalRedirect');
			if (paypal && paypal.length > 0) {
				var url = paypal[0].getAttribute('url');
				document.location.href = decodeURIComponent(url);
				return false;
			}
			
			if (threedsecure && threedsecure.length > 0) {
				var authURL = threedsecure[0].getAttribute('acsurl');
				var authMD = threedsecure[0].getAttribute('md');
				var authPaReq = threedsecure[0].getAttribute('pareq');
				var iframe = document.getElementById('3DSecureResponseTarget');
				
				var form = document.createElement('form');
				form.setAttribute('name', 'threeDSecureForm');
				form.setAttribute('id', 'threeDSecureForm');
				form.setAttribute('method', 'post');
				form.setAttribute('target', '3DSecureResponseTarget');
				form.setAttribute('action', authURL);
				
				var PaReqField = document.createElement('input');
				with (PaReqField) {
					setAttribute('name', 'PaReq');
					setAttribute('type', 'hidden');
					setAttribute('value', authPaReq);
				}
				
				var TermUrlField = document.createElement('input');
				with (TermUrlField) {
					setAttribute('name', 'TermUrl');
					setAttribute('type', 'hidden');
					setAttribute('value', 'https://www.yesyesyes.org/index.php?module=main&page=3dpost');
				}
				
				var mdField = document.createElement('input');
				with (mdField) {
					setAttribute('name', 'MD');
					setAttribute('type', 'hidden');
					setAttribute('value', authMD);
				}
				
				form.appendChild(mdField);
				form.appendChild(PaReqField);
				form.appendChild(TermUrlField);
				
				document.getElementById("3dSecureContainer").appendChild(form);
				var form = document.getElementById("threeDSecureForm");
				
				document.getElementById('3dSecureContainer').style.display = '';
				
				form.submit();
				return false;
			}
			
			var order = response.getElementsByTagName("order")[0];
			var orderKey = order.getAttribute('key');
			var formDisabled = true;
			var link = '/confirmation.htm?initial=1&key=' + orderKey;
			var msg = '<br /><br />Thank you. Your payment was accepted.<br /><br />You will now be redirected to your order confirmation; if this does not happen within a few seconds please <a href="' + link + '">click here</a>.';
			document.getElementById('paymentEntryCell').style.display = 'none';
			document.getElementById('paymentStatusMessage').innerHTML = msg;
			document.getElementById('paymentStatusMessage').style.color = '#333333';
			document.location.href = link;
		}

		f = document.getElementById('checkoutForm');

		for (i = 0; i < f.elements.length; i++) {
			f.elements[i].disabled = formDisabled;
		}

		document.getElementById('processingMessage').style.display = 'none';
	} else {
		var t = document.getElementById('paymentStatusMessage');

		t.innerHTML = 'Please wait. Your transaction is being processed...';


	}
}

function complete3DSecure(orderKey) {
	document.getElementById('3dSecureContainer').style.display = 'none';
	if (orderKey) {
		var link = '/confirmation.htm?initial=1&key=' + orderKey;
		var msg = '<br /><br />Thank you. Your payment was accepted.<br /><br />You will now be redirected to your order confirmation; if this does not happen within a few seconds please <a href="' + link + '">click here</a>.';
		document.getElementById('paymentEntryCell').style.display = 'none';
		document.getElementById('paymentStatusMessage').innerHTML = msg;
		document.getElementById('paymentStatusMessage').style.color = '#333333';
		document.location.href = link;
	} else {
		var t = document.getElementById('paymentStatusMessage');
		t.innerHTML = 'An error occurred with 3D Secure processing. Please try again.';
		var formDisabled = false;

		var f = document.getElementById('checkoutPaymentForm');

		for (var i = 0; i < f.elements.length; i++) {
			f.elements[i].disabled=false;
		}
	}
}

function updateOrderDetails() {
	if (http.readyState == 4) {
		inCall = false;
		var response = http.responseXML;
		var error = response.getElementsByTagName("error")[0];
		var errorMessage = response.getElementsByTagName("message")[0];
		if (errorMessage && errorMessage.childNodes[0].nodeValue) {
			alert(errorMessage.childNodes[0].nodeValue);
			displayProcessingMessage('none');
			validateCheckout();
			return false;
		} else {
			refreshCheckoutAJAX();
			validateCheckout();
			return true;
		}
	}
}

function updateCheckout() {
	if (http.readyState == 4) {
		inCall = false;
		var response = http.responseXML;
		var error = response.getElementsByTagName("error")[0];
		var errorMessage = response.getElementsByTagName("message")[0];

		if (errorMessage && errorMessage.childNodes[0].nodeValue) {
			alert(errorMessage.childNodes[0].nodeValue);
			displayProcessingMessage('none');
			return false;
		} else {
            var i;
			var summary = response.getElementsByTagName('summary')[0];

			var totalItems = 0;
			var totalValue = 0.00;
			var cSymbol = '?';

			var deliveryOptionID = 0;
			var deliveryFee = 0.00;
			var deliveryTime = '';
			var deliveryNote = '';
			var freeDeliveryUpsell = false;
			var freeDeliveryOrderValue = 0;

			var multibuyDiscount = 0.00;

			for (i = 0; i< summary.childNodes.length; i++) {
				var temp = summary.childNodes[i];
				switch (temp.nodeName) {
					case 'totalValue':
						totalValue = temp.getAttribute("value");
						var checkMultibuy = temp.getAttribute("multibuyDiscount");
						if (checkMultibuy && !isNaN(checkMultibuy) && checkMultibuy > 0) {
							totalValue -= checkMultibuy;
							multibuyDiscount = checkMultibuy
						}
						break;
					case 'totalItems':
						totalItems = temp.getAttribute("count");
						break;
					case 'deliveryFee':
						if (temp.getAttribute("signedFor") == 1) {
							document.getElementById('signed_for').selectedIndex = 0;
							deliveryFee = temp.getAttribute("feeAmount");
						} else {
							document.getElementById('signed_for').selectedIndex = 1;
							deliveryFee = temp.getAttribute("feeAmountUS");
						}
						if (temp.getAttribute('signedOptional') == 0) {
							document.getElementById('signed_for').disabled = true;
						} else {
							document.getElementById('signed_for').disabled = false;
						}
						if (temp.getAttribute('upsellFreeDelivery') == 1) {
							freeDeliveryUpsell = true;
							freeDeliveryOrderValue = temp.getAttribute('freeDeliveryOrderValue');
						}
						deliveryTime = temp.getAttribute("timeScale");
						deliveryNote = temp.getAttribute("deliveryNote");
						deliveryOptionID = temp.getAttribute("optionID");
						break;
					case 'cartCurrency':
						cSymbol = decodeURIComponent(temp.getAttribute('symbol'));
						break;
					default:
						break;
				}
			}

			if (document.getElementById('upsellTargetOrderValue') && freeDeliveryOrderValue > 0) {
				var targetValue = cSymbol + parseInt(freeDeliveryOrderValue);
				document.getElementById('upsellTargetOrderValue').innerHTML = targetValue;
			}
			
			if (deliveryNote != '') deliveryNote += '<br />';
			deliveryNote += 'Estimated Delivery: ' + deliveryTime;

			var detailBlock = response.getElementsByTagName('itemDetail')[0];
			var items = detailBlock.getElementsByTagName('item');

			i = 0;

			var s = new Array();

			s[s.length] = '<table width="100%" border="0" cellspacing="0" cellpadding="2">';

			if (items.length==0) {
				s[s.length] = '<tr><td colspan="4" class="bodytext" style="padding: 0.5em; text-align: center;">You have nothing in your shopping basket!</td></tr>';
			} else {

			s[s.length] = '<tr>';
			s[s.length] = '<td class="bodytext"><strong>Item</strong></td>';
			s[s.length] = '<td width="35" class="bodytext"><strong>Qty</strong></td>';
			s[s.length] = '<td width="50" class="bodytext"><strong>Each</strong></td>';
			s[s.length] = '<td width="60" class="bodytext"><strong>Total</strong></td>';
			s[s.length] = '</tr>';

            var vid;
			for (i = 0; i < items.length; i++) {
				vid = items[i].getAttribute('variantID');
				s[s.length] = '<tr>';
				s[s.length] = '<td class="bodytext">' + items[i].getAttribute('productName');
				s[s.length] = ' (' + items[i].getAttribute('productSize') + ')';
				if (items[i].getAttribute('discountDesc')) {
					s[s.length] = ' - ' + items[i].getAttribute('discountDesc');
				}
				s[s.length] = '</td><td class="bodytext">';
				s[s.length] = '<table style="float: left; padding: 0px; margin: 0px;" cellpadding="0" cellspacing="0">';
				s[s.length] = '<tr><td class="bodytext" rowspan="2"><input type="text" onkeypress="blurOnEnter(this.form, this, event);" ';
				s[s.length] = 'onchange="updateCheckoutAJAX(this, \'' + vid + '\');" name="qtyField_' + vid + '" ';
				s[s.length] = 'id="qtyField_' + vid + '" class="checkoutqty" value="' + items[i].getAttribute('quantity') + '" /></td>';
				s[s.length] = '<td style="width: 16px; background-color: #EEEEEE;" align="center" class="bodytext"><span ';
				s[s.length] = 'onclick="changeQuantity(\'qtyField_' + vid + '\', 1);" ';
				s[s.length] = 'style="cursor: pointer; margin-left: 2px; font-size: 10px; font-weight: bold;">+</span></td>';
				s[s.length] = '</tr><tr><td style="background-color: #EEEEEE;" align="center" class="bodytext"><span ';
				s[s.length] = 'onclick="changeQuantity(\'qtyField_' + vid + '\', -1);" ';
				s[s.length] = 'style="cursor: pointer; margin-left: 2px; font-size: 10px; font-weight: bold;">-</span></td>';
				s[s.length] = '</tr></table>';
				s[s.length] = '</td>';
				s[s.length] = '<td class="bodytext">' + cSymbol + items[i].getAttribute('itemPrice') + '</td>';
				s[s.length] = '<td class="bodytext">' + cSymbol + items[i].getAttribute('lineTotal') + '</td>';
				s[s.length] = '</tr>';
			}

			}

			s[s.length] = '</table>';

			var deliveryBlock = response.getElementsByTagName('deliveryOptions')[0];
			var deliveryOptions = deliveryBlock.getElementsByTagName('option');

			var deliveryList = document.getElementById('deliveryOptionSelector');
			deliveryList.options.length = 0;

			var o = document.createElement('option');
			o.innerHTML = 'Please Select...';
			o.value = '';
			o.style.color = '#C0C0C0';
			deliveryList.appendChild(o);

			var validDelivery = 0;
			for (i = 0; i < deliveryOptions.length; i++) {
				o = document.createElement('option');
				o.innerHTML = deliveryOptions[i].getAttribute('optionDesc');
				o.value = deliveryOptions[i].getAttribute('feeID');
				if (deliveryOptionID == deliveryOptions[i].getAttribute('feeID')) {
					o.selected = 'selected';
					validDelivery = 1;
				}
				deliveryList.appendChild(o);
			}

			if (validDelivery != 1) {
				deliveryFee = '0.00';
				deliveryNote = '<span style=\"color: #bb0000;\">Please select a delivery option to continue.</span>';
			}

			document.getElementById('orderItemDetailHolder').innerHTML = s.join("");
			var totalOrderValue = parseFloat(totalValue) + parseFloat(deliveryFee);

			totalOrderValue = totalOrderValue.toFixed(2);
			document.getElementById('checkoutOrderTotal').innerHTML = cSymbol + totalOrderValue;
			document.getElementById('orderValueField').value = totalOrderValue;

			document.getElementById('deliveryChargeHolder').innerHTML = cSymbol + deliveryFee;
			document.getElementById('deliveryNoteHolder').innerHTML = deliveryNote;

			if (multibuyDiscount > 0) {
				document.getElementById('multibuyDiscount').innerHTML = '-' + cSymbol + parseFloat(multibuyDiscount).toFixed(2,10);
				document.getElementById('multibuyRow').style.display = '';
			} else {
				document.getElementById('multibuyDiscount').innerHTML = '';
				document.getElementById('multibuyRow').style.display = 'none';
			}
		}

		displayProcessingMessage('none');

		if (freeDeliveryUpsell) {
			displayUpsellDiv();
		} else {
			hideUpsellDiv();
		}
		
		validateCheckout();
	}
}

function disablePaymentForm() {
	f = document.getElementById('checkoutPaymentForm');

	for (var i = 0; i < f.elements.length; i++) {
		f.elements[i].disabled=true;
	}
}

function enablePaymentForm() {
	f = document.getElementById('checkoutPaymentForm');

	for (var i = 0; i < f.elements.length; i++) {
		f.elements[i].disabled=false;
	}
}

function updateCart() {
	if (http.readyState == 4) {
		inCall = false;
		if (!document.getElementById('cartSummaryItems')) return false;

		var response = http.responseXML;
		var error = response.getElementsByTagName("error")[0];
		var errorMessage = response.getElementsByTagName("message")[0];

		if (errorMessage && errorMessage.childNodes[0].nodeValue) {
			alert("Sorry, there was an error loading product information. Please try refreshing the page.\n\n(" + errorMessage.childNodes[0].nodeValue + ")");
			return false;
		} else {
			var cart = response.getElementsByTagName('cartSummary')[0];

			var items = cart.getElementsByTagName('items')[0];
			var value = cart.getElementsByTagName('totalValue')[0];

			//var cSymbol = document.getElementById('currencySymbol').value;
			var cSymbol = decodeURIComponent(cart.getAttribute('currencySymbol'));

			var iTarget = document.getElementById('cartSummaryItems');
			var vTarget = document.getElementById('cartSummaryValue');

			iTarget.innerHTML = items.childNodes[0].nodeValue;
			if (parseInt(items.childNodes[0].nodeValue) > 0) {
				iTarget.innerHTML += ' &nbsp; <a href="/checkout.htm">Details...</a>';
			}
			vTarget.innerHTML = cSymbol + value.childNodes[0].nodeValue;
		}
	}
}

function handlePriceRefresh() {
	if (http.readyState == 4) {
		inCall = false;
        var data;
		var response = http.responseXML;
		var error = response.getElementsByTagName("error")[0];
		var errorMessage = response.getElementsByTagName("message")[0];

		if (errorMessage && errorMessage.childNodes[0].nodeValue) {
			alert("Sorry, there was an error loading product information. Please try refreshing the page.\n\n(" + errorMessage.childNodes[0].nodeValue + ")");
			return false;
		} else {
			data = response.getElementsByTagName("response")[0].getElementsByTagName("currencyData")[0];

			var cSymbol = data.getElementsByTagName("symbol")[0].childNodes[0].nodeValue;

			document.getElementById('currencySymbol').value = cSymbol;

			if (response.getElementsByTagName("discountData").length > 0) {
				var discount = response.getElementsByTagName("discountData")[0];
				var msg = discount.getElementsByTagName("discountDescription")[0].childNodes[0].nodeValue;
				var amt = discount.getElementsByTagName("discountAmount")[0].childNodes[0].nodeValue;
				if (document.getElementById('productDiscountRow')) {
					document.getElementById('productDiscountInfo').innerHTML = "Includes " + amt + " discount!";
					document.getElementById('productDiscountRow').style.display = '';
				}
				if (document.getElementById('productDiscountRow2')) {
					document.getElementById('productDiscountInfo2').innerHTML = "Includes " + amt + " discount!";
					document.getElementById('productDiscountRow2').style.display = '';
				}
			}
			
			var data = response.getElementsByTagName("response")[0].getElementsByTagName("pricingData")[0];

			var items = data.getElementsByTagName("variantPrice");

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

				var vID    = items[i].getElementsByTagName('variant_id')[0].childNodes[0].nodeValue;
				var vSize  = items[i].getElementsByTagName('size')[0].childNodes[0].nodeValue;
				var vPrice = items[i].getElementsByTagName('price')[0].childNodes[0].nodeValue;

				if (document.getElementById('variantPricingLabel_' + vID)) {
					document.getElementById('variantPricingLabel_' + vID).innerHTML = vSize;
					document.getElementById('variantPricingValue_' + vID).innerHTML = cSymbol + ' ' + vPrice;
				}
			}

			var s = document.getElementById('productVariantID');
			getVariantDataAJAX(s.options[s.selectedIndex].value);

		}
	}
}

function handleVariantData() {
	if (http.readyState == 4) {
		inCall = false;
		var response = http.responseXML;

		var error = response.getElementsByTagName("error")[0];
		var errorMessage = response.getElementsByTagName("message")[0];

		if (errorMessage && errorMessage.childNodes[0].nodeValue) {
			alert("Sorry, there was an error loading product information. Please try refreshing the page.\n\n(" + errorMessage.childNodes[0].nodeValue + ")");
			return false;
		} else {
			var data = response.getElementsByTagName("variantData")[0];
			var vSize     = data.getElementsByTagName("size")[0].childNodes[0].nodeValue;
			var vSizeLong = data.getElementsByTagName("size_long")[0].childNodes[0].nodeValue;
			var vPicture  = data.getElementsByTagName("image")[0].childNodes[0].nodeValue;
			var pValue    = data.getElementsByTagName("price")[0].childNodes[0].nodeValue;
			var pSymbol   = data.getElementsByTagName("currencyCode")[0].childNodes[0].nodeValue;
			document.getElementById('productImage').src = '/pictures/products/' + vPicture;
			document.getElementById('basePrice').value = pValue;
			document.getElementById('currencySymbol').value = pSymbol;
			refreshCartAJAX();
			updatePriceQty();
		}
	}
}

function getVariantDataAJAX(id) {
	var action='getVariantData&id=' + id;
	sendRequest('handleVariantData', action);
}

function updateCurrencyAJAX(currencyCode, productID) {
	var action='refreshPricing&id=' + productID + '&code=' + currencyCode;
	sendRequest('handlePriceRefresh', action);
}

function addMultibuyToCart(id, q) {
	if (!q || isNaN(q) || q < 1) {
		q = 1;
	}
	var action = 'addMultibuyToCart&id=' + id + '&q=' + q;
	sendRequest('updateCart', action);
}

function addToCartAJAX(id, q) {
	var action='addToCart&id=' + id + '&q=' + q;
	sendRequest('updateCart', action);
}

function refreshCartAJAX(currencyCode) {
	if (currencyCode) {
		sendRequest('updateCart', 'refreshCart&currencyCode=' + currencyCode);
	} else {
		sendRequest('updateCart', 'refreshCart');
	}
}

function updateCheckoutAJAX(f, id) {
	if (f.id.indexOf('qtyField') != -1) {
		if (isNaN(f.value) || f.value < 0) {
			alert("Invalid quantity entered. Please check.");
			f.value = 1;
		}
	}
	var action = 'updateCheckout&v=' + id + '&q=' + f.value;
	sendRequest('updateCheckout', action);
}

function refreshCheckoutAJAX() {
	sendRequest('updateCheckout', 'returnFullCart');
}

function updateFullOrderDetailsAJAX(f) {
	var action = 'updateFullOrderDetails&' + $('#checkoutForm').serialize();
	sendRequest('updateOrderDetails', action);
}

function updateOrderDetailsAJAX(f) {
	var action = 'updateOrderDetails&f=' + encodeURIComponent(f.name) + '&v=' + encodeURIComponent(f.value);
	sendRequest('updateOrderDetails', action);
}

function blurOnEnter(f, e, evt) {
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
	if (charCode == 13 || charCode == 2) {
		e.blur();
		return false;
	}
	return true;
}

function updateDeliveryOptionAJAX(s){
	if (s.selectedIndex==0) {
		validateCheckout();
		return false;
	}
	var action='updateDeliveryOption&d=' + s.options[s.selectedIndex].value;
	sendRequest('updateCheckout', action);
	return true;
}


function displayProcessingMessage(display) {
	if (!display) display = 'inline';
	if (document.getElementById('processingMessage')) {
		document.getElementById('processingMessage').style.display=display;
	}
}

function setSpecialOfferPricingAJAX() {
	var action = 'getSessionCurrency';
	sendRequest('handleAjaxSOPricing', action);
}

function getPricingSetAJAX(type, currency) {
	var action = 'getPricingSet&type=' + type;
	if (currency) {
		action += '&setCurrency=' + currency;
	}
	sendRequest('handlePricingSetData', action);
}

function doNothing(){
	if (http.readyState == 4) {
		inCall = false;
	}
}

function acceptUpsellProduct() {
	var sel = document.getElementById('upsellProductID');
	if (!sel) {
		return false;
	}
	var id = sel.options[sel.selectedIndex].value;
	var action = 'addToCart&id=' + id + '&q=1';
	sendRequest('doNothing', action);
	sendRequest('updateCheckout', 'returnFullCart');
	document.getElementById('upsellAlertDiv').style.display = 'none';
}

function rejectUpsell() {
	sendRequest('doNothing', 'rejectUpsell');
	document.getElementById('upsellAlertDiv').style.display = 'none';
}

function getMultibuyPricing(type, currency) {
	var action = 'getMultibuyPricing&type=' + type;
	if (currency) {
		action += '&setCurrency=' + currency;
	}
	sendRequest('handleMultibuyPricing', action);
}

function convertToMultibuys() {
	$.ajax({
		type: "GET",
		url: "/index.php?module=main&page=ajaxRemote&action=convertToMultibuys",
		complete: function() {
			refreshCheckoutAJAX();
			$("#multibuyPromptDiv").hide();
		}
	});
}

function showMultibuyPrompt() {
	var offset = $("#orderItemDetailHolder").offset();
	var newTop = offset.top - $("#multibuyPromptDiv").height() + $("#orderItemDetailHolder").height();
	var newLeft = offset.left + $("#orderItemDetailHolder").width();
	if (newTop < 0) newTop = 0;	
	$("#multibuyPromptDiv").css( {
		"left":	(newLeft) + "px",
		"top": (newTop) + "px"
	});
	$("#multibuyPromptDiv").show();
}


