{
	var e = new ErrorMsgObj ();
}

var iClicks = 0;
var iSeconds = 0;
var iMinutes = 0;


function testRegExp(parsePattern, searchString) {
    
    var matchArray=searchString.match(parsePattern);
    if (matchArray==null) {
     return 'NO';
    }
    var newStr = '';
    for (i=0; i<matchArray.length; i++) {
     newStr += matchArray[i];
    }
    return newStr;
   }


function newEM()
{
	e = null;
	e = new ErrorMsgObj ();
	e.initErrMsgs ();
	e.errMsgArray = new Array ();
	e.errMsgIndex = 0;
	e.errMsgAdded = false;
	
}

function chkEmptyFld (fld, nam)
{
	if (fld.value.length == 0)
	{
		e.addErrorMsg ('You have not filled in the  \'' + nam + '\'.');
		e.setError(fld);
		return;
	}
	else if (fld.value == null)
	{
		e.addErrorMsg ('You have not filled in the  \'' + nam + '\'.');
		e.setError(fld);
		return;
	}
	else 
	{
		for (var i=0; i<fld.value.length; i++)
		{
			var ch = fld.value.charAt(i);
			if (ch != ' ' && ch != '\t') 
			{
				break;
			}
			else
			{
//				alert('i='+i+' fld.value.length='+fld.value.length);
				if ((i + 1) == fld.value.length)
				{
					e.addErrorMsg ('You have not filled in the  \'' + nam + '\'.');
					e.setError(fld);
					break;
				}
			}
		}
	}
}

function chkLongPhone(fld, nam)
{	
	
	
	var phone = testRegExp(/[0-9]/gi, fld.value);
		
		if (phone == 'NO')
			{
				e.addErrorMsg ('You must enter a \'' + nam + '\' number.');
				e.setError(fld);
				return;
			}
		
		if (phone.length < 10 || phone.length > 10)
			{
				e.addErrorMsg ('The \'' + nam + '\' must have 10 digits.');
				e.setError(fld);
				return;
			}
}

function chkOptLongPhone(fld, nam)
{	
	var phone = testRegExp(/[0-9]/gi, fld.value);
	
			if (fld.value.length == 0)
				{
					
				}	
			else
			{
				if (phone.length < 10 || phone.length > 10)
					{
						e.addErrorMsg ('The \'' + nam + '\' must have 10 digits.');
						e.setError(fld);
						return;
					}
			}
}




function chkPhone(fld, nam)
{	
	//orig_phone = fld.value;
	//var new_phone = replaceSubstring(fld.value, "-", "");

	//var phone = new_phone;
	
	var phone = fld.value;
	
	
	if (phone.length < 7)
			{
				e.addErrorMsg ('The \'' + nam + '\' must have 7 digits.');
				e.setError(fld);
				return;
			}

	else if (phone.length == 0 )
			{
				e.addErrorMsg ('You have not filled in the \'' + nam + '\'.');
				e.setError(fld);
				return;
	
			}
	
	
	for (var i = 0; i<fld.value.length; i++)
	{
		var ch = fld.value.charAt(i);
		if (ch < '0' || ch > '9')
		{
			e.addErrorMsg ('The \'' + nam + '\' must be numeric only.');
			e.setError(fld);
			break;
		}
		
		
	}
}

function chkAreacode(fld, nam)
{	var phone = fld.value;
	
	
	if (phone.length < 3)
			{
				e.addErrorMsg ('The \'' + nam + '\' must have 3 digits.');
				e.setError(fld);
				return;
			}

	else if (phone.length == 0 )
			{
				e.addErrorMsg ('You have not filled in the \'' + nam + '\'.');
				e.setError(fld);
				return;
	
			}
	
	
	for (var i = 0; i<fld.value.length; i++)
	{
		var ch = fld.value.charAt(i);
		if (ch < '0' || ch > '9')
		{
			e.addErrorMsg ('The \'' + nam + '\' must be numeric only.');
			e.setError(fld);
			break;
		}
		
		
	}
}



function chkValidEmail(fld, nam)
{
	/* check string contains a '@' and '.' */
	var address = fld.value;
	invalidChars = " /:,;";
	for (var i=0; i<invalidChars.length; i++)
	{
		var badChar = invalidChars.charAt(i);
		if (address.indexOf(badChar,0) > -1)
		{	
			// an invalid character was found in the email address
			e.addErrorMsg ('An invalid character was found in the email address.');
			e.setError(fld);
		}
	}
	
	var atPos = address.indexOf('@',1)
	if (atPos == -1)
	{
		// we did't find an '@' after the first character, invalid
		e.addErrorMsg ('You have not filled in an email address.');
		e.setError(fld);
		return;
	}
	else
	{
		if (address.indexOf('@',atPos+1) > -1)
		{
			// there is more than one '@', invalid
			e.addErrorMsg ('This is not a proper email address.');
			e.setError(fld);
			return;
		}
		else
		{
			var periodPos = address.indexOf('.', atPos)
			if (periodPos == -1)
			{
				// didn't find a '.' after the '@', invalid
				e.addErrorMsg ('This is not a proper email address.');
				e.setError(fld);
				return;
			}
			else
			{
				if (periodPos +3 > address.length)
				{	
					// there wasn't at least 2 characters after the '.', invalid
					e.addErrorMsg ('This is not a proper email address.');
					e.setError(fld);
					return;
				}
			}
		}
	}
}



function chkIsValidDutchCode(fld, nam)
{
	var code = fld.value;
	
	
	
	{		
		
		if (code.length < 6 )
		{
			e.addErrorMsg('De postcode bevat niet genoeg tekens.');
			e.setError(fld);
			return;
		}
		
		
		code = code.toUpperCase();
		for (var i = 0; i<code.length; i++)
		{
			var ch2 = code.charAt(i);
			if (i == 4 || i == 5)
			{
				if (ch2 < 'A' || ch2 > 'Z')
				{
					// it is not a letter
					e.addErrorMsg ('De postcode staat niet in de juiste volgorde (9999XX).');
					e.setError(fld);
					break;
				}
			}
			else if (i == 0 || i == 1 || i == 2 || i == 3)
			{
				if (ch2 < '0' || ch2 > '9')
				{
					// it is not a number
					e.addErrorMsg ('De postcode staat niet in de juiste volgorde  (9999XX).');
					e.setError(fld);
					break;
				}
			}
		}
	}
	
}

function chkSelect (fld, nam)
{
	if (fld.value == '0')
	{
		e.addErrorMsg ('You have not choosen an AMJ Rep. Please select a preferred rep or select *Any Rep*.');
		e.setError(fld);
		return;
	}
}

function chkBoth (fld1, fld2, nam)
{
	if (fld1.value + fld2.value == 'choosechoose')
			{
				e.addErrorMsg ('Kies eerst uw merk en type telefoon voor de carkit en/of de accessoireset die u wilt bestellen, of kies "anders" en vul het merk en type in.');
				e.setError(fld1);
				return;
			}
		
	
}

function chkWant (fld1, fld2, nam)
{
	if (fld1.checked)
			{
			if (fld2.value == 'choose'){
				e.addErrorMsg ('U wilt de  \'' + nam + '\' kopen, maar u heeft het merk/type niet geselecteerd.');
				e.setError(fld1);
				return;
						}
			}
	else	{
			if (fld2.value != 'choose'){
				e.addErrorMsg ('U heeft een merk/type gekozen voor de  \'' + nam + '\', maar u heeft het hokje bij de \'' + nam + '\' niet geselecteerd.');
				e.setError(fld1);
				return;
						}
	
		}
			
}

function chkDate (fld,  nam)
{
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	    	var matchArray = fld.match(datePat); // is the format ok?
	
	    if (matchArray == null) {
	         e.addErrorMsg ('bad date.');
			       e.setError(fld);
		return;
	    }
	
	    day = matchArray[1]; // parse date into variables
	    month = matchArray[3];
	    year = matchArray[5];
	
	    if (month < 1 || month > 12) { // check month range
	       e.addErrorMsg ('bad date.');
	       e.setError(fld);
		return;
	    }
	
	    if (day < 1 || day > 31) {
	         e.addErrorMsg ('bad date.');
			       e.setError(fld1);
		return;
	    }
	
	    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
	        e.addErrorMsg ('bad date.');
	       	       e.setError(fld);
		return;
	    }
	
	    if (month == 2) { // check for february 29th
	        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	        if (day > 29 || (day==29 && !isleap)) {
	            e.addErrorMsg ('bad date.');
		   	       e.setError(fld);
		return;
	        }
	    }

		
}

function chkChecked (fld,  nam)
{
	if (!fld.checked)
	{
		e.addErrorMsg ('U bent vergeten het veld: \''+ nam + '\' aan te kruisen');
		e.setError(fld);
		return;
	}
		
}



function chkAnder (fld1, fld2, nam)
{
	if (fld1.value == 'anders,')
			{
			if (fld2.value == ''){
				e.addErrorMsg ('U wilt een \'' + nam + '\' kopen voor een merk/type die niet in de bestaande lijst voorkomt. Vul zelf een merk/type in, of kies een merk/type uit de bestaande lijst.');
				e.setError(fld1);
				return;
						}
			}

//function chkPassword (fld1, fld2, nam)
//{
//	if (fld1.value =! fld2.value )
//			{
//				e.addErrorMsg ('Your passwords do not match.');
//				e.setError(fld1);
//				return;
//						
//			}
	
}

function chkRequired(fld1, fld2, nam1, nam2)
{
	if (fld1.checked && !fld2.checked)
			{
				e.addErrorMsg ('U wilt een \'' + nam1 + '\' bestellen, maar dit kan alleen in combinatie met \'' + nam2 + '\'');
				e.setError(fld2);
				return;
			}
	
}


function chkValidAccount(fld, nam)
{
	/* Check that the account number has only numbers. */

	for (var i = 0; i<fld.value.length; i++)
	{
		var ch = fld.value.charAt(i);
		if (ch < '0' || ch > '9')
		{
			e.addErrorMsg ('Het veld \'' + nam + '\' moet in nummers worden ingevuld.');
			e.setError(fld);
			break;
		}
		
		
	}

}

function chkDay(fld, nam)
{
	day = fld.value
	if (day < 1 || day > 31)
		{
			e.addErrorMsg ('Het veld \'' + nam + '\' moet in nummers worden ingevuld.');
			e.setError(fld);
			return;
		}
		
	

}

function chkMonth(fld, nam)
{
	month = fld.value
	if (month < 1 || month > 12)
		{
			e.addErrorMsg ('Het veld \'' + nam + '\' moet in nummers worden ingevuld.');
			e.setError(fld);
			return;
		}
		
	

}

function chkYear(fld, nam)
{
	year = fld.value
	if (year < 1899 || year > 2000)
		{
			e.addErrorMsg ('Het veld \'' + nam + '\' moet in nummers worden ingevuld.');
			e.setError(fld);
			return;
		}
		
	

}

function chkIsValidCode(fld, nam)
{
var code = fld.value;
code = code.toUpperCase();
var ch = code.charAt(3);
		if (code.length < 6 || code.length > 7)
				{
					e.addErrorMsg('The postal code is not in a valid format (X9X9X9 or X9X 9X9)');
					e.setError(fld);
					return;
				}
		else if (code.length == 7)
			{
				var ch = code.charAt(3);
				if (ch == ' ')
				{
					code = code.substring(0,3) + code.substring(4);
				}
				else
				{	
					e.addErrorMsg('The postal code is not in a valid format (X9X9X9 or X9X 9X9)');
					e.setError(fld)
					return;
				}
			}
			
		for (var i = 0; i<code.length; i++)
		{
			var ch2 = code.charAt(i);
			if (i == 0 || i == 2 || i == 4)
			{
				if (ch2 < 'A' || ch2 > 'Z')
				{
					// it is not a letter
					e.addErrorMsg ('The postal code is not in a valid format (X9X9X9 or X9X 9X9)');
					e.setError(fld)
					break;
				}
			}
			else if (i == 1 || i == 3 || i == 5)
			{
				if (ch2 < '0' || ch2 > '9')
				{
					// it is not a number
					e.addErrorMsg ('The postal code is not in a valid format (X9X9X9 or X9X X9X)');
					e.setError(fld)
					break;
				}
			}
		}
}

function chkIfIsValidCode(fld, nam)
{
var code = fld.value;
code = code.toUpperCase();
var ch = code.charAt(3);
		if (code.length == 7)
		{
			var ch = code.charAt(3);
			if (ch == ' ')
			{
				code = code.substring(0,3) + code.substring(4);
			}
			else
			{	
				e.addErrorMsg('The postal code is not in a valid format (X9X9X9 or X9X 9X9)');
				e.setError(fld)
				return;
			}
			}
			
		for (var i = 0; i<code.length; i++)
		{
			var ch2 = code.charAt(i);
			if (i == 0 || i == 2 || i == 4)
			{
				if (ch2 < 'A' || ch2 > 'Z')
				{
					// it is not a letter
					e.addErrorMsg ('The postal code is not in a valid format (X9X9X9 or X9X 9X9)');
					e.setError(fld)
					break;
				}
			}
			else if (i == 1 || i == 3 || i == 5)
			{
				if (ch2 < '0' || ch2 > '9')
				{
					// it is not a number
					e.addErrorMsg ('The postal code is not in a valid format (X9X9X9 or X9X X9X)');
					e.setError(fld)
					break;
				}
			}
		}
}
