
var SCRIPT_SELECT_FREE_ITEMS = '/app/site/hosting/scriptlet.nl?script=2&deploy=1&compid=427476&h=53f06342264326808dd3';

var STAT = 0;

var PROMO_REF_TEXT = 'Ref. #: ';

function es_Start()
{
	$('#div__body').mask('Loading...');
	
	var isCheckout = document.getElementById('checkout') != null;
	var isCart = document.getElementById('cart') != null;
	var isCheckoutComplete = false;
	var isCheckoutConfirm = false;
	var isCheckoutShipping = false;
	var tblAddress = $('#address');
	var btnUse = $('#use');
	var stType = gup('type');
	
	
	if (isCart && isCheckout) {
		STAT = 1;
	}
	
	if (isCheckout) {
		var cats = document.getElementsByName('category');
		for (var o in cats) {
			if (cats[o].value == 'shipping') {
				STAT = 2;
				break;
			}
			if (cats[o].value == 'confirm') {
				STAT = 3;
				break;
			}
		}
	}
	if (stType == 'shipping' && btnUse.length > 0 && tblAddress.length > 0) {
		STAT = 4;
	}
	
	var stURL = document.location.href;
	if(stURL.search('custprofile.nl') > 0)
	{
		STAT = null;
	}
	
	switch (STAT) {
		case 1:
			prepareCart();
			break;
		case 3:
			prepareCheckoutConfirm();
			break;
		case 4:
		case 2:
		default:
			$('#div__body').unmask();
	}
	
}	

$(window).ready(function(){
	es_Start();
});

function prepareCart()
{
	setupRemoveButton();
	
	/* Set up validation for checkout */
	$('#cart').submit(function(){
		
		$('#div__body').mask('Validating items...');

		var arrItems = buildItemList();
		var arrNeededQty = new Object();
		var arrNames = new Object();
		var arrPromoItems = new Object();
		var arrNonPromoItems = new Object();

		var toteBagItemId = '368';
		var toteBagItemQty = 0;
		
		for(var idx=0; idx < arrItems.length; idx++)
		{
			if(arrItems[idx].isPromo)
			{
				var iCurQty = parseFloat(arrNeededQty[arrItems[idx].promo_ref]);
				if(isNaN(iCurQty)) iCurQty = 0;
				
				iCurQty += arrItems[idx].qty;
				
				arrNeededQty[arrItems[idx].promo_ref] = iCurQty;
				
				arrPromoItems[arrItems[idx].internalid] = arrItems[idx];
			}
			else
			{
				var iCurQty = parseFloat(arrNeededQty[arrItems[idx].internalid]);
				if(isNaN(iCurQty)) iCurQty = 0;
				
				iCurQty -= arrItems[idx].qty;

				arrNeededQty[arrItems[idx].internalid] = iCurQty;

				arrNonPromoItems[arrItems[idx].internalid] = arrItems[idx];
			}

			if (arrItems[idx].internalid == toteBagItemId) 
			{
				toteBagItemQty += parseInt(arrItems[idx].qty);
			}

			arrNames[arrItems[idx].internalid] = arrItems[idx].name;
		}

		if (toteBagItemQty > 1) 
		{
			var stMsg = "You are allowed one Free Miss Jessie's Shopping Bag per order.";
			alert(stMsg);
			$('#div__body').unmask();
			$('input[id*="item'+toteBagItemId+'"]').val('1').attr('disabled','disabled');
			return false;

		}
		
		for(var i in arrNeededQty)
		{
			if(arrNeededQty[i] > 0)
			{
				if(typeof arrNames[i] == 'undefined')
				{
					var stMsg = 'You have removed the purchased item required for the promotional item(s) with Ref. #' + i + '.\nThese promotional items will be removed from the cart.';
				}
				else
				{
					var stMsg = 'You need to have at least ' + arrNeededQty[i] + ' more unit(s) of ' + arrNames[i] + ' for the promotional item(s) with Ref. #' + i + ' to be valid.';
				}
				alert(stMsg);
				//alert('You need to have at least ' + arrNeededQty[i] + ' more unit(s) of ' + arrNames[i] + ' for the promotional item(s) with Ref. #' + i + ' to be valid.');
				
				$('#div__body').unmask();
				return false;
			}
		}

		/* Enabled all qty fields so they are passed properly */
		$('#carttable').find('tr').each(function(){
		    if (new RegExp(/^carttablerow/).test($(this).attr('id'))) {
				
				$(this).find('td').find('input').attr("disabled",null);
		    }
		});

		return true;
	});
	
	// Set up the fields
	var arrNonPromoLines = new Array();
	var arrPromoRefs = new Array();
	$('#carttable').find('tr').each(function(){
	    if (new RegExp(/^carttablerow/).test($(this).attr('id'))) {
			
			// Make sure that Item link doesn't work
			$(this).find('td').find('a:not("[id^=\'remove\']")').click(function(e) {
			        e.preventDefault();
			    });
	
			var objItem = new Object();
			objItem.name = $(this).find('td').find('a').html();

   			objItem.internalid = $(this).find('td').find('a').attr('href').match(/id\.[0-9]*/); // item ID
			if (objItem.internalid != null && objItem.internalid != '') {
			    objItem.internalid = new String(objItem.internalid);
			    var arrTmpID = objItem.internalid.split('.');
			    objItem.internalid = arrTmpID[1];
			}

			objItem.qty = parseFloat($(this).find('td').find('input').val()); // Qty
			if(isNaN(objItem.qty)) objItem.qty = 0;

			objItem.isPromo = false;
			
			var objMatches = $(this).find(':contains("' + PROMO_REF_TEXT + '")');

			if(objMatches.length > 0)
			{
				var stPromoRef = $(objMatches[objMatches.length - 1]).html();
				if(stPromoRef != null && stPromoRef != '')
				{
					stPromoRef = stPromoRef.replace(PROMO_REF_TEXT,'');
				}
				objItem.promo_ref = stPromoRef;
				objItem.isPromo = true;

				// disable qty field
				$(this).find('td').find('input').attr("disabled","disabled");
				
				arrPromoRefs.push(stPromoRef);
			}
			else
			{
				var objRowItem = new Object();
				objRowItem.internalid = objItem.internalid;
				objRowItem.container = $(this).find('td').find('a:not("[id^=\'remove\']")').parent();
				objRowItem.qtyfld = $(this).find('td').find('input').attr('id');
				arrNonPromoLines.push(objRowItem);
			}
	    }
	});
	
	for(var idx=0; idx < arrNonPromoLines.length; idx++)
	{
		for (var y = 0; y < arrPromoRefs.length; y++) 
		{
			if(arrPromoRefs[y] == arrNonPromoLines[idx].internalid)
			{
				arrNonPromoLines[idx].container.append(' <input type="button" name="reselectFreebies" onclick="reselectFreebies(\'' + arrNonPromoLines[idx].internalid + '\',\'' + arrNonPromoLines[idx].qtyfld  + '\')" value="Reselect Freebies"/>');
			}
		}
	}
		
	$('#div__body').unmask();
}

function setupRemoveButton()
{
	$('[id^="remove"]').each(function(){
	    var stId = $(this).attr('id');
	    stId = stId.replace('remove','');
	
		$(this).children('img')[0].onclick = function(){};
		    
		$(this).children('img').click(function()
		{
	        var stRowId = '#carttablerow' + stId;
	        var objRow = $(stRowId);

			var stItemId = objRow.find('td').find('a').attr('href').match(/id\.[0-9]*/); // item ID
			if (stItemId != null && stItemId != '') {
			    stItemId = new String(stItemId);
			    var arrTmpID = stItemId.split('.');
			    stItemId = arrTmpID[1];
			}

			// If a non-promo item that is required by a promo item is removed, remove the promo items
			// Set each of the linked promo item to zero
			var bMsgSent = false;
			$('#carttable').find('tr').each(function(){
			    if (new RegExp(/^carttablerow/).test($(this).attr('id'))) {
					
					var objMatches = $(this).find(':contains("' + PROMO_REF_TEXT + '")');
		
					if(objMatches.length > 0)
					{
						var stPromoRef = $(objMatches[objMatches.length - 1]).html();
						if(stPromoRef != null && stPromoRef != '')
						{
							stPromoRef = stPromoRef.replace(PROMO_REF_TEXT,'');
						}
						
						if(stPromoRef == stItemId)
						{
							var stMsg = 'You have removed the purchased item required for the promotional item(s) with Ref. #' + stPromoRef + '.\nThese promotional items will also be removed from the cart.';
							if(!bMsgSent)
							{
								alert(stMsg);
							}
							bMsgSent = true;
							$(this).find('td').find('input:not("[name=\'reselectFreebies\']")').attr("disabled",null);
							$(this).find('td').find('input:not("[name=\'reselectFreebies\']")').val(0);
						}								

					}
			    }
			});

			if(objRow.find('td').find('input:not("[name=\'reselectFreebies\']")').attr("disabled"))
			{
				objRow.find('td').find('input:not("[name=\'reselectFreebies\']")').attr("disabled",null);
			}
	        objRow.find('td').find('input:not("[name=\'reselectFreebies\']")').val(0);
	
			$('#cart').unbind('submit');
			document.forms['cart'].elements['redirect'].value='';
	        $('#cart').submit();
	    });
	});
}

function prepareCheckoutConfirm()
{
	/* Set up validation for checkout */
		
	$('#div__body').mask('Validating items...');

	var arrItems = buildItemListFromConfirm();
	var arrNeededQty = new Object();
	var arrNames = new Object();
	
	for(var idx=0; idx < arrItems.length; idx++)
	{
		if(arrItems[idx].isPromo)
		{
			var iCurQty = parseFloat(arrNeededQty[arrItems[idx].promo_ref]);
			if(isNaN(iCurQty)) iCurQty = 0;
			
			iCurQty += arrItems[idx].qty;
			
			arrNeededQty[arrItems[idx].promo_ref] = iCurQty;
		}
		else
		{
			var iCurQty = parseFloat(arrNeededQty[arrItems[idx].internalid]);
			if(isNaN(iCurQty)) iCurQty = 0;
			
			iCurQty -= arrItems[idx].qty;

			arrNeededQty[arrItems[idx].internalid] = iCurQty;
		}
		arrNames[arrItems[idx].internalid] = arrItems[idx].name;
	}
	
	for(var i in arrNeededQty)
	{
		if(arrNeededQty[i] > 0)
		{
			if(typeof arrNames[i] == 'undefined')
			{
				var stMsg = 'You have removed main item for the promotional item(s) with Ref. #' + i + ' to be valid.\nPlease click on the "Change Order" and fix the items.';
			}
			else
			{
				var stMsg = 'You need to have at least ' + arrNeededQty[i] + ' more unit(s) of ' + arrNames[i] + ' for the promotional item(s) with Ref. #' + i + ' to be valid.\nPlease click on the "Change Order" and fix the items.';
			}
			alert(stMsg);
			$('#submitter').remove();
		}
	}

	$('#div__body').unmask();
}

function buildItemList()
{
	var arrItems = new Array();

	$('#carttable').find('tr').each(function(){
	    if (new RegExp(/^carttablerow/).test($(this).attr('id'))) {
			
			var objItem = new Object();
			objItem.name = $(this).find('td').find('a').html();

   			objItem.internalid = $(this).find('td').find('a').attr('href').match(/id\.[0-9]*/); // item ID
			if (objItem.internalid != null && objItem.internalid != '') {
			    objItem.internalid = new String(objItem.internalid);
			    var arrTmpID = objItem.internalid.split('.');
			    objItem.internalid = arrTmpID[1];
			}

			objItem.qty = parseFloat($(this).find('td').find('input:not("[name=\'reselectFreebies\']")').val()); // Qty
			if(isNaN(objItem.qty)) objItem.qty = 0;

			objItem.isPromo = false;
			
			var objMatches = $(this).find(':contains("' + PROMO_REF_TEXT + '")');

			if(objMatches.length > 0)
			{
				var stPromoRef = $(objMatches[objMatches.length - 1]).html();
				if(stPromoRef != null && stPromoRef != '')
				{
					stPromoRef = stPromoRef.replace(PROMO_REF_TEXT,'');
				}
				objItem.promo_ref = stPromoRef;
				objItem.isPromo = true;
				
			}

			
			arrItems.push(objItem);
	    }
	});
	
	return arrItems;
}


function buildItemListFromConfirm()
{
	var arrItems = new Array();

	$('#carttable').find('tr').each(function(){
	    if (new RegExp(/^carttablerow/).test($(this).attr('id'))) {
			
			var objItem = new Object();
			objItem.name = $(this).find('td').find('a').html();
			objItem.internalid = $(this).find('td').find('a').attr('href').match(/id\.[0-9]*/); // item ID
			if (objItem.internalid != null && objItem.internalid != '') {
			    objItem.internalid = new String(objItem.internalid);
			    var arrTmpID = objItem.internalid.split('.');
			    objItem.internalid = arrTmpID[1];
			}

			objItem.qty = parseInt($($(this)[0].cells[1]).html()); // Qty
			if(isNaN(objItem.qty)) objItem.qty = 0;
			
			objItem.isPromo = false;

			var objMatches = $(this).find(':contains("' + PROMO_REF_TEXT + '")');

			if(objMatches.length > 0)
			{
				var stPromoRef = $(objMatches[objMatches.length - 1]).html();
				if(stPromoRef != null && stPromoRef != '')
				{
					stPromoRef = stPromoRef.replace(PROMO_REF_TEXT,'');
				}
				objItem.promo_ref = stPromoRef;
				objItem.isPromo = true;
			}

			
			arrItems.push(objItem);
	    }
	});
	
	return arrItems;
}

function reselectFreebies(stItemId,stMainQtyFld)
{
	var bConfirm = confirm('Are you sure you want to reselect the free items?');
	if(!bConfirm) return false;
	
	var arrJSON = new Array();
	var flCurQty = parseFloat($('#' + stMainQtyFld).val());
	if(isNaN(flCurQty)) flCurQty = 0;
	
	$('#' + stMainQtyFld).val(0);
	
	$('#carttable').find('tr').each(function(){
	    if (new RegExp(/^carttablerow/).test($(this).attr('id'))) {
			
			var objItem = new Object();
 
   			objItem.internalid = $(this).find('td').find('a').attr('href').match(/id\.[0-9]*/); // item ID
			if (objItem.internalid != null && objItem.internalid != '') {
			    objItem.internalid = new String(objItem.internalid);
			    var arrTmpID = objItem.internalid.split('.');
			    objItem.internalid = arrTmpID[1];
			}

			objItem.qty = parseFloat($(this).find('td').find('input').val()); // Qty
			if(isNaN(objItem.qty)) objItem.qty = 0;
			
			var objMatches = $(this).find(':contains("' + PROMO_REF_TEXT + '")');

			if(objMatches.length > 0)
			{
				var stPromoRef = $(objMatches[objMatches.length - 1]).html();
				if(stPromoRef != null && stPromoRef != '')
				{
					stPromoRef = stPromoRef.replace(PROMO_REF_TEXT,'');
				}
				
				if(stPromoRef == stItemId)
				{
					$(this).find('td').find('input:not("[name=\'reselectFreebies\']")').attr("disabled",null);
					$(this).find('td').find('input:not("[name=\'reselectFreebies\']")').val(0);
				}								
				arrJSON.push(objItem);
			}
	    }
	});
	
	var stJSON = JSON.stringify(arrJSON); 
	var stURL = SCRIPT_SELECT_FREE_ITEMS
							+ '&item=' + stItemId 
							+ '&qty=' + flCurQty.toFixed(0)
							+ '&prev=' + escape(document.location.href)
							+ '&preset=' + stJSON;

	//window.open(stURL);
	$('#cart').unbind('submit');
	document.forms['cart'].elements['redirect'].value=stURL;
    $('#cart').submit();
}

function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

