/* Copyright Commcam Limited 2009. All rights reserved. (See licence/licence.txt) */
function buyProduct(strCode, strQuantityId, strDescription, strTier5Code, strLocatorId)
{
	var objDiv;
	var objLocator;
	var objSelect;
	var iDivWidth, iDivHeight, iQuantity;
	var objAjax = new CAjax();
	var strFriendlyUrl, iLookup;
	var strHash = "";
	
	objSelect = document.getElementById(strQuantityId);
	objDiv = document.getElementById("basketAdder");
	objLocator = document.getElementById(strLocatorId);

	strFriendlyUrl = escape(objSelect.getAttribute("friendlyUrl"));
	iLookup = objSelect.getAttribute("lookup");
	strHash = objSelect.getAttribute("hash");
	
	if (strHash == null)
	{
		strHash = "";
	}
	
	iQuantity = objSelect.value;
	iQuantity = Math.round(iQuantity);
	
	if (iQuantity == 0)
	{
		iQuantity = 1;
	}
	
	objSelect.value = iQuantity;

	if (!objDiv)
	{
		objDiv = document.createElement("div");
		objDiv.id = "basketAdder";
		document.body.appendChild(objDiv);
	}

	strCarDetails = "";

	if (iLookup == "1")
	{
		var strMake, strModel, strSubModel, strEngine, strYear, strVrm;
		
		strMake = getFormValue("page_make");
		strModel = getFormValue("page_model"); 
		strSubModel = getFormValue("page_subModel"); 
		strEngine = getFormValue("page_engine");
		strYear = getFormValue("page_year"); 
		strVrm = getFormValue("page_vrm");
		
		strCarDetails = "&make=" + escape(strMake) + "&model=" + escape(strModel) + "&subModel=" + escape(strSubModel) + "&engine=" + escape(strEngine) + "&year=" + escape(strYear) + "&vrm=" + escape(strVrm);
	}
	
	if (objAjax.open("/dynamic/basketAdder.php?code=" + strCode + "&quantity=" + iQuantity + "&description=" + escape(strDescription) + "&url=" + strFriendlyUrl + "&tier5Code=" + strTier5Code + "&lookup=" + iLookup + "&hash=" + strHash + strCarDetails, true, true))
	{
		objDiv.innerHTML = objAjax.getResponse();
	}
	
	objDiv.style.display = "block";
	
	iDivWidth = findRight(objDiv) - findLeft(objDiv);
	iDivHeight = findBottom(objDiv) - findTop(objDiv);
	
	objDiv.style.top = findTop(objLocator) - iDivHeight/2;
	objDiv.style.left = findRight(objLocator);
	
	setOpacity("basketAdder", 100);
	
	
	objDiv.setAttribute("opacity", 300);
	setTimeout("fadeFrom('basketAdder')", 2000);
	
	displayQuickBasket();

}

function updateSalesTotalPrice()
{
	var objTotalPrice = document.getElementById("salesTotalPrice");
	var dPrice = parseFloat(getFormValue("salesPrice"));
	var iQuantity = parseInt(getFormValue("salesQuantity"));
	var dTotalPrice = 0;
	
	if (dPrice > 0 && iQuantity > 0)
	{
			objTotalPrice.innerHTML = currencyFormatted(dPrice * iQuantity);
	}
}

function manualAddToBasket()
{
	var dPrice = parseFloat(getFormValue("salesPrice"));
	var strCode = getFormValue("salesProdCode");
	var iQuantity = parseInt(getFormValue("salesQuantity"));
	var strDescription = getFormValue("salesDescription");
	
	if (iQuantity <= 0 || isNaN(iQuantity))
	{
		alert("Please enter a quantity first");
		return false;
	}

	if (strCode == "")
	{
		alert("Please enter a product code first");
		return false;
	}

	if (strDescription == "")
	{
		alert("Please enter a description first");
		return false;
	}
	
	if (dPrice <= 0 || isNaN(dPrice))
	{
		alert("Please enter a price first");
		return false;
	}
	
	var objAjax = new CAjax();
	
	if (objAjax.open("/dynamic/manualAdd.php?code=" + escape(strCode) + "&quantity=" + iQuantity + "&price=" + dPrice + "&description=" + strDescription, true)) 
	{
		var strResponse = objAjax.getResponse();
		
		var objDiv = document.getElementById("basket");
		objDiv.innerHTML = strResponse;
		
		displayQuickBasket();
		
		objDiv = document.getElementById("continueCheckout");
        objDiv.style.display = "block";
	}
}

function validateProduct(objInput)
{
	var strCode = objInput.value;
	var objPrice = document.getElementById("salesPrice");
	var objTotalPrice = document.getElementById("salesTotalPrice");
	var objDescription = document.getElementById("salesDescription");
	var objQuantity = document.getElementById("salesQuantity");
	
	if (strCode != "")
	{
		var objAjax = new CAjax();
	
		if (objAjax.open("/dynamic/getProduct.php?part=" + escape(strCode), true)) 
		{
			var strResponse = objAjax.getResponse();

			if (strResponse == "")
			{
			  alert("Part could not be found");
			  objPrice.readOnly = false;
			  objDescription.readOnly = false;
			}
			else
			{
				var arrParts = strResponse.split("|");

			  objPrice.value = arrParts[0];
			  objTotalPrice.innerHTML = currencyFormatted(arrParts[0] * objQuantity.value);
			  objDescription.value = arrParts[1];
			  objPrice.readOnly = true;
			  objDescription.readOnly = true;
			  
			  var objImg = document.getElementById("salesThumb");

			  objImg.style.display = "block";
			  objImg.src = objImg.getAttribute("stubpath") + arrParts[2];
			}
		}
	}
	
}

function updateDeliveryAmounts(objCheck)
{
	var strDescription = objCheck.getAttribute("description");
	var dCharge = parseFloat(objCheck.getAttribute("charge"));
	
	var objDeliveryAmount = document.getElementById("basketDeliveryAmount");
	var objDescription = document.getElementById("basketDeliveryDescription");
	var objTotalAmount = document.getElementById("basketTotalAmount");
	var dBasketPrice = parseFloat(objTotalAmount.getAttribute("basketPrice"));
	
	if (dCharge == 0)
	{
		objDeliveryAmount.innerHTML = "FREE";
	}
	else
	{
		objDeliveryAmount.innerHTML = "&pound;" + currencyFormatted(dCharge);
	}
	
	objDescription.innerHTML = "(" + strDescription + ")";
	objTotalAmount.innerHTML = "&pound;" + currencyFormatted(dBasketPrice + dCharge);
}

function findOrder()
{
	var objForm = document.getElementById("verifyForm");

	if (validateForm(objForm))
	{
		objForm.submit();
	}
}

function decreaseQuantity(strId)
{
	var objInput = document.getElementById(strId);
	var iQuantity = 0;
	
	iQuantity = parseInt(objInput.value);
	
	if (iQuantity > 0)
	{
		iQuantity -= 1;
	}
	else
	{
		iQuantity = 0;
	}
	
	objInput.value = iQuantity;
}

function increaseQuantity(strId)
{
	var objInput = document.getElementById(strId);
	var iQuantity = 0;
	
	iQuantity = parseInt(objInput.value);
	
	if (iQuantity > 0)
	{
		if (iQuantity < 99)
		{
			iQuantity += 1;
		}
	}
	else
	{
		iQuantity = 1;
	}
	
	objInput.value = iQuantity;
}

function blurQuantity(objInput)
{
	var iQuantity = parseInt(objInput.value);
	
	if (!iQuantity)
	{
		iQuantity = 0;
	}
	
	iQuantity = Math.abs(iQuantity);
	objInput.value = iQuantity;
}

function showLoginPanel()
{
	var objDiv = document.getElementById("loginPanel");
	
	document.getElementById("accountLogin").checked = true;
	ExpandDiv("loginPanel");
}

function updateBasket()
{
	var objBasketDoc = xml_createXmlDom();
	var objBasketNode, objProductNode;
	var objInputs, objAjax, objDiv;
	
	objDiv = document.getElementById("basket");
	objBasketDoc.loadXML("<basket/>");
	
	objBasketNode = objBasketDoc.selectSingleNode("/basket");

	var objInput = document.getElementById("promotionalCode");
	var objPromoCheck = document.getElementById("promotionCheck");

	if (objPromoCheck.checked)
	{
	  if (objInput.getAttribute("valid") == "true")
	  {
	    xml_createNode(objBasketNode, "promoCode", objInput.value);
	  }
	}
	
	objInputs = document.getElementsByTagName("input");
	
	for (var i = 0; i < objInputs.length; i++)
	{
		strInputId = objInputs[i].getAttribute("id");
	
		if (strInputId && strInputId.substr(0,2) == "Q_")
		{
			strProductCode = objInputs[i].getAttribute("productCode");
			
			objProductNode = xml_createNode(objBasketNode, "product");
			
			xml_createNode(objProductNode, "productCode", strProductCode);
			objProductNode.setAttribute("quantity", objInputs[i].value);
			objProductNode.setAttribute("carHash", objInputs[i].getAttribute("carHash"));
			objProductNode.setAttribute("hash", objInputs[i].getAttribute("hash"));
		}
	}
	
	objAjax = new CAjax();
	
	if (objAjax.open("/dynamic/basketUpdate.php", false))
	{
		objAjax.send(objBasketDoc.xml);
		objDiv.innerHTML = objAjax.getResponse();	
	}

	var iItems = parseInt(getFormValue("numberOfItems"));
	var objDiv = document.getElementById("continueCheckout");

	if (iItems > 0) 
	{
	  objDiv.style.display = "block";
	}
	else 
	{
	  objDiv.style.display = "none";
	}
	
	_displayQuickBasket();
}

function displayQuickBasket()
{
	startLoading("_displayQuickBasket()");
}

function _displayQuickBasket()
{
	var objQuickBasket = document.getElementById("quickBasketInner");
	var objAjax = new CAjax();
	
	if (objQuickBasket)
	{
		if (objAjax.open("/dynamic/quickBasket.php", true))
		{
			objQuickBasket.innerHTML = objAjax.getResponse();
		}
	}
	
	endLoading();
}

function saveAddressesAndContinue()
{
	var objCheck = document.getElementById("deliveryDifferent");
	var objForm = document.getElementById("customerDetails");
	var objButton = document.getElementById("continueSummary");
	var objPleaseWait = document.getElementById("pleaseWait");
	var bOk = false;

	if (validateForm(objForm, "formAnchor"))
	{
		bOk = true;

		if (objCheck && objCheck.checked)
		{
			if (!validateFormElement("delivery_address1") ||
				  !validateFormElement("delivery_town") ||
				  !validateFormElement("delivery_county") ||
				  !validateFormElement("delivery_postcode") || 
				  !validateFormElement("delivery_recipient"))
		  {
				bOk = false;
		  }
		}
		
		if (bOk && !document.getElementById("tos").checked)
		{
		  promptForTos();
		  bOk = false;
		}
		
		if (!bOk)
		{
			return false;
		}
	}
	else
	{
		smoothScroll("formAnchor");
		return false;
	}
	
	if (bOk)
	{
		objButton.style.display = "none";
		objPleaseWait.style.display = "block";

		objForm.submit();
	}
}

function createCustomer()
{
	var objPassword, objPassword2, strPassword, strPassword2;
	var objEmail, objEmail2, strEmail, strEmail2;
	var bError = false;
	var objForm = document.getElementById("customerDetails");
	var objButton = document.getElementById("continueSummary");
	var objPleaseWait = document.getElementById("pleaseWait");
	var objSpan = document.getElementById("e_password");
	var objSpan2 = document.getElementById("e_password2");
	var objEmailSpan = document.getElementById("e_email");
	var objEmailSpan2 = document.getElementById("e_email2");
	var objEmailToCheck = document.getElementById("email");
	var objCheck = document.getElementById("deliveryDifferent");
		
	objEmail = document.getElementById("d_email");
	objEmail2 = document.getElementById("d_email2");
	
	if (validateForm(objForm, "formAnchor"))
	{
		if (!document.getElementById("tos").checked)
		{
		  promptForTos();
		  bError = true;
		  return;
		}
		
		objPassword = document.getElementById("d_password");
		objPassword2 = document.getElementById("d_password2");
		
		strPassword = getFormValue("password");
		strPassword2 = getFormValue("password2");
	
		objPassword.className = "field";
		objPassword2.className = "field";
		
		if (document.getElementById("accountYes").checked)
		{	
			if (strPassword.length < 8)
			{
				objPassword.className = "error";
				objSpan.innerHTML = "Must be at least 8 digits";
				bError = true;
			}
			
			if(strPassword != strPassword2)
			{
				objPassword.className = "error";
				objPassword2.className = "error";
				objSpan.innerHTML = "Doesn't match";
				objSpan2.innerHTML = "Doesn't match";
				bError = true;
			}
		}

		if (objCheck && objCheck.checked)
		{
			if (!validateFormElement("delivery_address1") ||
				  !validateFormElement("delivery_town") ||
				  !validateFormElement("delivery_county") ||
				  !validateFormElement("delivery_postcode") || 
				  !validateFormElement("delivery_recipient"))
		  {
				bError = true;
		  }
		}
		
		
		strEmail = getFormValue("email");
		strEmail2 = getFormValue("email2");
		
        objEmail.className = "field";
		objEmail2.className = "field";

		checkEmailAddress(objEmailToCheck);
	
		if (objEmailToCheck.getAttribute("valid") != "true")
		{
		  objEmail.className = "error";
		  objEmailSpan.innerHTML = "<strong>Invalid email address<strong>";
			bError = true;
		}

		if(strEmail != strEmail2)
			{
				//objEmail.className = "error";
				objEmail2.className = "error";
				//objEmailSpan.innerHTML = "Doesn't match";
				objEmailSpan2.innerHTML = "<strong>Doesn't match email address<strong>";
				bError = true;
			}


			if (!bError)
			{
			  objButton.style.display = "none";
			  objPleaseWait.style.display = "block";

			  objForm.submit();
			}
			else
			{
			  smoothScroll("formAnchor");
			}
	}
}

function changeCardType(objSelect)
{
	var objDiv = document.getElementById("d_issueNumber");
	var objStartDateDiv = document.getElementById("d_startDate");

	if (objSelect.value == "MAESTRO_ISS" || objSelect.value == "SOLO_ISS")
	{
	// Show issue number and hide start date
		objDiv.style.display = "block";		
		objStartDateDiv.style.display = "none";		
	}
	else
	{
	// Hide issue number and show start date
		objDiv.style.display = "none";		
		objStartDateDiv.style.display = "block";
	}
}

function placeOrder()
{
	var objForm = document.getElementById("cardDetails");
	var objButton = document.getElementById("placeOrder");
	var objPleaseWait = document.getElementById("pleaseWait");	
	var objSelect = document.getElementById("cardType");	
	var objIssue = document.getElementById("issueNumber");
	var objSecurityCode = document.getElementById("securityCode");
	var objDebugMode = document.getElementById("debug");
	
	var objDiv;
	
	var iStartMonth = getFormValue("startDateMonth");
	var iStartYear = getFormValue("startDateYear");
	
	var iEndMonth = getFormValue("expiryDateMonth");
	var iEndYear = getFormValue("expiryDateYear");
	
	var objStartDate = new Date("20" + iStartYear, iStartMonth - 1, 1);
	var objEndDate = new Date("20" + iEndYear, iEndMonth, 1);
	var objCurrentDate = new Date();
	
	var objAnchor = document.getElementById("formAnchor");
	
	if (validateForm(objForm, "formAnchor"))
	{
		var objCardNo = document.getElementById("cardNumber");
		
		var strCard = objCardNo.value;
		var bError = false;
	    
	    if ((objSelect.value == "MAESTRO_ISS" && objIssue.value == "") ||
		    (objSelect.value == "SOLO_ISS" && objIssue.value == ""))
		{
			bError = true;
			objDiv = document.getElementById("d_issueNumber");
			objDiv.className = "error";
		}
			
//    	if (!strCard.isValidCardNumber())
//		{
//			bError = true;
//			objDiv = document.getElementById("d_cardNumber");
//			objDiv.className = "error";
//	    }
   	    if (objDebugMode.value != "true" && strCard == "4444333322221111")
	    {
	        bError = true;
	        objDiv = document.getElementById("d_cardNumber");
			objDiv.className = "error";
			
	    } else {    	
   	        if (!checkCreditCard(strCard, objSelect.value))
	        {
			        bError = true;
			        objDiv = document.getElementById("d_cardNumber");
			        objDiv.className = "error";
            }
        }
	  
        if (objSecurityCode.value.length < 3)
        {
    	    bError = true;
	        objDiv = document.getElementById("d_securityCode");
		    objDiv.className = "error";
	    }
	  
        if  (objStartDate > objCurrentDate)
		{
			bError = true;
			objDiv = document.getElementById("d_startDate");
			objDiv.className = "error";
		} else {
			objDiv = document.getElementById("d_startDate");
			objDiv.className = "field";
		}
	
		if  (objEndDate < objCurrentDate)
		{
			bError = true;
			objDiv = document.getElementById("d_expiryDate");
			objDiv.className = "error";
		} else {
			objDiv = document.getElementById("d_expiryDate");
			objDiv.className = "field";
		}
		
        if (!bError)
	    {
			objButton.style.display = "none";
			objPleaseWait.style.display = "block";
			
			popupDialog("/styles/ecp/static/placing-order.html");
			setTimeout("_placeOrder()", 1000);
	    } else {
			smoothScroll("formAnchor");
	    }
	}
}

function _placeOrder()
{
	var objForm = document.getElementById("cardDetails");
	
	objForm.submit();
}

function yourDetailsFindAddress(bDeliveryAddress)
{
	var strPostcode; 
	var objDiv;
	var objResultHolder;
	var objAjax;
	var strDelivery;
	
	if (bDeliveryAddress)
	{
		strPostcode = getFormValue("findPostcodeDelivery"); 
		objDiv = document.getElementById("d_findPostcodeDelivery");
		objResultHolder = document.getElementById("finderResultsDelivery");
		strDelivery = "true";
	}
	else
	{
		strPostcode = getFormValue("findPostcode"); 
		objDiv = document.getElementById("d_findPostcode");
		objResultHolder = document.getElementById("finderResults");
		strDelivery = "false";
	}
	
	if (strPostcode == "")
	{
		objDiv.className = "error";
	}
	else
	{
		objDiv.className = "field";
		
		objAjax = new CAjax();

		if (objAjax.open("/dynamic/findAddress.php?postcode=" + strPostcode + "&delivery=" + strDelivery, true))
		{
			objResultHolder.innerHTML = objAjax.getResponse();
			//objResultHolder.style.display = "block";
			
			if (bDeliveryAddress)
			{
				ExpandDiv("finderResultsDelivery");
			}
			else
			{
				ExpandDiv("finderResults");
			}
		}
		
	}
}

function changeAddress(objSelect, strPrefix, strProvider)
{
	var strId = objSelect.value;
	var objOption = document.getElementById(strId);
	var objButton = document.getElementById("updateButton");
	var objDeleteButton = document.getElementById("deleteButton");
	
	if (strPrefix == "undefined" || strPrefix == undefined)
	{
		strPrefix = "";
	}
	
	var objAddress1 = document.getElementById(strPrefix + "address1");
	var objAddress2 = document.getElementById(strPrefix + "address2");
	var objAddress3 = document.getElementById(strPrefix + "town");
	var objAddress4 = document.getElementById(strPrefix + "county");
	var objPostcode = document.getElementById(strPrefix + "postcode");

	var objInternalId = document.getElementById(strPrefix + "internalId");
	var objContactName = document.getElementById(strPrefix + "contactName");
	
	if (objInternalId)
	{
		objInternalId.value = objOption.getAttribute("internalId");
		
	}

	if (objContactName)
	{
		objContactName.value = objOption.getAttribute("contactName");
	}

	if (strProvider == "AFD")
	{
	
	    var strPostcode = objOption.getAttribute("postcode");
	    
        objAjax = new CAjax();
		if (objAjax.open("/dynamic/findAddress.php?mode=AFDLookup&postcode=" + strPostcode, true))
		{		    
            var strResponse = objAjax.getResponse();
		    var arrAddress = strResponse.split("|");
		    
		    objAddress1.value = arrAddress[0];
	        objAddress2.value = arrAddress[1];
	        objAddress3.value = arrAddress[3];
	        objAddress4.value = arrAddress[4];
	        objPostcode.value = arrAddress[5];
	    }
	} else{ 	
	    if (objOption.getAttribute("internalId") == "0")
	    {
		    if (objButton)
		    {
			    objButton.style.display = "none";
			    objDeleteButton.style.display = "none";
		    }
	    }
	    else
	    {
		    if (objButton)
		    {
			    objButton.style.display = "block";
    			
			    if ( objOption.getAttribute("internalId") == "-1")
			    {
				    objDeleteButton.style.display = "none";
			    }
			    else
			    {
				    objDeleteButton.style.display = "block";
			    }
		    }
	    }
    	
	    objAddress1.value = objOption.getAttribute("address1");
	    objAddress2.value = objOption.getAttribute("address2");
	    objAddress3.value = objOption.getAttribute("town");
	    objAddress4.value = objOption.getAttribute("county");
	    objPostcode.value = objOption.getAttribute("postcode");
    }	
}

function toggleDeliveryAddress(objCheck)
{

	if (objCheck.checked)
	{
		ExpandDiv("deliveryAddressPanel");
	}
	else
	{
		CollapseDiv("deliveryAddressPanel");
	}

}


function showPasswords()
{
	var objCheck = document.getElementById("accountYes");
	
	objCheck.checked = true;
	ExpandDiv("passwords");
}

function promptForTos()
{
	var objDiv = document.getElementById("promptForTos");
	var objLocator = document.getElementById("tosPromptLocator");
	
	if (!objDiv)
	{
		objDiv = document.createElement("div");
		objDiv.id = "promptForTos";
		document.body.appendChild(objDiv);
	}
	
	setOpacity("promptForTos", 100);
	objDiv.style.display = "block";
	
	iDivWidth = findRight(objDiv) - findLeft(objDiv);
	iDivHeight = findBottom(objDiv) - findTop(objDiv);
	
	objDiv.style.top = findTop(objLocator) - iDivHeight/2;
	objDiv.style.left = findRight(objLocator);
	
	objDiv.setAttribute("opacity", 300);
	setTimeout("fadeFrom('promptForTos')", 2000);
}

function continueToPayment() 
{
  var objForm = document.getElementById("deliveryAddress");
  var objButton = document.getElementById("continuePayment");
  var objPleaseWait = document.getElementById("pleaseWait");

  if (validateForm(objForm)) 
  {
    objButton.style.display = "none";
    objPleaseWait.style.display = "block";

    objForm.submit();
  }
}

function selectBillingCountry(objSelect)
{
    var objOption = document.getElementById("country_" + objSelect.value);
    
    var iInternational = -1;
     
    if (objOption)
    {
         iInternational = parseInt(objOption.getAttribute("international"));
    }
    
    if (iInternational == 0)
    {
        ExpandDiv("postcodeFinder");
    }
    else
    {
        CollapseDiv("postcodeFinder");
    }
   
}

function togglePromotionCheck(objInput)
{
  var objRow = document.getElementById("promotionHolder");

  if (!objInput.checked)
  {
    if (getFormValue("promoError") != "" || getFormValue("promotionalCode") != "")
    {
      updateBasket();
    }
    
    objRow.style.display = "none";
  }
  else
  {
    objRow.style.display = "table-row";
  }
}

function findPromotionalCode()
{
  var strCode = getFormValue("promotionalCode");
  var objAjax = new CAjax();
  var objInput = document.getElementById("promotionalCode");
  
  if (objAjax.open("/dynamic/checkPromoCode.php?code=" + strCode, true))
  {
    var strResponse = objAjax.getResponse();

    if (strResponse != "true")
    {
      popupDialog("/styles/ecp/static/invalidPromotion.html");
      objInput.setAttribute("valid", "false");
    }
    else
    {
      objInput.setAttribute("valid", "true");
    }
  }
}

function claimPromotionalCode()
{
  var objInput = document.getElementById("promotionalCode");

  if (objInput.getAttribute("valid") == "true")
  {
    updateBasket();
  }
  else
  {
    popupDialog("/styles/ecp/static/invalidPromotion.html");
  }
}

function validateBasket(strUrl)
{
  var strError = getFormValue("promoError");

  if (strError == "")
  {
    document.location.href = strUrl;
  }
  else
  {
    popupDialog("/styles/ecp/static/promotionReq.html");
  }
}