// JavaScript Document
var ctrlDown = false;
var subCat;
var tablePrinted = false;

$(function() {
	$("#buyNowFeedback").hide();
	
	subCat = sub_cat_only(window.location.href);
	//alert(subCat);
	if (subCat != null && subCat != "") { selectSubCat(subCat, 'load'); }
	
	setupProduct();
	
	$(".menuSubCat > li > h4 > a").click(function() {
		//$("#product").hide();
		var subCat = $(this).attr('subCat');
		var append;
		if (ctrlDown) { 
			append = 1;
		}
		selectSubCat(subCat, 'click', append);
	});
	
	
	if (subCat != null && subCat != "") { selectSubCatMap(subCat); }
	setupMiniMap();
	
	$("#headerRightUp").click(function() {
		
		
		if (Math.abs(curTop) < thumbsWindowHeight)
			{ totalY = Math.abs(curTop); }
		else
			{ totalY = thumbsWindowHeight; }
		
		if(!isScrolling && numThumbsVis > 12 && curTop < 0)
		{
			isScrolling = true;
			curTop = $("#headerThumbs").position().top;
			newTop = curTop + totalY;
			$("#headerThumbs").animate({ top: newTop }, function(){ isScrolling = false; curTop = $("#headerThumbs").position().top; });
		}
	});
	
	$("#headerRightDown").click(function() {
		curTop = $("#headerThumbs").position().top;
		remainingY = (thumbsHeight - thumbsWindowHeight + curTop) - 0;
		
		if (remainingY < thumbsWindowHeight)
			{ totalY = remainingY; }
		else
			{ totalY = thumbsWindowHeight; }
			
		if (!isScrolling && numThumbsVis > 12)
		{
			isScrolling = true;
			curTop = $("#headerThumbs").position().top;
			newTop = curTop - totalY;
			$("#headerThumbs").animate({ top: newTop }, function(){ isScrolling = false; curTop = $("#headerThumbs").position().top; });
		}
	});
	
	$('#footer').after("<div id='zoomOverlay'><div id='zoomOverlayImage'></div></div>");
	//$('#footer').after("<div id='zoomDebug'></div>");
	
	if(($('#divProduct').text()) != '')
	{
		$(document).bind("mousemove",showZoom);
		//$('#divProductImageLarge').bind("mousemove", showZoom);
		//$('#zoomOverlay').bind("mousemove", showZoom);
		var largeImg = $('#divProductImageLarge > img').attr('src');
		if (largeImg)
			{ switchProductPic(largeImg); }
	}
});

var zoomOverlayVeto = false;
var zoomOverlayOn = false;
var posx = 0;
var posy = 0;
var myWidth = 0, myHeight = 0;

showZoom = function(e) {
	if (!e) { var e = window.event; }
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) {
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	
	var imageOffset = $('#divProductImageLarge').offset();
	var imageW = $('#divProductImageLarge').width();
	var imageH = $('#divProductImageLarge').height();
	
	// Turn overlay on or off depending on it's position
	if(!zoomOverlayVeto && (posx > imageOffset.left && posx < (imageOffset.left + imageW) && posy > imageOffset.top && posy < (imageOffset.top + imageH)))
	{
		$("#zoomOverlay").css('left', posx - ($('#zoomOverlay').width() / 2));
		$("#zoomOverlay").css('top', posy - ($('#zoomOverlay').height() / 2));
		
		var offsetX = (posx - imageOffset.left);
		var offsetY = (posy - imageOffset.top);
		
		var offsetPx = (offsetX / imageW) * 100;
		var offsetPy = (offsetY / imageH) * 100;
		
		var bgPos = offsetPx + "% " + offsetPy + "%";
		$("#zoomOverlayImage").css('background-position', bgPos);
	
		$("#zoomOverlay").show();
		zoomOverlayOn = true;
	}
	else
	{
		$("#zoomOverlay").hide();
		zoomOverlayOn = false;
	}
};

var curIndex, curTop, newTop, numThumbsVis;
var thumbsHeight;
var thumbHeight = 70;
var thumbsWindowHeight = 210;
var isScrolling = false;
var minY, remainingY, totalY;

setupMiniMap = function() {
	$("#headerRight").show();
	
	// number of visible thumbs
	numThumbsVis = $(".thumb:visible").length;
	
	if (numThumbsVis > 12)
	{
		$("#headerRightUp").show();
		$("#headerRightDown").show();
	}
	
	// index of thumb with .current class
	curIndex = $(".thumb:visible").index($(".currThumb"));
	//alert(curIndex);
	
	$(".thumb").click(function() {
		var targetURL = this.id;
		if (subCat != null)
			{ targetURL += "#" + subCat; }
		pageTracker._trackEvent('product-mini-map', targetURL);
		window.location = targetURL; 
	});
	
	// height of all rows containing thumbnails
	thumbsHeight = Math.ceil($(".thumb:visible").length / 4) * thumbHeight;
	
	var totalY;
	// If .current is not on the first page, scroll to that page
	if(curIndex >= 12) {
		thumbScreen = Math.floor(curIndex / 12);
		var firstScroll = thumbScreen * - thumbsWindowHeight;
		
		var remainingY = (thumbsHeight - thumbsWindowHeight) * -1;
		
		
		if (remainingY > firstScroll)
			{ totalY = remainingY; }
		else
			{ totalY = firstScroll; }
		
		$("#headerThumbs").css('top',totalY);
		curTop = $("#headerThumbs").position().top;
		//$("#headerThumbs").animate({ top: totalY }, 1000, function() { curTop = $("#headerThumbs").position().top; });
	}
	
	// minimum up can be shifted, total height less the visible area
	minY = (thumbsHeight - thumbsWindowHeight) * -1;
	totalY = thumbsWindowHeight;
};



setupProduct = function() {
	var maxNameHeight = 0;
	$(".productColoursThumbnailName").each(function () {
		maxNameHeight = Math.max(maxNameHeight, $(this).height());
	});
	$(".productColoursThumbnailName").height(maxNameHeight);
	
	var maxThumbnailHeight = 0;
	$(".productColoursThumbnailContent").each(function () {
		maxThumbnailHeight = Math.max(maxThumbnailHeight, $(this).height());
	});
	//alert("heights: " + listHeights + "max height: " + maxHeight);
	$(".productColoursThumbnailContainer").height(maxThumbnailHeight);
	
/*	THIS WAS SET UP TO ALIGN THE THUMBNAILS TO THE BOTTOM OF THE CONTAINER
	var numThumbs = $(".productColoursThumbnailContainer").length;
	var rowThumbs = Math.ceil(numThumbs / 3);
	// alert("numThumbs (" + numThumbs + ") / 3 = rowThumbs (" + rowThumbs + ")");
	
	var summaryHeight = (rowThumbs * maxThumbnailHeight) + 30;
	//alert (betaHeight);
	$("#divProductSummary").css('padding-bottom', summaryHeight + "px");
*/	
	
	//$(".productBetaWindow:not(.productBetaWindowSelected)").hide();
	
	$(".productBetaTab").click(function() { 
		switchBetaWindow(this.id);
	});
	
	$(".productColoursThumbnailContent").click(function() {
		switchProductPic($(this).attr('id'));
	});
};

switchBetaWindow = function(clickedTab, allowScroll) {
	//alert('clickedTab: ' + clickedTab);
	var targetWindow = "#productBetaWindow" + clickedTab.substr(14, clickedTab.length);
	
	$(".productBetaTab").removeClass('productBetaTabSelected');
	$("#" + clickedTab).addClass('productBetaTabSelected');
	
	$(".productBetaWindow").hide().removeClass('productBetaWindowSelected');
	$(targetWindow).show().addClass('productBetaWindowSelected');
	
	
	
	/* VIRTUAL PAGE VIEW TRACKING for product beta tabs */
	var page = window.location.href;
	
	var tempStr = page;
	if (page.lastIndexOf('?')>0)
		{ tempStr = tempStr.substring(0, tempStr.lastIndexOf('?')); }
	
	var slash = '/';
	if (tempStr.match(/\\/))
		{ slash = '\\'; }
	
	var startPos = tempStr.lastIndexOf(slash);
	page += targetWindow;
	page = page.replaceAll('#', '/');
	page = page.substring(startPos, page.length);
	
	var tabSelected = targetWindow.substring(1, targetWindow.length);
	
	//alert(tabSelected);
	/*
	pageTracker._trackEvent('product-page-beta-tabs', tabSelected);
	pageTracker._trackEvent('product-page-beta', page);
	*/
	
	sizeVerticals();
	/*(allowScroll != false)
		scrollTo(0, $("#" + clickedTab).offset().top);
	*/
};

/* Function called by shop online / buy now dropdown */
switchProductPicSetup = function(url, color) {
    // enable the button once the user chooses an option.
    document.getElementById('btnSearchDealers').disabled=false;
    // build up the right picture URL by subbing in the color and then call switchProductPic to sub in this picture.
    var x = color.indexOf('-');
    if (x > 0) {
        color = color.substring(0, x-1);
        color = color.replaceAll(' ','-'); // replaceAll is a custom written extention to the replace function, which is written in init.js as String.prototype.replaceAll
    }
	if(color != "Pick One") // only do this if they've selected something other than "Pick One"
	{
		url = url.replace('COLOR', color);
		switchProductPic(url);
	}
};

/* Change large and loupe image */
switchProductPic = function(url) {
	//alert(url);
	$("#divProductImageLarge").children('img').attr('src', url);
	//pageTracker._trackEvent('load sub categories', page);
	var largeImg = url;
	largeImg = largeImg.replace('355W-png','995x1322');
	largeImg = largeImg.replace('.png','.jpg');
	$("#zoomOverlayImage").css('background-image', 'url(' + largeImg + ')');
};

selectSubCatMap = function(subCat) {
	//alert(subCat);
	if (subCat != null)
	{
		$(".thumb:not(." + subCat + ")").hide();
		$("."+subCat).show();
	}
};

selectSubCat = function(subCat, action, append) {
	/*
	$("#divSearchResultsList").show();
	$("#divProduct").hide();
	*/
	
	if(!$('#productUpper').length) // you're on a search result page
	{
		if (subCat == 'all')
		{
			$(".searchResult").show();
			$(".searchResultHeader").show();
			$(".menuSubCat > li > h4 > a").removeClass('current');
			$("h4 > a[subCat=all]").addClass('current');
		}
		else
		{
			if (!append) {
				$(".searchResult:not(." + subCat + ")").hide();
				$(".searchResultHeader:not(." + subCat + ")").hide();
				
				$(".menuSubCat > li > h4 > a").removeClass('current');
			}
			
			$("."+subCat).show();
			$("h4 > a[subCat=" + subCat + "]").addClass('current');
			
		}
		window.location = (subCat == 'all') ? "#" : "#" + subCat;
	}
	else
	{
		$(".menuSubCat > li > h4 > a").removeClass('current');
		$("h4 > a[subCat=" + subCat + "]").addClass('current');
	}
	
	if (subCat != 'all')
		{ $("#breadcrumbHeadlineSubCat").html("&nbsp;/&nbsp;" + '<a href="#' + subCat + '">' + subCat.replaceAll("_", " ") + "</a>"); }
	else
		{ $("#breadcrumbHeadlineSubCat").html(""); }
	
	/* VIRTUAL PAGE VIEW TRACKING for SUBCATs */
	var page = window.location.href;
	
	var tempStr = page;
	if (page.lastIndexOf('?')>0)
	    { tempStr = tempStr.substring(0, tempStr.lastIndexOf('?')); }
	
	var slash = '/';
	if (tempStr.match(/\\/))
		{ slash = '\\'; }
	
	var startPos = tempStr.lastIndexOf(slash);
	page = page.replace('#', '/');
	page = page.substring(startPos, page.length);
	
	//alert(page);
	//alert(action); // click happens when clicking on the subMenu (either causing a reload or not!)
	//alert(!$('#productUpper').length); // true = search result page, false = product page
	//alert(action=='click' && !$('#productUpper').length); // this is only true when clicking on the menu, and from a search result page
	
	if(action=='click' && !$('#productUpper').length)
		{ pageTracker._trackPageview(page); }
	else
	{
		//alert(page);
		pageTracker._trackEvent('load sub categories', page);
	}
	
	sizeVerticals();
};

buyNowFeedback = function (show, text, colour) {
	if(show)
	{
		$("#buyNowFeedback").text(text);
		switch(colour)
		{
			case 'red':
				$("#buyNowFeedback").css('background-color','#FF0000').css('color','#FFFFFF');
				break;
			case 'green':
				$("#buyNowFeedback").css('background-color','#CCCCCC').css('color','#000000');
				break;
		}
		$("#buyNowFeedback").slideDown(function() { sizeVerticals(); });
		setTimeout('buyNowFeedback(false);', 5000);
	}
	else { $("#buyNowFeedback").slideUp(function() { sizeVerticals(); }); }
		
	// examples:
	/*
		buyNowFeedback(false);
		buyNowFeedback(true, 'Sorry. This item is no longer in stock','red');
		buyNowFeedback(true, '1 x Field Jacket Coal XL added to cart','green');
	*/
};


//----------------------------------------------------------------------------------------//
/* YOUR CART FUNCTIONALITY */
//----------------------------------------------------------------------------------------//

clearEdits = function() {
	$(".yourCartEditForm").hide();
	
	$(".yourCartItemSpecs").show();
	$(".yourCartItemPrice").show();
	
	// ONLY SHOW EDIT DROPDOWNS IF THE ITEM ISN'T DELETED
	$(".yourCartItemEdit[deleted!=deleted]").show();
	
	// reset dropdowns?
	//$(".yourCartItemEditDD").
	
	if(document.body.id == "Checkout")
	{
		//$(".yourCartItemEdit").show();
		$(".yourCartItemSize").show();
		$(".yourCartItemQtyVal").show();
		$(".yourCartItemEditQty").hide();
		$(".yourCartItemColour").attr('colspan',1);
		$(".yourCartItemColourName").show();
		$(".btnYourCartItemEdit").hide();
	}
};
$(function() {
	
	$("#divAjaxFeedback")
	.ajaxSend(function(evt, request, settings){
		//$(this).append("<li>Starting request at " + settings.url + "</li>");
	}).ajaxComplete(function(evt, request, settings){
		//$(this).append("<li>response complete from " + settings.url + "</li>");
	}).ajaxError(function(event, request, settings, thrownError){
		//$(this).append("<li>Error requesting page " + settings.url + "</li>");
		//$(this).append(request.readyState);
		if ( 4==request.readyState) { // failed after data has received
			//alert("Sorry, there was an error while communicating with our servers.\nIf this problem persists please contact our support and mention an invalid AJAX response while communicating with\n" + settings.url);
		}
		else {
			alert("Sorry, there was an error while communicating with our servers.\nIf this problem persists please contact our support and mention a failed AJAX link to\n" + settings.url);
		}
		//window.location.reload(); // THIS WILL RESULT IN A LOOP

	});
	
	if($("#market").attr('market') == 'URBAN'){
	switch(document.body.id) // depends on whether you're on a product page or checkout page
	{
		case 'Product':
			if(($('#divProduct').text()) != '') // on a REAL single-product page
			{
				// btnAddToCart is in Buy Now form, not Your Cart
				$("#btnAddToCart").click(function() {
					$(this).attr('disabled', 'disabled');
					$(this).val('Adding...');
					$("#selBuyNow").attr('disabled', 'disabled');
					$("#buyNowSelector > #txtQTY").attr('disabled', 'disabled');
					// clear all edits
					clearEdits();
					
					// build add string
					var productAdd = {
						'action': 'add',
						'model':$('#selBuyNow').val(),
						'qty': $('#txtQTY').val()
					};
					//alert(dump(productAdd));
					
					// add a new product to the cart
					var RN = Math.floor(Math.random()* 9999);

					$.getJSON('AjaxResponse.aspx?Q=' + RN, productAdd, updateCart);
					
					// count number of items in cart display
					var curCount = $(".yourCartItem").length; // = 6
					//alert('curCount: ' + curCount);
				});
				
				$("#selBuyNow").change(function(){
					if ($(this).val() != '')
					{
						document.getElementById("btnAddToCart").disabled='';
						checkInStock();
						
						var largeImg = $("#divProductImageLarge > img").attr('src');
						var newImg = largeImg.substring(0, largeImg.lastIndexOf("/")) + "/";
						newImg += $("#productName").attr('mktgName').replaceAll(" ", "-");
						newImg += "-";
						var newColour = $("#selBuyNow > option:selected").text();
						//alert(newColour);
						newColour = newColour.substring(0, newColour.indexOf(" -")).replaceAll(" ", "-");
						newImg += newColour + ".png";
						//alert(newImg);
						$("#divProductImageLarge > img").attr('src',newImg);
						
						var largeImg = newImg;
						largeImg = largeImg.replace('355W-png','995x1322');
						largeImg = largeImg.replace('.png','.jpg');
						$("#zoomOverlayImage").css('background-image', 'url(' + largeImg + ')');
					}
					else
					{
						document.getElementById("btnAddToCart").disabled='disabled';
					}
				});
				
				$("#buyNowSelector > #txtQTY").keyup(function() {
					//buyNowFeedback(true, $(this).val(), 'green');
					checkInStock();
				});
				
				bindCartBehaviours("#productBetaWindowYourCart");
				
				// update cart (initial page load)
				var productStatus = {
						'action': 'refresh'
					};
				var RN = Math.floor(Math.random()* 9999);
				$.getJSON('AjaxResponse.aspx?Q=' + RN, productStatus, updateCart);
			}
			else // on a search result page
			{
				// update cart (initial page load)
				var productStatus = {
						'action': 'refresh'
					};
				var RN = Math.floor(Math.random()* 9999);
				$.getJSON('AjaxResponse.aspx?Q=' + RN, productStatus, updateCart);
			}
			break;
		case 'Checkout':
			bindCartBehaviours("#divOrder");
			
			// update cart (initial page load)
			var productStatus = {
					'action': 'refresh'
				};
			var RN = Math.floor(Math.random()* 9999);
			$.getJSON('AjaxResponse.aspx?Q=' + RN, productStatus, updateCart);
			
			$("#chkShipAsPrimary").click(function() {
				switch($("#chkShipAsPrimary").is(":checked"))
				{
					case true:
						//$("#divAddressShipping").hide();
						break;
					case false:
						//$("#divAddressShipping").show();
						break;
				}
				sizeVerticals();
			});

			$("#selShippingMethod").change(function(){
				// $(this).val() // = FEDEXGR, FEDEX2D
				var changeShipping = {
					'action': 'changeShip',
					'ShipVia': $(this).val()
				}
				tablePrinted = false;
				var RN = Math.floor(Math.random()* 9999);
				$.getJSON('AjaxResponse.aspx?Q=' + RN, changeShipping, updateCart);
			});
			
			break;
		case 'Confirmation':
			var productConfirm = {
				'action': 'confirm',
				'OrderNo': $("#spanOrderNo").text()
			};
			var RN = Math.floor(Math.random()* 9999);
			$.getJSON('AjaxResponse.aspx?Q=' + RN, productConfirm, updateCart);
			break;
	} // end of switch
	} // end of if
   
});

checkInStock = function () {
	var inputQty = $("#buyNowSelector > #txtQTY").val();
	if (isNumeric(inputQty))
	{
		inputQty = parseInt(inputQty,10);
		//buyNowFeedback(true,inputQty,'green');
		//buyNowFeedback(true, 'Acceptable','green');
		if ($('#selBuyNow').val() != '')
		{
			var inStock = $('#selBuyNow').val();
			inStock = inStock.substr(inStock.indexOf(':')+1);
			//buyNowFeedback(true, "inStock=" + inStock, 'green');
			if (inputQty > inStock)
			{
				var overMsg = "You have exceeded the maximum quantity available, only " + inStock + " available.";
				buyNowFeedback(true,overMsg,'red');
				//$("#buyNowSelector > #txtQTY").val(inStock);
				$("#buyNowSelector > #txtQTY").val(inStock + '');
			}
		}
			
	}
	else
	{
		// not numeric entry
		buyNowFeedback(true, "Please enter only numbers in the quantity field", 'red');
		$("#buyNowSelector > #txtQTY").val('');
	}	
};

bindCartBehaviours = function(scope) {
	// -------- DELETE -------- //
	$(".yourCartDeleteLink", scope).unbind('click');
	$(".yourCartDeleteLink", scope).click(function() {
		var cartItem = $(this).closest('.yourCartItem').attr('id');
		//alert(cartItem); // 'cartItem3'
		//alert(cartItem.substring(12));
		// clear any other edits in progress (hide their edits, and show their specs/price/links
		clearEdits();
		
		// SEND DELETE COMMAND WITH AJAX TO CART
		var modelNo = $(this).closest('.yourCartItem').attr('model');
		var ajaxDelete = {
			'action': 'delete',
			'cartItem': cartItem.substring(12)
		};
		// alert(dump(ajaxDelete));
		// Submit delete
		var RN = Math.floor(Math.random()* 9999);
		$.getJSON('AjaxResponse.aspx?Q=' + RN, ajaxDelete, updateCart);
		
		// hide edit links
		$("#" + cartItem + "Edit").hide();
		$("#" + cartItem + "Delete").hide();
		
	});
	
	// -------- UNDO -------- //
	$(".yourCartUndoLink", scope).unbind('click');
	$(".yourCartUndoLink", scope).click(function() {
		var cartItem = $(this).closest('.yourCartItem').attr('id');
		//alert(cartItem); // 'cartItem3'
		
		// clear any other edits in progress (hide their edits, and show their specs/price/links
		clearEdits();
		
		// SEND UNDO COMMAND WITH AJAX TO CART - WITH ORIGINAL POSITION IN ARRAY SPECIFIED
		var productUndo = {
			'action': 'undo',
			'cartItem': cartItem.substring(cartItem.length - 1)
		};
		//alert(dump(productUndo));
		
		// submit undo
		var RN = Math.floor(Math.random()* 9999);
		$.getJSON('AjaxResponse.aspx?Q=' + RN, productUndo, updateCart);
		
		// hide undo links
		$("#" + cartItem + "Undo").hide();
	});
	
	// -------- EDIT -------- //
	$(".yourCartEditLink", scope).unbind('click');
	$(".yourCartEditLink", scope).click(function() {
		var cartItem = $(this).closest('.yourCartItem').attr('id');
		//alert(cartItem); // 'cartItem3'
		
		// clear any other edits in progress (hide their edits, and show their specs/price/links
		clearEdits();
		
		// hide specs, price, and edit
		switch(document.body.id)
		{
			case "Product":
				$("#" + cartItem + "Edit").fadeOut();
				$("#" + cartItem + "Price").fadeOut();
				$("#" + cartItem + "Specs").fadeOut(function(){$("#" + cartItem + "EditForm").fadeIn();});
				break;
			case "Checkout":
				$("#" + cartItem + "Edit").hide();
				$("#" + cartItem + "Size").hide();
				$("#" + cartItem + "QtyVal").hide();
				$("#" + cartItem + "Colour").attr('colspan',2);
				$("#" + cartItem + "ColourName").hide();
				$("#" + cartItem + "EditForm").show();
				$("#" + cartItem + "EditQty").show();
				$("#btnY" + cartItem.substring(1) + "Edit").show();
		}
	});
	
	// enable "Update" button
	$(".yourCartItemEditDD, .yourCartItemEditQty", scope).unbind('change');
	$(".yourCartItemEditDD, .yourCartItemEditQty", scope).change(function() {
		var cartItem = $(this).closest('.yourCartItem').attr('id');
		var targetUpdateBtn = "btnY" + cartItem.substring(1) + "Edit"; // target = btnCartItem1Edit
		document.getElementById(targetUpdateBtn).disabled=false;
	});
	$(".yourCartItemEditQty", scope).unbind('keydown');
	$(".yourCartItemEditQty", scope).keydown(function() {
		var cartItem = $(this).closest('.yourCartItem').attr('id');
		var targetUpdateBtn = "btnY" + cartItem.substring(1) + "Edit"; // target = btnCartItem1Edit
		document.getElementById(targetUpdateBtn).disabled=false;
	});
	
	$(".btnYourCartItemEdit").unbind('click');
	$(".btnYourCartItemEdit").click(function(){
		$(this).attr('disabled','disabled');
		var cartItem = $(this).closest('.yourCartItem').attr('id'); // cartItem = "cartItem3"
		var modelNo = $(this).closest('.yourCartItem').attr('model');
		
		// build add string
		var productEdit = {
			'action': 'edit',
			'cartItem': cartItem.substring(cartItem.length-1),
			'SKU': $('#' + cartItem + "EditDD").val(),
			'QTY': $('#' + cartItem + "EditQty").val()
		};
		//alert(dump(productEdit));
		
		// submit edit to server and update response
		var RN = Math.floor(Math.random()* 9999);
		$.getJSON('AjaxResponse.aspx?Q=' + RN, productEdit, updateCart);
	});

};

reEnableBuyNow = function () {
	$("#btnAddToCart").attr('disabled', '');
	$("#btnAddToCart").val('Add to Cart');
	$("#selBuyNow").attr('disabled', '');
	$("#buyNowSelector > #txtQTY").attr('disabled', '');
};

$(function() {
	//alert('append');
	
	//$("body").append("<div id=\"ajaxFb\" style=\"position:fixed; right: 0; top: 0;\">Ajax Feedback Here</div>");
	/*
	$("#ajaxFb").ajaxComplete(function(event,request, settings){
		$(this).html(event);
	});
	*/
	
});

updateCart = function(response, status) {
	//$("#divAjaxFeedback").append(dump(response));

	var feedbackText = '';
	var feedbackColour = '';
	
	if(response.success && response.type != 'empty')
	{
		feedbackColour = 'green';
		
		if (!tablePrinted)
		{
			switch(document.body.id)
			{
				case 'Checkout': // ---------------------- CHECKOUT PAGE --------------------- //
					$("#checkoutTable").remove();
					$("#divOrder").append(buildCheckoutTable());
					break;
				case 'Confirmation':
					$("#divOrder").append(buildCheckoutTable(true));				
					break;
			}
			tablePrinted = true;
		}
		
		switch(response.type)
		{
			case 'add': // add a single item to the end of the array
				var reAdd = setTimeout("reEnableBuyNow()", 600);
				
				feedbackText = response.message; 
				
				for(var i in response.cartItems) // i will be the index of the array
				{
					$("#productBetaWindowYourCart").append(buildCartItemHTML(response.cartItems[i], false));
					$("#yourCartItem" + response.cartItems[i].cartItem).fadeIn();
				}
				break;
			case 'edit': // update one item in a specific position with fade out/in behaviour for image if it's changed
				feedbackText = response.message;
				for(var i in response.cartItems) // i will be the index of the array
				{
					var cartItem = "yourCartItem" + response.cartItems[i].cartItem;
					// check to see if photo different
					if(response.cartItems[i].photo != $("#" + cartItem + "Photo > img").attr('src'))
					{
						//alert('image different');
						$("#" + cartItem + "Photo").fadeOut(function(){$("#" + cartItem + "Photo > img").attr('src', response.cartItems[i].photo);});
						
						$("#" + cartItem + "Photo").fadeIn();
					}
					
					// update Specs and Price
					$("#" + cartItem + "Colour").text(response.cartItems[i].colorName);
					//alert(response.cartItems[i].colourHex);
					$("#" + cartItem + "Colour").css('color',"#" + response.cartItems[i].colorHex);
					$("#" + cartItem + "Size").text(response.cartItems[i].size);
					
					switch(document.body.id)
					{
						case "Product":
							$("#" + cartItem + "Qty").text(response.cartItems[i].QTY);
							break;
						case "Checkout":
							$("#" + cartItem + "QtyVal").text(response.cartItems[i].QTY);
							break;
					}
					
					$("#" + cartItem + "EditQty").val(response.cartItems[i].QTY);
					var price = '';
					if(document.body.id == "Product")
						{ price += response.cartItems[i].curSymbol; }
					price += response.cartItems[i].price.toFixed(2);
					$("#" + cartItem + "Price").text(price);
					
					if(document.body.id == "Checkout")
						{ $("#" + cartItem + "SubTotal").text(response.cartItems[i].extension.toFixed(2)); }
					
					clearEdits();
				}
				
				//alert($("#selBuyNow").val());
				
				if($("#selBuyNow").val() != '')
				{
					$("#btnAddToCart").attr('disabled', '');
					$("#selBuyNow").attr('disabled', '');
					$("#buyNowSelector > #txtQTY").attr('disabled', '');
				}
				
				break;
			case 'delete':
				var cartItem = "yourCartItem" + response.cartItems[0].cartItem;
				
				// hide edit/delete links
				$("#" + cartItem + "Edit").attr('deleted','deleted');
				$("#" + cartItem + "Delete").attr('deleted','deleted');
				
				// show undo links
				$("#" + cartItem + "Undo").show();
				
				// fade item out
				//$("#" + cartItem).fadeTo('fast', 0.3);
				$("#" + cartItem + "Photo > img").fadeTo('fast', 0.3);
				$("#" + cartItem + "Name").fadeTo('fast', 0.3);
				$("#" + cartItem + "Specs").fadeTo('fast', 0.3);
				$("#" + cartItem + "Price").fadeTo('fast', 0.3, function(){$("#" + cartItem + "Photo").css('background-image',"url('graphics/the-v-x.gif')");});
				
				if(document.body.id == "Checkout")
				{
					$("#" + cartItem + "ColourName").fadeTo('fast', 0.3);
					$("#" + cartItem + "Size").fadeTo('fast', 0.3);
					$("#" + cartItem + "Qty").fadeTo('fast', 0.3);
					$("#" + cartItem + "SubTotal").fadeTo('fast', 0.3);
					
					$("#" + cartItem + "Name").addClass('strike');
					$("#" + cartItem + "Size").addClass('strike');
					$("#" + cartItem + "ColourName").addClass('strike');
					$("#" + cartItem + "Qty").addClass('strike');
					$("#" + cartItem + "Price").addClass('strike');
					$("#" + cartItem + "SubTotal").addClass('strike');
				}
				
				break;
			case 'undo':
				var cartItem = "yourCartItem" + response.cartItems[0].cartItem;
				
				// fade item in
				//$("#" + cartItem).fadeTo('fast', 1);
				$("#" + cartItem + "Photo > img").fadeTo('fast', 1);
				$("#" + cartItem + "Name").fadeTo('fast', 1);
				$("#" + cartItem + "Specs").fadeTo('fast', 1);
				$("#" + cartItem + "Price").fadeTo('fast', 1, function(){$("#" + cartItem + "Photo").css('background-image',"none");}); // make sure background "X" is gone, just in case of weird fast-clicking...
				// remove background "X"
				$("#" + cartItem + "Photo").css('background-image',"none");
				
				if(document.body.id == "Checkout")
				{
					$("#" + cartItem + "ColourName").fadeTo('fast', 1);
					$("#" + cartItem + "Size").fadeTo('fast', 1);
					$("#" + cartItem + "Qty").fadeTo('fast', 1);
					$("#" + cartItem + "SubTotal").fadeTo('fast', 1);
					
					$("#" + cartItem + "Name").removeClass('strike');
					$("#" + cartItem + "Size").removeClass('strike');
					$("#" + cartItem + "ColourName").removeClass('strike');
					$("#" + cartItem + "Qty").removeClass('strike');
					$("#" + cartItem + "Price").removeClass('strike');
					$("#" + cartItem + "SubTotal").removeClass('strike');
				}
				
				// show edit links
				$("#" + cartItem + "Edit").show();
				$("#" + cartItem + "Edit").attr('deleted','not');
				$("#" + cartItem + "Delete").show();
				$("#" + cartItem + "Delete").attr('deleted','not');
				break;
			case 'refresh': // clear whole cart and replace it
				//feedbackText = 'refresh cart!';
				//alert(dump(response));
				if(document.body.id=="Product" && ($('#divProduct').text()) == '')
				{
					
				}
				else
				{
					for(var i in response.cartItems) { // i will be the index of the array
						switch(document.body.id)
						{
							case 'Product':
								$("#productBetaWindowYourCart").append(buildCartItemHTML(response.cartItems[i]));
								break;
							case 'Checkout':
								$("#checkoutTable").append(buildCheckoutItemHTML(response.cartItems[i]));
								break;
							case 'Confirmation':
								$("#checkoutTable").append(buildCheckoutItemHTML(response.cartItems[i], true));
								break;
						}
					}
				}
				break;
		}
		
		
		switch(document.body.id)
		{
			case 'Product':
				bindCartBehaviours("#productBetaWindowYourCart");
				
				// cartStatusCheckout is the one in the Buy Now chunk, not the Your Cart one
				//$("#cartStatusCheckout:hidden").show();
				
				var cartStatus = response.summary.totalQty + ' item';
				if(response.summary.totalQty > 1)
					{ cartStatus += 's'; }
				cartStatus += ' in Your Cart';
				//alert(dump(response.summary));
				$("#cartStatus").html(cartStatus);
				
				
				
				
				// update summary
				buildCartTalliesHTML(response.summary);
				
				// switch betaWindow to Cart tab
				if(response.summary.totalQty > 0)
				{
					$("#productBetaTabYourCart").removeClass('cartEmpty');
					switchBetaWindow("productBetaTabYourCart", false);
					$("#divSiloCartStatusMsg").html("You have " + cartStatus + ".");
					$("#divSiloCartStatus").show();
				}
				break;
			case 'Checkout': // ---------------------- CHECKOUT PAGE --------------------- //
				buildCheckoutTalliesHTML(response.summary);
				
				if(response.summary.CADTotal)
				{
					$("#UcCreditCard1_lblPaymentAmount").html(response.summary.CADTotal.toFixed(2));
					$("#canadianExchanged").html(response.summary.CADTotal.toFixed(2));
					/*$("#UcCreditCard1_lblPaymentAmount").html(response.cartItems[0].curSymbol + "&nbsp;" + response.summary.CADTotal.toFixed(2));*/
				}
				
				bindCartBehaviours("#divOrder");
				break;
			case 'Confirmation':
				buildCheckoutTalliesHTML(response.summary, true);
				
				break;
		}
		
		sizeVerticals();
			
	}
	else if (response.success && response.type=='empty') {}
	else // response.success!=true && response.type != 'empty'
	{
		////////////////////////// FAILED RESPONSE HANDLING
		
		// what if:
		// - delete or undo command fails on product page
		// - tried to add more than there is in stock
		
		//alert("response.success != true");
		//alert(dump(response));
		alert("There is a problem communicating with the server, please try again.");
		window.location.reload();
		feedbackColour = 'red';
		
		switch(response.type)
		{
			case 'refresh':
				$("#yourCartSummary").hide();
				$("#productBetaWindowYourCart").html('<p style="color: #FF0000">There was an error updating your cart, please try refreshing the page.</p>');
				break;
			case 'add':
				feedbackText = response.message;
				break;
			case 'edit':
				$(this).attr('disabled','');
				// give some feedback that edit failed
				break;
			case 'delete':
				//var cartItem = "yourCartItem" + response.cartItems[0].cartItem;
				
				clearEdits();
				// re-show  edit links
				/*
				$("#" + cartItem + "Edit").show();
				$("#" + cartItem + "Delete").show();
				*/
				// re-hide undo link
				$("#" + cartItem + "Undo").hide();
				
				feedbackText = response.message;
				//feedbackText = "Failed to delete selected item from your cart, please try again";
				break;
			case 'undo':
				var cartItem = "yourCartItem" + response.cartItems[0].cartItem;
				// re-show undo links
				$("#" + cartItem + "Undo").show();
				
				// re-hide edit/delete link
				$("#" + cartItem + "Edit").hide();
				$("#" + cartItem + "Delete").hide();
				break;
		}
	}
	
	if(feedbackText != '')
	{
		//alert(feedbackText);
		buyNowFeedback(true, feedbackText, feedbackColour);
	}
	
};

buildCartTalliesHTML = function(summary) {
	//alert('build summaries');
	$("#yourCartTallies").empty();
	
	if (summary.cartSubTotal != summary.cartTotal) {
		$("#yourCartTallies").append('<div id="yourCartSubTotalHeader">Sub-Total:</div><div id="yourCartSubTotal">' + summary.cartSubTotal.toFixed(2) + '</div>');
	}
	
	for(var t in summary.cartTaxes)
	{
		$("#yourCartTallies").append('<div id="yourCartTax' + t + 'Header" class="yourCartTaxHeader">' + summary.cartTaxes[t].name + ':</div><div id="yourCartTax' + t + '"class="yourCartTax">' + summary.cartTaxes[t].value.toFixed(2) + '</div>');
	}
	
	if (summary.cartShipping != 0 && summary.cartShipping != '')
		{ $("#yourCartTallies").append('<div id="yourCartShippingHeader">Est. Shipping</div><div id="yourCartShipping">' + summary.cartShipping.toFixed(2) + '</div>'); }
	
	$("#yourCartTallies").append('<div id="yourCartTotalHeader">Total</div><div id="yourCartTotal">' + summary.cartTotal.toFixed(2) + '</div>');
	$("#yourCartTallies").append('<div id="yourCartCurrency">&nbsp;' + summary.cartCurrency + '</div>');
};


buildCartItemHTML = function(cartItem, visible) {
	//alert(dump(response.cartItems[i]));
	var cartItemHTML = '';
	cartItemHTML = '<div id="yourCartItem' + cartItem.cartItem + '" class="yourCartItem yCI" model="' + cartItem.model + '"';
	
	if(visible==false)
		{ cartItemHTML += ' style="display: none;"'; }
	
	cartItemHTML += '>';
	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'Photo" class="yourCartItemPhoto"><img src="' + cartItem.photo + '" /></div>';
	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'Name" class="yourCartItemName yCIN">' + cartItem.name + '</div>';
	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'Specs" class="yourCartItemSpecs yCIS"><span id="yourCartItem' + cartItem.cartItem + 'Colour" class="yourCartColourName yCCN" style="color: #' + cartItem.colorHex + ';">' + cartItem.colorName + '</span> <span id="yourCartItem' + cartItem.cartItem + 'Size">' + cartItem.size + '</span> x <span id="yourCartItem' + cartItem.cartItem + 'Qty" class="yourCartItemQty">' + cartItem.QTY + '</span></div>';
	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'Price" class="yourCartItemPrice yCIP">' + cartItem.curSymbol + cartItem.price.toFixed(2) + '</div>';
	
	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'EditForm" class="yourCartEditForm yCEF">';
	cartItemHTML += '	<select id="yourCartItem' + cartItem.cartItem + 'EditDD" class="yourCartItemEditDD yCIEDD" name="yourCartItem1EditDD">';
	
	for(var j in cartItem.editOptions)
	{
		if(cartItem.editOptions[j].value!=null)
		{
			cartItemHTML += '<option value="' + cartItem.editOptions[j].value + '" inStock="' + cartItem.editOptions[j].inStock + '"';
			
			if(cartItem.editOptions[j].selected)
			{
				//alert(cartItem.editOptions[j].label);
				cartItemHTML += ' selected="selected"';
			}
			
			if(cartItem.editOptions[j].inStock <= 0)
			{
				//alert(cartItem.editOptions[j].label);
				cartItemHTML += ' disabled="disabled"';
			}
			
			cartItemHTML += '>' + cartItem.editOptions[j].label + '</option>';
		}
	}
	
	cartItemHTML += '	</select>';
	cartItemHTML += '	<div id="yourCartItem' + cartItem.cartItem + 'EditQtyLabel" class="yourCartItemEditQtyLabel">Qty:</div>';
	cartItemHTML += '	<input class="yourCartItemEditQty" name="yourCartItem' + cartItem.cartItem + 'EditQty" type="text" id="yourCartItem' + cartItem.cartItem + 'EditQty" value="' + cartItem.QTY + '" size="1" maxlength="2" />';
	cartItemHTML += '	<div id="yourCartEditCart"><input id="btnYourCartItem' + cartItem.cartItem + 'Edit" name="btnYourCartItem' + cartItem.cartItem + 'Edit" class="btnYourCartItemEdit" type="button" value="Update"';
	cartItemHTML += ' disabled="disabled"';
	cartItemHTML += '/></div>';
	cartItemHTML += '</div>';
	
	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'Edit" class="yourCartItemEdit yCIE"><a class="yourCartEditLink" href="javascript:;">Edit</a> :: <a class="yourCartDeleteLink" href="javascript:;">Delete</a></div>';
	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'Undo" class="yourCartItemUndo"><a class="yourCartUndoLink" href="javascript:;">Undo</a></div>';
	cartItemHTML += '</div>';
	
	return cartItemHTML;
};

buildCheckoutTable = function(confirmationPage) {
	var checkoutTable = '';
	checkoutTable += '<table id="checkoutTable" width="100%" border="1" cellspacing="0" cellpadding="2" align="center">';
	if(confirmationPage)
		{ checkoutTable += '<tr id="checkoutTableHeaders"><td>Image</td><td>Description</td><td class="text-center">Color</td><td class="text-center">Size</td><td class="text-center">Qty</td><td class="text-right">Cost</td><td class="text-right">Total</td></tr>'; }
	else
	{
		checkoutTable += '<tr id="checkoutTableHeaders"><td>Image</td><td>Description</td><td class="text-center">Color</td><td class="text-center">Size</td><td class="text-center">Qty</td><td class="text-center">Edit</td><td class="text-center">Delete</td>';
	
		//checkoutTable += '<td class="text-center">Save For Later</td>';
		checkoutTable += '<td class="text-center">In Stock</td><td class="text-right">Cost</td><td class="text-right">Total</td></tr>';
	}
	
		
	checkoutTable += '</table>';
	return checkoutTable;
};

buildCheckoutTalliesHTML = function(summary, confirmationPage) {
	$(".yourCartCheckoutTaxHeader").remove();
	$("#yourCartCheckoutShipping").remove();
	$("#yourCartCheckoutTotal").remove();
	$("#yourCartCheckoutSubTotal").remove();
	var colspan = (confirmationPage) ? 4 : 7;
	
	if(summary.cartSubTotal != summary.cartTotal)
	{
		$("#checkoutTable").append('<tr id="yourCartCheckoutSubTotal" class="yourCartcheckoutSubTotalHeader"><td>&nbsp;</td><td colspan="' + colspan + '">Sub Total</td><td class="text-right">&nbsp;</td><td class="text-right">' + summary.cartSubTotal.toFixed(2) + '</td></tr>');
	}
	
	for(var t in response.summary.cartTaxes)
	{
		$("#checkoutTable").append('<tr id="yourCartCheckoutTax' + t + '" class="yourCartCheckoutTaxHeader"><td>&nbsp;</td><td colspan="' + colspan + '">' + summary.cartTaxes[t].name + '</td><td class="text-right">' + summary.cartTaxes[t].rate.toFixed(2) + '</td><td class="text-right">' + summary.cartTaxes[t].value.toFixed(2) + '</td></tr>');
	}
	
	var currencyLabel = '';
	if(summary.cartCurrency != '' && summary.cartCurrency != null)
		{ currencyLabel = ' ' + summary.cartCurrency; }
	
	if (summary.cartShipping != 0 && summary.cartShipping != '')
	{
		$("#checkoutTable").append('<tr id="yourCartCheckoutShipping"><td>&nbsp;</td><td colspan="' + (colspan+1) + '">Shipping</td><td class="text-right">' + summary.cartShipping.toFixed(2) + '</td></tr>');
		
	}
	
	$("#checkoutTable").append('<tr id="yourCartCheckoutTotal"><td>&nbsp;</td><td colspan="' + (colspan+1) + '">Total' + currencyLabel + '</td><td class="text-right">' + summary.cartTotal.toFixed(2) + '</td></tr>');
};

buildCheckoutItemHTML = function(cartItem, confirmationPage) {
	//alert(dump(response.cartItems[i]));
	var cartItemHTML = '';
	cartItemHTML = '<tr id="yourCartItem' + cartItem.cartItem + '" class="yourCartItem" model="' + cartItem.model + '">';
	
	var cartItemPhoto = cartItem.photo;
	
	if ("https:" == document.location.protocol)
		{ cartItemPhoto = cartItemPhoto.replace("http:", "https:"); }
	//? "https://ssl." : "http://www."
	
	cartItemHTML += '	<td id="yourCartItem' + cartItem.cartItem + 'Photo" class="yourCartItemPhoto"><img src="' + cartItemPhoto + '" /></td>';
	cartItemHTML += '	<td id="yourCartItem' + cartItem.cartItem + 'Name" class="yourCartItemName">' + cartItem.name + '</td>';
	
	
	
	cartItemHTML += '	<td id="yourCartItem' + cartItem.cartItem + 'Colour" class="yourCartItemColour text-center"><div id="yourCartItem' + cartItem.cartItem + 'ColourName" class="yourCartItemColourName" style="color: #' + cartItem.colorHex + ';">' + cartItem.colorName + "</div>";

	cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'EditForm" class="yourCartEditForm yCEF">';
	cartItemHTML += '	<select id="yourCartItem' + cartItem.cartItem + 'EditDD" class="yourCartItemEditDD" name="yourCartItem1EditDD">';
	for(var j in cartItem.editOptions)
	{
		if(cartItem.editOptions[j].value!=null)
		{
			cartItemHTML += '<option value="' + cartItem.editOptions[j].value + '"';
			if(cartItem.editOptions[j].selected)
			{
				//alert(cartItem.editOptions[j].label);
				cartItemHTML += ' selected="selected"';
			}
			if(cartItem.editOptions[j].inStock <= 0)
			{
				//alert(cartItem.editOptions[j].label);
				cartItemHTML += ' disabled="disabled"';
			}
			cartItemHTML += '>' + cartItem.editOptions[j].label + '</option>';
		}
	}
	cartItemHTML += '	</select></div>' + '</td>';
	
	cartItemHTML += '	<td id="yourCartItem' + cartItem.cartItem + 'Size" class="yourCartItemSize text-center">' + cartItem.size + '</td>';
	
	cartItemHTML += '	<td id="yourCartItem' + cartItem.cartItem + 'Qty" class="yourCartItemQty text-center"><div id="yourCartItem' + cartItem.cartItem + 'QtyVal" class="yourCartItemQtyVal">' + cartItem.QTY + "</div>";
	//cartItemHTML += '	<div id="yourCartItem' + cartItem.cartItem + 'EditQtyLabel" class="yourCartItemEditQtyLabel">Qty:</div>';
	if(!confirmationPage)
		{ cartItemHTML += '	<input class="yourCartItemEditQty yCIEQ-CO text-center" name="yourCartItem' + cartItem.cartItem + 'EditQty" type="text" id="yourCartItem' + cartItem.cartItem + 'EditQty" value="' + cartItem.QTY + '" size="1" maxlength="2" />'; }
	cartItemHTML += '	</td>';
	
	if(!confirmationPage)
	{
		cartItemHTML += '	<td>';
		cartItemHTML += '<div id="yourCartItem' + cartItem.cartItem + 'Edit" class="yourCartItemEdit text-center"><a class="yourCartEditLink" href="javascript:;">Edit</a></div>';
		cartItemHTML += '	<div id="yourCartEditCart" class="text-center"><input id="btnYourCartItem' + cartItem.cartItem + 'Edit" name="btnYourCartItem' + cartItem.cartItem + 'Edit" class="btnYourCartItemEdit bYCIE-CO" type="button" value="Update"';
		cartItemHTML += ' disabled="disabled"';
		cartItemHTML += '/></div>';
		cartItemHTML += '	</td>';
		cartItemHTML += '	<td><div id="yourCartItem' + cartItem.cartItem + 'Delete" class="yourCartItemEdit text-center"><a class="yourCartDeleteLink" href="javascript:;">Delete</a></div>';
		cartItemHTML += '	<div id="yourCartItem' + cartItem.cartItem + 'Undo" class="yourCartItemUndo text-center"><a class="yourCartUndoLink" href="javascript:;">Undo</a></div>';
		cartItemHTML += '	</td>';
		
		/*
		cartItemHTML += '	<td class="text-center">'
		cartItemHTML += '<input type="checkbox" name="chkBuyNow" id="chkBuyNow" checked="checked" />';
		cartItemHTML += '<a href"javascript:;">Save For Later</a>';
		cartItemHTML += '</td>';
		*/
		cartItemHTML += '	<td class="text-center">';
		cartItemHTML += 'Y';
		cartItemHTML += '</td>';
	}
	
	cartItemHTML += '	<td id="yourCartItem' + cartItem.cartItem + 'Price" class="yourCartItemPrice text-right">' /*+ cartItem.curSymbol*/ + cartItem.price.toFixed(2) + '</td>';
	cartItemHTML += '	<td id="yourCartItem' + cartItem.cartItem + 'SubTotal" class="yourCartItemSubTotal text-right">' /*+ cartItem.curSymbol*/ + cartItem.extension.toFixed(2) + '</td>';
	cartItemHTML += '</tr>';
	
	return cartItemHTML;
};

isNumeric = function(sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	
	
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	  { 
	  Char = sText.charAt(i); 
	  if (ValidChars.indexOf(Char) == -1) 
		 {
		 IsNumber = false;
		 }
	  }
	return IsNumber;
};


showProduct = function() {};