function warrantyInformation(sku){

	if(document.getElementById('warrantyInformation' + sku).className == 'warrantyInformation warrantyInformationVisible'){
		document.getElementById('warrantyInformation' + sku).className = 'warrantyInformation warrantyInformationHidden';
	}else if(document.getElementById('warrantyInformation' + sku).className == 'warrantyInformation warrantyInformationHidden'){
		document.getElementById('warrantyInformation' + sku).className = 'warrantyInformation warrantyInformationVisible';
	}
	
}


function deliveryChargeExplanation(){
	//TODO: create a balloon popup to show an explanation about delivery charges
	//this will say something about how the delivery is calculated based on postcode and at the basket page is just an estimated amount.
	alert('delivery information - this might be a pop up balloon thing which tells the user about delivery charges and how it may change based on postcode etc');
}


var errorMessageArray = new Array();
//address details
errorMessageArray[1] = 'Title is blank';
errorMessageArray[2] = 'First name is empty';
errorMessageArray[3] = 'First name must only contain characters';
errorMessageArray[4] = 'Last name is empty';
errorMessageArray[5] = 'Last name must only contain characters';
errorMessageArray[6] = 'Email address is empty';
errorMessageArray[7] = 'Email address is invalid';
errorMessageArray[8] = 'Email address must match confirmation Email address.';		// Was "Phone number is empty"
errorMessageArray[9] = 'Phone must only contain numbers';
errorMessageArray[10] = 'Provide either a mobile or landline phone number.';	// Was "Mobile number is empty" 
errorMessageArray[11] = 'Mobile must only contain numbers';
errorMessageArray[12] = 'Street is empty';
errorMessageArray[13] = 'Street must only contain characters and numbers';
errorMessageArray[14] = 'City is empty';
errorMessageArray[15] = 'City must only contain characters';
errorMessageArray[16] = 'County must only contain characters';
errorMessageArray[17] = 'Postcode is empty';
errorMessageArray[18] = 'Postcode is invalid';

//payment errors
errorMessageArray[19] = 'Direct Debit Account Name is blank';
errorMessageArray[20] = 'Direct Debit Account Name must only contain characters';
errorMessageArray[21] = 'Direct Debit Sort Code is blank';
errorMessageArray[22] = 'Direct Debit Sort Code must only contain characters';
errorMessageArray[23] = 'Direct Debit Account Number is blank';
errorMessageArray[24] = 'Direct Debit Account Number must only contain characters';
errorMessageArray[25] = 'Card Type must be selected';
errorMessageArray[26] = 'Card Number is blank';
errorMessageArray[27] = 'Card Number must only contain numbers';
errorMessageArray[28] = 'Card Issue Number must only contain numbers';
errorMessageArray[29] = 'Card Start Month must be selected';
errorMessageArray[30] = 'Card Start Year must be selected';
errorMessageArray[31] = 'Card Start Date must be earlier than now';
errorMessageArray[32] = 'Card Expiry Month must be selected';
errorMessageArray[33] = 'Card Expiry Year must be selected';
errorMessageArray[34] = 'Card Expiry Date must be later than now';
errorMessageArray[35] = 'Card Security Code is empty';
errorMessageArray[36] = 'Card Security Code must only contain numbers';

errorMessageArray[37] = 'You must read and agree to our terms and conditions to continue.';
errorMessageArray[38] = 'Finance product must be selected.';

function validateBillingForm(currentForm){
	return validateForm(currentForm);
}


function validateDeliveryForm(currentForm){

	if(currentForm.sameDeliveryAddress != null && currentForm.sameDeliveryAddress.checked == false){
		return validateForm(currentForm);
	}
	return true;
}


function validateForm(currentForm){
	
	var errors = new Array();
	
	if(currentForm.title != null){
		//errors[errors.length] = 1;
	}

	if(currentForm.firstName != null){
		if(currentForm.firstName.value.length == 0){
			errors[errors.length] = 2;
		}else{
			var regexstring = getAlphaRegex(true);
			if(currentForm.firstName.value.match(regexstring) == null){
				errors[errors.length] = 3;
			}
		}
	}

	if(currentForm.lastName != null){
		if(currentForm.lastName.value.length == 0){
			errors[errors.length] = 4;
		}else{
			var regexstring = getAlphaRegex(true);
			if(currentForm.lastName.value.match(regexstring) == null){
				errors[errors.length] = 5;
			}
		}
	}

	if(currentForm.emailAddress != null){
		if(currentForm.emailAddress.value.length == 0){
			errors[errors.length] = 6;
		}else{
			//perform regEx on the email address
			var regexstring = getEmailAddressRegex();
			if (currentForm.emailAddress.value.match(regexstring) == null){
				errors[errors.length] = 7;
			}
		}
		if(currentForm.emailAddressConfirm != null) {
			if(currentForm.emailAddress.value!=currentForm.emailAddressConfirm.value) {
				errors[errors.length] = 8;
			}
		}
	}
	
	if(currentForm.phoneNumber != null){
		if(currentForm.phoneNumber.value.length > 0){
			var regexstring = getNumRegex(true);
			if(currentForm.phoneNumber.value.match(regexstring) == null){
				errors[errors.length] = 9;
			}
		}
	}
	
	if(currentForm.mobileNumber != null){
		if(currentForm.mobileNumber.value.length > 0){
			var regexstring = getNumRegex(true);
			if(currentForm.mobileNumber.value.match(regexstring) == null){
				errors[errors.length] = 11;
			}
		}
	}
	
	if(currentForm.mobileNumber != null && currentForm.phoneNumber != null){
		if(currentForm.mobileNumber.value.length==0 && currentForm.phoneNumber.value.length==0){
			errors[errors.length] = 10;
		}
	}
	
	if(currentForm.street != null){
		if(currentForm.street.value.length == 0){
			errors[errors.length] = 12;
		}else{
			var regexstring = getAlphaNumRegex(true);
			if(currentForm.street.value.match(regexstring) == null){
				errors[errors.length] = 13;
			}
		}
	}
	
	if(currentForm.city != null){
		if(currentForm.city.value.length == 0){
			errors[errors.length] = 14;
		}else{
			var regexstring = getAlphaRegex(true);
			if(currentForm.city.value.match(regexstring) == null){
				errors[errors.length] = 15;
			}
		}
	}

	if(currentForm.county != null){
		if(currentForm.county.value.length > 0){
			var regexstring = getAlphaRegex(true);
			if(currentForm.county.value.match(regexstring) == null){
				errors[errors.length] = 16;
			}
		}
	}

	if(currentForm.postcode != null){
		if(currentForm.postcode.value.length == 0){
			errors[errors.length] = 17;
		}else{
			var regexstring = getPostcodeRegex();
			if(currentForm.postcode.value.toUpperCase().match(regexstring) == null){
				errors[errors.length] = 18;
			}
		}
	}
	
	if(currentForm.terms != null){
		if(currentForm.terms.checked == false){
			errors[errors.length] = 37;
		}
	}
	
	if(errors.length > 0){
		var errorMessage = '';
		for(var i = 0; i < errors.length; i++){
			errorMessage += errorMessageArray[errors[i]] + '\n';
		} 
	
		alert('The following errors have been found:\n\n' + errorMessage + '\nPlease correct these to continue.');
		return false;
	}

	return true;
}


function checkDeliverySameAsBilling(){
	
	if(document.getElementById('sameDeliveryAddress').checked == true){
		//disable
		if(document.getElementById("pcaButtonBB92")){
			document.getElementById("pcaButtonBB92").disabled	 = true;
		}
		document.getElementById("title").disabled			 	= true;
		document.getElementById("firstName").disabled		 	= true;
		document.getElementById("lastName").disabled		 	= true;
		document.getElementById("emailAddress").disabled	 	= true;
		document.getElementById("emailAddressConfirm").disabled	= true;
		document.getElementById("phoneNumber").disabled		 	= true;
		document.getElementById("mobileNumber").disabled	 	= true;
		document.getElementById("company").disabled			 	= true;
		document.getElementById("street").disabled			 	= true;
		document.getElementById("city").disabled			 	= true;
		document.getElementById("county").disabled			 	= true;
		document.getElementById("postcode").disabled		 	= true;
		
	}else{
		//enable
		if(document.getElementById("pcaButtonBB92")){
			document.getElementById("pcaButtonBB92").disabled	 = false;
		}
		document.getElementById("title").disabled			 	= false;
		document.getElementById("firstName").disabled		 	= false;
		document.getElementById("lastName").disabled		 	= false;
		document.getElementById("emailAddress").disabled	 	= false;
		document.getElementById("emailAddressConfirm").disabled	= false;
		document.getElementById("phoneNumber").disabled		 	= false;
		document.getElementById("mobileNumber").disabled	 	= false;
		document.getElementById("company").disabled			 	= false;
		document.getElementById("street").disabled			 	= false;
		document.getElementById("city").disabled			 	= false;
		document.getElementById("county").disabled			 	= false;
		document.getElementById("postcode").disabled		 	= false;

	}
}


function validateCCInformation(currentForm){

	var errors = new Array();
	

	if(currentForm.directDebitAccountName != null){
		if(currentForm.directDebitAccountName.value.length == 0){
			errors[errors.length] = 19;
		}else{
			var regexstring = getAlphaRegex(true);
			if(currentForm.directDebitAccountName.value.match(regexstring) == null){
				errors[errors.length] = 20;
			}
		}
	}
	
	if(currentForm.directDebitSortCode != null){
		if(currentForm.directDebitSortCode.value.length == 0){
			errors[errors.length] = 21;
		}else{
			var regexstring = getNumRegex(true);
			if(currentForm.directDebitSortCode.value.match(regexstring) == null){
				errors[errors.length] = 22;
			}
		}
	}


	if(currentForm.directDebitAccountNumber != null){
		if(currentForm.directDebitAccountNumber.value.length == 0){
			errors[errors.length] = 23;
		}else{
			var regexstring = getNumRegex(true);
			if(currentForm.directDebitAccountNumber.value.match(regexstring) == null){
				errors[errors.length] = 24;
			}
		}
	}


	//Credit/Debit card payment
	if(document.getElementById("paymentTypeCard") && document.getElementById("paymentTypeCard").checked == true){
		
		if(currentForm.cardType != null){
			if(currentForm.cardType.value.length == 0){
				errors[errors.length] = 25;
			}
		}
		
		if(currentForm.cardNumber != null){
			if(currentForm.cardNumber.value.length == 0){
				errors[errors.length] = 26;
			}else{
				var regexstring = getNumRegex(true);
				if(currentForm.cardNumber.value.match(regexstring) == null){
					errors[errors.length] = 27;
				}
			}
		}
		
		if(currentForm.cardIssueNumber != null){
			if(currentForm.cardIssueNumber.value.length > 0){
				var regexstring = getNumRegex(true);
				if(currentForm.cardIssueNumber.value.match(regexstring) == null){
					errors[errors.length] = 28;
				}
			}
		}
		
		
		if(currentForm.cardStartDateMonth != null && currentForm.cardStartDateYear != null){
			if(currentForm.cardStartDateMonth.value.length > 0 && currentForm.cardStartDateYear.value.length > 0){
				var today = new Date();
				var start = new Date(currentForm.cardStartDateYear.value, currentForm.cardStartDateMonth.value-1);
				if(today.getTime() < start.getTime()){
					//error
					errors[errors.length] = 31;	
				}
			}
		}
		
		
		if(currentForm.cardExpiryDateMonth != null && currentForm.cardExpiryDateYear != null){
			if(currentForm.cardExpiryDateMonth.value.length == 0){
				errors[errors.length] = 32;
			}
		
			if(currentForm.cardExpiryDateYear.value.length == 0){
				errors[errors.length] = 33;
			}
			
			if(currentForm.cardExpiryDateMonth.value.length > 0 && currentForm.cardExpiryDateYear.value.length > 0){
				var today = new Date();
				var expiry = new Date(currentForm.cardExpiryDateYear.value, currentForm.cardExpiryDateMonth.value);
				if(today.getTime() > expiry.getTime()){
					//error
					errors[errors.length] = 34;	
				}
			}
		}
		
		
		if(currentForm.cardSecurityCode != null){
			if(currentForm.cardSecurityCode.value.length == 0){
				errors[errors.length] = 35;
			}else{
				var regexstring = getNumRegex(true);
				if(currentForm.cardSecurityCode.value.match(regexstring) == null){
					errors[errors.length] = 36;
				}
			}
		}
		
	}
	
	
	//credit payment
	if(document.getElementById("paymentTypeCredit") && document.getElementById("paymentTypeCredit").checked == true){
		//check the user has selected a credit option
		var creditNotChecked = true;
		
		financeOptions = currentForm.financeProductId;
		for(var i = 0; i < financeOptions.length; i++){
			if(financeOptions[i].checked == true){
				creditNotChecked = false;
				break;
			}
		}
		
		if(creditNotChecked == true){
			errors[errors.length] = 38;
		}
		
	}


	if(errors.length > 0){
		var errorMessage = '';
		for(var i = 0; i < errors.length; i++){
			errorMessage += errorMessageArray[errors[i]] + '\n';
		} 
	
		alert('The following errors have been found:\n\n' + errorMessage + '\nPlease correct these to continue.');
		
		document.getElementById('continue-button').disabled = false;
		return false;
	}

	document.getElementById('continue-button').disabled = true;
	return true;
}


//this ticks the finance box when a finance option is ticked
function chooseFinance(financeId){
	
	var paymentTypeCredit = document.getElementById('paymentTypeCredit');
	if(paymentTypeCredit.checked == false){
		paymentTypeCredit.checked = true;
	}

	
	document.getElementById('financeQuote').innerHTML = "<table summary=\"Finance example\">" + document.getElementById('financeQuote' + financeId).innerHTML + "</table>";
}



function chooseFinanceOption(){

	//disable credit card fields
	if(document.getElementById('cardType')){
		document.getElementById('cardType').disabled = true;
	}
	
	if(document.getElementById('cardNumber')){
		document.getElementById('cardNumber').disabled = true;
	}
	
	if(document.getElementById('cardIssueNumber')){
		document.getElementById('cardIssueNumber').disabled = true;
	}
	
	if(document.getElementById('cardStartDateMonth')){
		document.getElementById('cardStartDateMonth').disabled = true;
	}

	if(document.getElementById('cardStartDateYear')){
		document.getElementById('cardStartDateYear').disabled = true;
	}
	
	if(document.getElementById('cardExpiryDateMonth')){
		document.getElementById('cardExpiryDateMonth').disabled = true;
	}

	if(document.getElementById('cardExpiryDateYear')){
		document.getElementById('cardExpiryDateYear').disabled = true;
	}
	
	if(document.getElementById('cardSecurityCode')){
		document.getElementById('cardSecurityCode').disabled = true;
	}
	
	
	if(document.getElementById('financeOptions')){
		var root = document.getElementById('financeOptions');
		if(root.hasChildNodes()) {
			var inputs = root.getElementsByTagName("INPUT");
			if(inputs.length == 1){
				inputs[0].disabled = false;
				chooseFinance(inputs[0].value);
			}else{
				for(var i=0; i< inputs.length; i++){
	        		inputs[i].disabled = false;
				}
			}
		}
	}
	
}


function chooseCreditCard(){

	if(document.getElementById('cardType')){
		document.getElementById('cardType').disabled = false;
	}
	
	if(document.getElementById('cardNumber')){
		document.getElementById('cardNumber').disabled = false;
	}
	
	if(document.getElementById('cardIssueNumber')){
		document.getElementById('cardIssueNumber').disabled = false;
	}
	
	if(document.getElementById('cardStartDateMonth')){
		document.getElementById('cardStartDateMonth').disabled = false;
	}

	if(document.getElementById('cardStartDateYear')){
		document.getElementById('cardStartDateYear').disabled = false;
	}
	
	if(document.getElementById('cardExpiryDateMonth')){
		document.getElementById('cardExpiryDateMonth').disabled = false;
	}

	if(document.getElementById('cardExpiryDateYear')){
		document.getElementById('cardExpiryDateYear').disabled = false;
	}
	
	if(document.getElementById('cardSecurityCode')){
		document.getElementById('cardSecurityCode').disabled = false;
	}
	
	
	if(document.getElementById('financeOptions')){
		var root = document.getElementById('financeOptions');
		if(root.hasChildNodes()) {
			var inputs = root.getElementsByTagName("INPUT");
			for(var i=0; i< inputs.length; i++){
	        	inputs[i].checked = false;
	        	inputs[i].disabled = true;
			}
		}
	}
	
	if(document.getElementById('financeQuote')){
		document.getElementById('financeQuote').innerHTML = "Choose a finance option on the left to see the loan repayment calulations and amount.";
	}
}