/*remove excess white space*/
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

/*check email format, returns true if valid*/
function checkEmail(emailStr)
{
	var emailSyntax = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	var matchArray = emailStr.match(emailSyntax);
	if (matchArray == null)
	{
		return false;
	}
	return true;
}

/*checks a list of semicolon separated emails*/
function ParseEmail(emailStr) {
	var bValid = true;
	emailStrArr = emailStr.split(";")
	for (aCounter = 0; aCounter<emailStrArr.length ; ++aCounter)
	{
		if (!checkEmail(trim(emailStrArr[aCounter])))
		{
			bValid = false;
		}
	}
	return bValid;
}

function postit(test){ //check postcode format is valid
	size = test.length;
	test = test.toUpperCase(); //Change to uppercase
	while (test.slice(0,1) == " ") //Strip leading spaces
	{
		test = test.substr(1,size-1);size = test.length
	}
	while(test.slice(size-1,size)== " ") //Strip trailing spaces
	{
		test = test.substr(0,size-1);size = test.length
	}
	test = test; //write back to form field
	if (size < 6 || size > 8) { //Code length rule
		alert(test + " is not a valid postcode - wrong length. Please check and try again.");
		return false;
	}
	if (!(isNaN(test.charAt(0)))){ //leftmost character must be alpha character rule
		alert(test + " is not a valid postcode - cannot start with a number. Please check and try again.");
		return false;
	}
	if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
		alert(test + " is not a valid postcode. Please check and try again.");
		return false;
	}
	if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
		alert(test + " is not a valid postcode. Please check and try again.");
		return false;
	}
	if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
		alert(test + " is not a valid postcode. Please check and try again.");
		return false;
	}
	if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
		alert(test + " is not a valid postcode - no space or space in wrong position.");
		return false;
	}
	count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
	if (count1 != count2){//only one space rule
		alert(test + " is not a valid postcode - only one space allowed.");
		return false;
	}
	return true;
}

//input restriction
var res_phone = "()- 0123456789";
var res_numb = "0123456789";
var res_float = "0123456789.";
var res_alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
var res_username = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.-_";
var res_sagepay_name = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ .-'";
var res_sagepay_address = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -'+&.";
var res_sagepay_postcode = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -";
var res_sagepay_phone = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -+()";
//Usage : onkeyup="javascript:res(this,res_phone)"
function res(t,v){
	var w = "";
	for (i=0; i < t.value.length; i++) {
		x = t.value.charAt(i);
		if (v.indexOf(x,0) != -1)
		w += x;
	}
	t.value = w;
}

//basket functions
function BasketUpdate(pID, pGrade) {
	//check qty is number
	var pValue = trim(document.getElementById('prodqty'+pID+pGrade).value)
	//check is a number, not empty, not a float
	if (!isNaN(pValue) && pValue.length > 0 && pValue.indexOf(".") == -1 && pValue.indexOf("-") == -1) {
		document.getElementById('BasketID').value = pID;
		document.getElementById('BasketQty').value = document.getElementById('prodqty'+pID+pGrade).value;
		document.getElementById('BasketGrade').value = pGrade;
		document.getElementById('Action').value = 'BasketUpdate';
		document.getElementById('BasketActionForm').submit();
	}
	else {
		alert('Quantity is not a valid number');
		document.getElementById('prodqty'+pID+pGrade).focus();
	}
}

function BasketRemove(pID, pGrade) {
	var answer = confirm("Are you sure you want to remove this product?")
	if (answer){
		document.getElementById('BasketID').value = pID;
		document.getElementById('BasketGrade').value = pGrade;
		document.getElementById('Action').value = 'BasketRemove';
		document.getElementById('BasketActionForm').submit();
	}
}
/*
function ConfirmDelete(pID, pItem) {
	var answer = confirm("Are you sure you want to delete this " + pItem + "?")
	if (answer){
		window.location="http://"+location.host+location.pathname+"?action=delete&id=" + pID;
	}
}

function PlaceOrder() {
	document.getElementById('Action').value = 'PlaceOrder';
	document.getElementById('BasketActionForm').submit();
}
*/
