var maximumProducts = 99;

function searchProducts(){
	var searchtext = document.getElementById("searchtext").value;
	location.href = 'productlisting.asp?searchtext=' + searchtext;
}

function checkEnterPressed(){
	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)){
		searchProducts();
		return false;
	} 
    else return true;
}

function addToKart(id, timestamp){
	
	var quantity = document.getElementById("quantity").value;
	
		var stock_level = document.getElementById("stock_level").value;
		if(/^([1-9]+)$/.test(quantity)) {
			if(quantity > stock_level) {
				alert('Only ' + stock_level + ' in stock');
				document.getElementById("quantity").value = stock_level;
			}
			else location.href = 'kart.asp?item=' + id + '&quantity=' + quantity + '&timestamp=' + timestamp;
		}
		else alert('Enter a quantity between 1-9');
	
}

function updateKart(itemCount, checkoutKart){

	var itemQuantity;
	var kartItemID;
	var kartItemSize;
	var kartItemStockLevel;
	var kartContents = '';
	var sizeContents = '';
	var executeUpdate = true;
	var stockLevelOK = true;
	
	itemCount = parseInt(itemCount);
	var discountCode = document.getElementById('discountCode').value;
	document.getElementById('voucherCode').value = discountCode;
	
	for (i=0;i<itemCount;i++){
		
		itemQuantity = document.getElementById('kartItem' + i).value;
		kartItemID = document.getElementById('kartItemID' + i).value;
		kartItemSize = document.getElementById('kartItemSize' + i).value;
		kartItemTitle = document.getElementById('kartItemTitle' + i).value;
		kartItemStockLevel = document.getElementById('kartItemStockLevel' + i).value;
		
		if (itemQuantity > maximumProducts) {
			executeUpdate = false;
		}
		
		if(kartItemStockLevel < itemQuantity) { 
			alert('Only ' + kartItemStockLevel + ' ' + kartItemTitle + ' in stock');
			for (j=0;j<kartItemStockLevel;j++){
				kartContents = kartContents + kartItemID + ',';
				sizeContents = sizeContents + kartItemSize + ',';
			}
			stockLevelOK = false;
		}
		else {
			for (j=0;j<itemQuantity;j++){
				kartContents = kartContents + kartItemID + ',';
				sizeContents = sizeContents + kartItemSize + ',';
			}
		}
	
	}
	
	if (checkoutKart && stockLevelOK) {
		checkout(itemCount);
	}
	else {
		if (executeUpdate) {
			location.href='kart.asp?mode=update&kart=' + kartContents + '&size=' + sizeContents;
		}
	}
	
}

function checkout(itemCount){
	if(parseInt(itemCount) == 0) {
		alert('Shopping Bag is Empty!');
	}
	else {
		document.forms.kartform.submit();
	}
}

function validateKartForm() {
	if(parseInt(document.forms.kartform.itemCount.value) != 0) {
		document.forms.kartform.submit();
	}
	else {
		alert('Shopping Bag is Empty!');
	}
}

function openZoomImage(url){
	zoomImage = window.open(url, 'zoomImage', 'width=630,height=830,scrollbars=0');
}

var xmlHttp;
var emailExists = false;

function ajaxFunction() {  
	try {    
		xmlHttp = new XMLHttpRequest();    
	}
	catch (e) {    
		try {      
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");      
		}
		catch (e) {       
			try {        
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");        
			}
			catch (e) {        
				alert("Your browser does not support AJAX!");        
				return false;        
			}		      
		}    
	}  
	
	xmlHttp.onreadystatechange = function() {
  		if(xmlHttp.readyState == 4) {
    		emailExists = xmlHttp.responseText;
    	}
  	}
	
}

function checkEmailExists(email, previousemail) {
	ajaxFunction();
	xmlHttp.open("GET", "kart/sql/emailexists.asp?email=" + email + "&previousemail=" + previousemail, false);
	xmlHttp.send(null);	
	return emailExists;
}

var firstname;
var lastname;
var landphone;
var mobilephone;
var billingaddress1;
var billingaddress2;
var billingaddress3;
var billingtown;
var billingpostcode;
var deliveryaddress1;
var deliveryaddress2;
var deliveryaddress3;
var deliverytown;
var deliverypostcode;
var email;
var previousemail;
var password1;
var password2;

var FIRSTNAMEOK;
var LASTNAMEOK;
var LANDPHONEOK;
var MOBILEPHONEOK;
var BILLINGADDRESS1OK;
var BILLINGADDRESS2OK;
var BILLINGADDRESS3OK;
var BILLINGTOWNOK;
var BILLINGPOSTCODEOK;
var DELIVERYADDRESS1OK;
var DELIVERYADDRESS2OK;
var DELIVERYADDRESS3OK;
var DELIVERYTOWNOK;
var DELIVERYPOSTCODEOK;
var EMAILOK;
var PASSWORD1OK;
var PASSWORD2OK;
var PASSWORDMATCH;

function validateAccountForm(formname){
	
	firstname = formname.firstname.value;
	lastname = formname.lastname.value;
	landphone = formname.landphone.value;
	mobilephone = formname.mobilephone.value;
	
	billingaddress1 = formname.billingaddress1.value;
	billingaddress2 = formname.billingaddress2.value;
	billingaddress3 = formname.billingaddress3.value;
	billingtown = formname.billingtown.value;
	billingpostcode = formname.billingpostcode.value;
	
	deliveryaddress1 = formname.deliveryaddress1.value;
	deliveryaddress2 = formname.deliveryaddress2.value;
	deliveryaddress3 = formname.deliveryaddress3.value;
	deliverytown = formname.deliverytown.value;
	deliverypostcode = formname.deliverypostcode.value;
	
	email = formname.email.value;
	password1 = formname.password1.value;
	password2 = formname.password2.value;
	
	previousemail = formname.previousemail.value;
	
	var formdata = "firstname";
	validateAccount(formdata);

	/*alert(FIRSTNAMEOK + '\n' + 
		LASTNAMEOK + '\n' + 
		LANDPHONEOK + '\n' + 
		MOBILEPHONEOK && 
		BILLINGADDRESS1OK + '\n' + 
		BILLINGADDRESS2OK + '\n' + 
		BILLINGADDRESS3OK + '\n' + 
		BILLINGTOWNOK + '\n' + 
		BILLINGPOSTCODEOK + '\n' + 
		DELIVERYADDRESS1OK + '\n' + 
		DELIVERYADDRESS2OK + '\n' + 
		DELIVERYADDRESS3OK + '\n' + 
		DELIVERYTOWNOK + '\n' + 
		DELIVERYPOSTCODEOK + '\n' + 
		EMAILOK + '\n' + 
		PASSWORD1OK + '\n' + 
		PASSWORD2OK + '\n' + 
		PASSWORDMATCH);*/

	if (FIRSTNAMEOK && 
		LASTNAMEOK && 
		LANDPHONEOK && 
		MOBILEPHONEOK && 
		BILLINGADDRESS1OK && 
		BILLINGADDRESS2OK && 
		BILLINGADDRESS3OK && 
		BILLINGTOWNOK && 
		BILLINGPOSTCODEOK && 
		DELIVERYADDRESS1OK && 
		DELIVERYADDRESS2OK && 
		DELIVERYADDRESS3OK && 
		DELIVERYTOWNOK && 
		DELIVERYPOSTCODEOK && 
		EMAILOK && 
		PASSWORD1OK && 
		PASSWORD2OK && 
		PASSWORDMATCH)
	{
		formname.submit();
	}
		
}

function validateAccount(formdata) {
	
	switch(formdata) {
		case 'firstname':
			if (validateFirstname()) {
				FIRSTNAMEOK = true;
				validateAccount('lastname');
			}
			break;
		case 'lastname':
			if (validateLastname()) {
				LASTNAMEOK = true;
				validateAccount('landphone');
			}
			break;
		case 'landphone':
			if (validateLandphone()) {
				LANDPHONEOK = true;
				validateAccount('mobilephone');
			}
			break;
		case 'mobilephone':
			if (validateMobilephone()) {
				MOBILEPHONEOK = true;
				validateAccount('billingaddress1');
			}
			break;
		case 'billingaddress1':
			if (validateBillingAddress1()) {
				BILLINGADDRESS1OK = true;
				validateAccount('billingaddress2');
			}
			break;
		case 'billingaddress2':
			if (validateBillingAddress2()) {
				BILLINGADDRESS2OK = true;
				validateAccount('billingaddress3');
			}
			break;
		case 'billingaddress3':
			if (validateBillingAddress3()) {
				BILLINGADDRESS3OK = true;
				validateAccount('billingtown');
			}
			break;
		case 'billingtown':
			if (validateBillingTown()) {
				BILLINGTOWNOK = true;
				validateAccount('billingpostcode');
			}
			break;
		case 'billingpostcode':
			if (validateBillingPostcode()) {
				BILLINGPOSTCODEOK = true;
				validateAccount('deliveryaddress1');
			}
			break;	
		case 'deliveryaddress1':
			if (validateDeliveryAddress1()) {
				DELIVERYADDRESS1OK = true;
				validateAccount('deliveryaddress2');
			}
			break;
		case 'deliveryaddress2':
			if (validateDeliveryAddress2()) {
				DELIVERYADDRESS2OK = true;
				validateAccount('deliveryaddress3');
			}
			break;
		case 'deliveryaddress3':
			if (validateDeliveryAddress3()) {
				DELIVERYADDRESS3OK = true;
				validateAccount('deliverytown');
			}
			break;
		case 'deliverytown':
			if (validateDeliveryTown()) {
				DELIVERYTOWNOK = true;
				validateAccount('deliverypostcode');
			}
			break;
		case 'deliverypostcode':
			if (validateDeliveryPostcode()) {
				DELIVERYPOSTCODEOK = true;
				validateAccount('email');
			}
			break;
		case 'email':
			if (validateEmail()) {
				EMAILOK = true;
				validateAccount('password1');
			}
			break;
		case 'password1':
			if (validatePassword(password1)) {
				PASSWORD1OK = true;
				validateAccount('password2');
			}
			else PASSWORD1OK = false;
			break;
		case 'password2':
			if (validatePassword(password2)) {
				PASSWORD2OK = true;
				if (password1 != password2) {
					alert ('Passwords do not match!');
					PASSWORDMATCH = false;
				}
				else PASSWORDMATCH = true;
			}
			break;
		default:				
	}
	
}

function validateEmail(){
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))
	{
		if(checkEmailExists(email, previousemail) == 'true') {
			alert("That email address is already in use! Please re-enter.")
			return (false)
		}
		else return (true)
	}
	alert("Invalid E-mail Address! Please re-enter.")
	return (false)
}

function validatePassword(password){

	if (/^([A-Z0-9a-z\-]+){4}$/.test(password))
	{
		return (true)
	}
	alert("Invalid Password! Please re-enter.")
	return (false)	
	
}

function validateFirstname(){

	if (/^([A-Za-z\-]+){2}$/.test(firstname))
	{
		return (true)
	}
	alert("Invalid Firstname! Please re-enter.")
	return (false)	

}

function validateLastname(){

	if (/^([A-Za-z\-]+){2}$/.test(lastname))
	{
		return (true)
	}
	alert("Invalid Lastname! Please re-enter.")
	return (false)	
	
}

function validateLandphone(){

	if (/^([0-9\-]+){7}$/.test(landphone))
	{
		return (true)
	}
	alert("Invalid Landphone Number! Please re-enter.")
	return (false)	
	
}

function validateMobilephone(){

	if (/^([0-9\-]+){11}$/.test(mobilephone) || mobilephone.length == 0)
	{
		return (true)
	}
	alert("Invalid Mobilephone Number! Please re-enter.")
	return (false)	
	
}

function validateBillingAddress1(){

	if (/^([0-9A-Za-z\s\/\\\(\)\-\,]+){5}$/.test(billingaddress1))
	{
		return (true)
	}
	alert("Invalid Billing Address1! Please re-enter.")
	return (false)	
	
}

function validateBillingAddress2(){

	if (/^([0-9A-Za-z\s\/\\\(\)\-\,]+)$/.test(billingaddress2) || billingaddress2.length == 0)
	{
		return (true)
	}
	alert("Invalid Billing Address2! Please re-enter.")
	return (false)	
	
}

function validateBillingAddress3(){

	if (/^([0-9A-Za-z\s\/\\\(\)\-\,]+)$/.test(billingaddress3) || billingaddress3.length == 0)
	{
		return (true)
	}
	alert("Invalid Billing Address3! Please re-enter.")
	return (false)	
	
}

function validateBillingTown(){

	if (/^([A-Za-z\s]+){2}$/.test(billingtown))
	{
		return (true)
	}
	alert("Invalid Billing Town! Please re-enter.")
	return (false)	
	
}

function validateBillingPostcode(){

	if (/^([0-9A-Za-z\s\-]+){3}$/.test(billingpostcode))
	{
		return (true)
	}
	alert("Invalid Postcode! Please re-enter.")
	return (false)	

}

function validateDeliveryAddress1(){

	if (/^([0-9A-Za-z\s\/\\\(\)\-\,]+){5}$/.test(deliveryaddress1) || deliveryaddress1.length == 0)
	{
		return (true)
	}
	alert("Invalid Delivery Address1! Please re-enter.")
	return (false)	
	
}

function validateDeliveryAddress2(){

	if (/^([0-9A-Za-z\s\/\\\(\)\-\,]+)$/.test(deliveryaddress2) || deliveryaddress2.length == 0)
	{
		return (true)
	}
	alert("Invalid Delivery Address2! Please re-enter.")
	return (false)	
	
}

function validateDeliveryAddress3(){

	if (/^([0-9A-Za-z\s\/\\\(\)\-\,]+)$/.test(deliveryaddress3) || deliveryaddress3.length == 0)
	{
		return (true)
	}
	alert("Invalid Delivery Address3! Please re-enter.")
	return (false)	
	
}

function validateDeliveryTown(){

	if (/^([A-Za-z\s]+){2}$/.test(deliverytown) || deliverytown.length == 0)
	{
		return (true)
	}
	alert("Invalid Delivery Town! Please re-enter.")
	return (false)	
	
}

function validateDeliveryPostcode(){

	if (/^([0-9A-Za-z\s\-]+){3}$/.test(deliverypostcode) || deliverypostcode.length == 0)
	{
		return (true)
	}
	alert("Invalid Delivery Postcode! Please re-enter.")
	return (false)	

}