//Last modified on 20/02/2001
var errMsgAll="";
function isSelected(selectvalue)
{
	if (selectvalue == 0)
	{
		return false;
	}
	else
	{
		return true;
	}
}
function isPhoneNumber(number)
{
	var pattern = /^(\d){3} (\d){3} (\d){4}$|^(\d){3}-(\d){3}-(\d){4}$|^(\d){10}$|^(\d){7}(\d)+$/
	var result;
	result = pattern.test(number);
	if (result){
		return true;
	}else{
		return false;
	}
}
function isCurrency(c)
{
	//var pattern = /^(\d)((\d)|(,))*(\.(\d){1,2})?$/g;
	
	var pattern = /^(\d)(\d)*(\.(\d){1,2})?$/g; // can't have the comma in it!
	var result;
	result = pattern.test(c);

	if (result) {
		return true;
	}else{
		return false;
	}
}

function isGraphic(c)
{
	//var pattern = /^(\d)((\d)|(,))*(\.(\d){1,2})?$/g;
	
	var pattern = /\.jpg|\.gif/gi; // can't have the comma in it!
	var result = '';
	result = pattern.test(c);
	
	if (result) {
		return true;
	}else{
		return false;
	}
	
}


function isURL(url)
{//
	var pattern = /^(\S+\.)+\S+(\/(\S)*)*$|^(\S+\.)+\S+(\/(\S)*)*\/$/g;
	//OLD VERSION DOESN'T SUPPORT NO HTTP:// var pattern = /^http:\/\/(\S+\.)+\S+(\/(\S)*)*$/g;
	//(\d)((\d)|(,))*(\.(\d){1,2})?
	
	var result;
	result = pattern.test(url);

	if (result) {
		return true;
	}else{
		return false;
	}
}

function isInteger(i)
{
	var pattern = /^(\d)+$/;
	var result;
	result = pattern.test(i);

	if (!result) return false;
//		alert("int OK");
//	else 
//		alert("int bAD");

	return true;

}

function isName(n)
{
	  //var pattern= /^[\O\s\b]|[0-9A-Za-z]|0-9a-zA-Z\s\.\-\,\.,]+$/gi;
	var pattern= /^[0-9a-zA-Z\s\.\-\,\.,]+$/gi;
	
	var result;
	result = pattern.test(n);

	if (!result) return false;
	return true;

}

function isAlphabet(n)
{
	
	var pattern= /^[A-Za-z][a-zA-Z\s\-\.]+$/gi;
	
	var result;
	result = pattern.test(n);

	if (!result) return false;
	return true;

}
function isDate(d, m, y){

	var daysInMonth = new Array(13);
	daysInMonth[1] = 31;
	daysInMonth[2] = 29;   // must programmatically check this
	daysInMonth[3] = 31;
	daysInMonth[4] = 30;
	daysInMonth[5] = 31;
	daysInMonth[6] = 30;
	daysInMonth[7] = 31;
	daysInMonth[8] = 31;
	daysInMonth[9] = 30;
	daysInMonth[10] = 31;
	daysInMonth[11] = 30;
	daysInMonth[12] = 31;

	if (!isInteger(d)) {
		return false;
	}
	if (!isInteger(m)) {
		return false;
	}
	if (!isInteger(y)) {
		return false;
	}
	
	if (m > 12) {
		return false;
	}
	if (daysInMonth[m] < d) {
		return false;
	}
	
	
	if ( y < 1900 ) {
		return false;
	}
	
	return true;
}

function isTime12(hh, mm){
	if (!isInteger(hh)) {
		return false;
	}else{
		if (hh > 12) return false;
	}
	
	if (!isInteger(mm)) {
		return false;
	}
	if (mm > 59) {
		return false;
	}
	return true;
}

function isTime24(hh, mm){
	if (!isInteger(hh)) {
		return false;
	}else{
		if (hh > 23) return false;
	}	
	if (!isInteger(mm)) {
		return false;
	}
	if (mm > 59) {
		return false;
	}
	return true;
}


function isPassword(pass){

	if (pass.length < 5 || pass.length >10) return false;
	else return true;
}

function isPasswordC(pass, passC){

	if (isPassword(pass)){
		
		if (pass == passC){ 
			return true;
		}else
			return false;
	
	}
	else 
		return false;
	
}

function isEmpty(s){  
	return ((s == null) || (s.length == 0))
}

// Returns true if string s is empty or 
// whitespace characters only.


function isWhitespace (s){
	
 var i;
var whitespace = " \t\n\r"
    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

// isEmail (STRING s [, BOOLEAN emptyOK])
// Email address must be of form a@b.c -- in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
function isEmail(s)
{   

	//Check that there is no whitespace in the address
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we start looking at character position 1 
    // (i.e. second character)
    i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@")){
		i++;
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) {
		return false;
    }else{ 
		i += 2;

		// look for .
		while ((i < sLength) && (s.charAt(i) != ".")){
			i++;
		}

		// there must be at least one character after the .
		if ((i >= sLength - 1) || (s.charAt(i) != ".")) {
			return false;
		}else{
			return true;
		}
	 }
}

function isEmailC(email, emailC){

	if (isEmail(email)){
		
		if (email == emailC){ 
			return true;
		}else
			return false;
	
	}
	else 
		return false;
	
}

function isPostcode(postcode){
	
	//var pattern= /^[0-9]{5}-[0-9]{4}$|^[0-9]{5}$|^[A-Z][0-9][A-Z]\s?[0-9][A-Z][0-9]$/g;
	//var pattern= /^(([AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]\d[A-Za-z]\s?\d[A-Za-z]\d))$/g;
	var pattern= /^[A-Za-z]\d[A-Za-z]\d[A-Za-z]\d$|^[0-9]{5}-[0-9]{4}$|^[0-9]{5}$/g;
	var result;
	result = pattern.test(postcode);
	if (!result) return false;
	else 
	return true;	
}
function isZipCode(zipcode){
	
	var pattern= /^[0-9]{5}-[0-9]{4}$|^[0-9]{5}$/g;
	var result;
	result = pattern.test(zipcode);
	if(!result) return false;
	else
	return true;
}

function isNI(ni){

	var pattern = /^(\D){2}(\d){6}(\D){1}$/g;
	var result;
	result = pattern.test(ni);
	if (!result) return false;
	else 
	return true;
	
}

function validateForm(frmCheck){
	
	errMsgAll = "";
	for (var i=0;i<frmCheck[0].length;i++){
		var frmElement = frmCheck[0][i].name;
		var frmValue = frmCheck[0][i].value;
		var allow = frmCheck[1][i];
		var typeCheck = frmCheck[2][i];
		var errMsg = frmCheck[3][i];
			
		var docheck = true; //Can set to false if we don't want to do a check on the object if it's empty.
		
		if (allow && (typeCheck==4 || typeCheck==8)){
			//Need to do a special check here as if day is empty then get error further down		
			
			if (typeCheck==4 ){
			//Check date
				if (frmValue=="" && frmCheck[0][i+1].value=="" && frmCheck[0][i+2].value=="") {
					docheck = false;
					i = i+2;
				}
			}
			else{
			//Check for time
				if (frmValue=="" && frmCheck[0][i+1].value=="") {
					docheck = false;
					i = i+1;
				}

			}
		}
		
		else 
		{
			if (frmValue=="") {docheck=false;} //we won't do the test if the Value is empty
		}

		if (allow==false && frmValue=="" ) {
			//if the field is required and not filled in then have and error
			errMsgAll = errMsgAll + errMsg + "\n";
			if (typeCheck ==4){
				i = i + 2;
			}
			if (typeCheck ==8){
				i = i + 1;
			}
			
			
		}else{
			//if ( (!(frmValue=="") ) ) {
			if (docheck)  {
				//if (frmValue == "") {alert();}
				
				switch (typeCheck){
					case 1://Is Integer
						if (!isInteger(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
		
					case 2://Email
						if (!isEmail(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
		
					case 3://Currency
						if (!isCurrency(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
		
					case 4://Date
						if (!isDate(frmValue, frmCheck[0][i+1].value, frmCheck[0][i+2].value)) {
							errMsgAll = errMsgAll + errMsg + "\n";
						}
						i = i + 2;
					break;
			
					case 5://Postcode
						if (!isPostcode(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
			
					case 6://NI
						if (!isNI(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
					
					case 7://URL
						if (!isURL(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;

					case 8://Time - 12 Hours				
						if (!isTime12(frmValue, frmCheck[0][i+1].value)) errMsgAll = errMsgAll + errMsg + "\n";
						i = i + 1;
					break;
					case 9://Time - 24 hours				
						if (!isTime24(frmValue, frmCheck[0][i+1].value)) errMsgAll = errMsgAll + errMsg + "\n";
						i = i + 1;
					break;
					case 10://Password
						if (!isPassword(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
					case 11:// password and confirm
						if (!isPasswordC(frmValue, frmCheck[0][i+1].value)) errMsgAll = errMsgAll + errMsg + "\n";
						i = i + 1;
					break;
					case 12:// email and confirm
						if (!isEmailC(frmValue, frmCheck[0][i+1].value)) errMsgAll = errMsgAll + errMsg + "\n";
						i = i + 1;
						
					break;
					case 13:// Graphic .jpg or .gif
						if (!isGraphic(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
						i = i + 1;
					break;
					case 14:// Name
						if (!isName(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
					case 15:// Alphabet for province or city
						if (!isAlphabet(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
				    break;
					case 16:// Zip code
						if (!isZipCode(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
					case 17:// Phone number
						if(!isPhoneNumber(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
					case 18:
						if(!isSelected(frmValue)) errMsgAll = errMsgAll + errMsg + "\n";
					break;
					
				}		
			} 
		}
	}

	if (errMsgAll != "") {
		window.alert('Sorry, you have made a mistake on this form.\rThe errors are as follows: \r\r' + errMsgAll);
		return false;
	}else return true;
}


function CheckboxesCheck()
		{
			//Checks if the checkboxes are selected
			//var frm = document.forms['updateform'];
			var errMsg = "";
			
			//TO BE UNCOMMENTED FOR USE WHEN PRODUCTS ARE TIED TO DEALERS
			/*
			var BoxChecked = false
			for (i=0; i < document.all.products.length; i++) 
			{
				if (document.all.products[i].checked) 
				{
				  BoxChecked = true
				  break
				}
			}
			if (! BoxChecked) 
			{
				errMsg = errMsg + "A Product Must be Checked" + "\n";
			}
			*/
			var BoxChecked2 = false;
			for (i=0; i < document.all.brands.length; i++) 
			{
				if (document.all.brands[i].checked) 
				{
				  BoxChecked2 = true;
				  break;
				}
			}
			if (! BoxChecked2) 
			{
				errMsg = errMsg + "A Brand Must be Checked" + "\n";
			}			
			
			
			if(errMsg != "")
			{
				window.alert(errMsg);
				return false;
			}
			else
			{
				return true;
			}
		}