var VAL_NUM = 1;
var VAL_STR = 2;
var VAL_EMAIL = 3;
var VAL_SELECT = 4;
var VAL_ALLOWBLANKS = true;
var VAL_NOBLANKS = false;
var valid = true;

function validateInit() {
	valid = true;
}
	

function validateField(type, field, fieldID, text, minval, maxval, allowblanks) {
	// type:
	// 1 = number
	// 2 = string
	// 3 = email
	// 4 = select
		
	// minval + maxval can be null for no limit
	if(field.name == 'StateID') {
		document.getElementById('valstatenote').innerHTML = '';		
	}else if(field.name == 'PostCode') {
		document.getElementById('valpostcodenote').innerHTML = '';		
	}else if(field.name == 'PStateID') {
		document.getElementById('valpstatenote').innerHTML = '';				
	}else if(field.name == 'PPostCode') {
		document.getElementById('valppostcodenote').innerHTML = '';				
	} else {
		document.getElementById(fieldID+'note').innerHTML = '';
		if(fieldID != 'vallogpassword' && fieldID != 'valname') {
			document.getElementById(fieldID).style.display = 'none';
		}
	}
	
	document.getElementById(fieldID+'holder').className = 'ValidationHolder';		
	
	if (valid == false) 
		//return valid;
	var sError = '';
	var re=/^[A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)*[@][A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)+$/;

	if (!allowblanks && field.value == "" && type != 4) {
		if(field.name == 'PostCode') {
			if(document.getElementById('statepostholder')) {
				document.getElementById('statepostholder').style.display = '';
            }
            if (document.getElementById('postholder')) {
                document.getElementById('postholder').style.display = '';
            }					
			document.getElementById('valpostcodenote').innerHTML = text + ' was not entered';
			document.getElementById(fieldID+'holder').className = 'ValidationErrorNoIcon';	
		} else if(field.name == 'PPostCode') {
			if(document.getElementById('pstatepostholder')) {
				document.getElementById('pstatepostholder').style.display = '';
            }
            if (document.getElementById('ppostholder')) {
                document.getElementById('ppostholder').style.display = '';
            }			
			document.getElementById('valppostcodenote').innerHTML = text + ' was not entered';
			document.getElementById(fieldID+'holder').className = 'ValidationErrorNoIcon';				
		} else {
			document.getElementById(fieldID+'note').innerHTML = text + ' was not entered';
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';	
		}	
	
		valid = false;
	} else if (allowblanks && field.value == "" && type != 4) {
		sError = 'You must select an item from ' + text;			
		valid = true;
	} else if (type == 1) {
		if (!(field.value >= 0 || field.value < 0)) {
			if(field.name == 'PostCode') {
				if(document.getElementById('statepostholder')) {
					document.getElementById('statepostholder').style.display = '';
	            }
	            if (document.getElementById('postholder')) {
	                document.getElementById('postholder').style.display = '';
	            }						
				document.getElementById('valpostcodenote').innerHTML = text + ' must be a valid number';
				document.getElementById(fieldID+'holder').className = 'ValidationErrorNoIcon';	
			} else if(field.name == 'PPostCode') {
				if(document.getElementById('pstatepostholder')) {
					document.getElementById('pstatepostholder').style.display = '';
                }
                if (document.getElementById('ppostholder')) {
                    document.getElementById('ppostholder').style.display = '';
                }				
				document.getElementById('valppostcodenote').innerHTML = text + ' must be a valid number';
				document.getElementById(fieldID+'holder').className = 'ValidationErrorNoIcon';					
			} else {
				document.getElementById(fieldID+'note').innerHTML = text + ' must be a valid number';
				document.getElementById(fieldID).style.display = '';
				document.getElementById(fieldID+'holder').className = 'ValidationError';	
			}							
			valid = false;
		} else if (minval && field.value < minval) {
			document.getElementById(fieldID+'note').innerHTML = text + ' must be at least ' + minval;	
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';				
			valid = false;	
		} else if (minval == 0 && field.value < 0) {
			document.getElementById(fieldID+'note').innerHTML = text + ' must be at least ' + minval;	
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';				
			valid = false;			
		} else if (maxval && field.value > maxval) {
			if(field.name == 'PostCode') {
				document.getElementById('valpostcodenote').innerHTML = text + ' must be at maximum ' + maxval;
				document.getElementById(fieldID+'holder').className = 'ValidationErrorNoIcon';	
			} else if(field.name == 'PPostCode') {
				document.getElementById('valppostcodenote').innerHTML = text + ' must be at maximum ' + maxval;
				document.getElementById(fieldID+'holder').className = 'ValidationErrorNoIcon';					
			} else {
				document.getElementById(fieldID+'note').innerHTML = text + ' must be at maximum ' + maxval;
				document.getElementById(fieldID).style.display = '';
				document.getElementById(fieldID+'holder').className = 'ValidationError';	
			}			
		
			valid = false;
		}
	} else if (type == 2) {
		if (minval && field.value.length < minval) {
			document.getElementById(fieldID+'note').innerHTML = text + ' must be at least ' + minval + ' characters long';
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';			
			valid = false;
		} else if (maxval && field.value.length > maxval) {
			document.getElementById(fieldID+'note').innerHTML = text + ' must be at maximum ' + maxval + ' characters long';
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';			
			valid = false;
		}
	} else if (type == 3) {
		if (!re.test(field.value)) {
			document.getElementById(fieldID+'note').innerHTML = text + ' must be a valid address';	
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';				
			valid = false;
		} else if (minval && field.value.length < minval) {
			document.getElementById(fieldID+'note').innerHTML = text + ' must be at least ' + minval + ' characters long.';	
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';				
			valid = false;
		} else if (maxval && field.value.length > maxval) {
			document.getElementById(fieldID+'note').innerHTML = text + ' must be at maximum ' + maxval + ' characters long.';	
			document.getElementById(fieldID).style.display = '';
			document.getElementById(fieldID+'holder').className = 'ValidationError';			
			valid = false;
		}
	} else if (type == 4) {
	
		if (minval && field.selectedIndex < minval) {
		    if (field.name == 'StateID') {
		        if (document.getElementById('statepostholder')) {
		            document.getElementById('statepostholder').style.display = '';
		        }
		        if (document.getElementById('stateholder')) {
		            document.getElementById('stateholder').style.display = '';
		        }			
				document.getElementById('valstatenote').innerHTML = 'You must select an item from ' + text;		
			} else if(field.name == 'PStateID') {
				if(document.getElementById('pstatepostholder')) {
					document.getElementById('pstatepostholder').style.display = '';
	            }
	            if (document.getElementById('pstateholder')) {
	                document.getElementById('pstateholder').style.display = '';
	            }				
				document.getElementById('valpstatenote').innerHTML = 'You must select an item from ' + text;						
			} else {
				document.getElementById(fieldID+'note').innerHTML = 'You must select an item from ' + text;		
				document.getElementById(fieldID).style.display = '';
			}
			document.getElementById(fieldID+'holder').className = 'ValidationError';	
			valid = false;
		} 
	}	
	
	
	try {
		if (valid) {

		}
		if (valid == false) {
			field.focus();
		}
	}
	catch(er) { }
	return valid;	
}
	
	
	
function validateElement(type, field, text, minval, maxval, allowblanks) {
	// type:
	// 1 = number
	// 2 = string
	// 3 = email
	// 4 = select
		
	// minval + maxval can be null for no limit

	if (valid == false) 
		return valid;

	var re=/^[A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)*[@][A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)+$/;

	if (!allowblanks && field.value == "" && type != 4) {
		alert('\"' + text + '\" was not entered.');
		valid = false;
	} else if (allowblanks && field.value == "" && type != 4) {
		valid = true;
	} else if (type == 1) {
		if (!(field.value >= 0 || field.value < 0)) {
			alert('\"' + text + '\" must be a valid number.');
			valid = false;
		} else if (minval && field.value < minval) {
			alert('\"' + text + '\" must be at least ' + minval + '.');
			valid = false;
		} else if (maxval && field.value > maxval) {
			alert('\"' + text + '\" must be at maximum ' + maxval + '.');
			valid = false;
		}
	} else if (type == 2) {
		if (minval && field.value.length < minval) {
			alert('\"' + text + '\" must be at least ' + minval + ' characters long.');
			valid = false;
		} else if (maxval && field.value.length > maxval) {
			alert('\"' + text + '\" must be at maximum ' + maxval + ' characters long.');
			valid = false;
		}
	} else if (type == 3) {
		if (!re.test(field.value)) {
			alert('\"' + text + '\" must be a valid email address.');
			valid = false;
		} else if (minval && field.value.length < minval) {
			alert('\"' + text + '\" must be atleast ' + minval + ' characters long.');
			valid = false;
		} else if (maxval && field.value.length > maxval) {
			alert('\"' + text + '\" must be at maximum ' + maxval + ' characters long.');
			valid = false;
		}
	} else if (type == 4) {
		if (minval && field.selectedIndex < minval) {
			alert('You must select an item from \"' + text + '\".');
			valid = false;
		} 
	}	
	try {
		if (valid == false) {
			field.focus();
		}
	}
	catch(er) { }
	return valid;	
}

function charLimit(event, chars) {
	if (chars.indexOf(String.fromCharCode((window.Event) ? event.which : event.keyCode)) == -1) 
		return false;
}

function validateRadio(field, text)
{	

	if (valid)
	{
		valid = false;

		if (field.length == null)
		{
			if (field.checked)
			{
				valid = true;
				return valid;
			}
		}
		else
		{
			for (var i = 0; i < field.length; i++)
			{
				if (field[i].checked)
				{
					valid = true;
					return valid;
				}	
			}
		}
		
		if (!valid)
		{	
			alert("You must select an item from \"" + text + "\".");
			field.focus();
		}
	}	
	return valid;
}


function validateMultiSelect(field, text)
{
	if (valid)
	{
		valid = false;

		for (var i = 0; i < field.options.length; i++) 
		{
			if (field.options[i].selected) 
			{ 
				valid = true;
				return valid;
			}
		}

		if (!valid) 
		{
			alert("You must select an item from \"" + text + "\".");
			field.focus();		
		}
	}
	return valid;	
}


function getAge(yyyy, mm, dd) {
	var dateNow = new Date();
	var dateBirth = new Date(yyyy, mm - 1, dd);

	if (dateNow.getMonth() > dateBirth.getMonth()) {
		return dateNow.getFullYear() - dateBirth.getFullYear();
	} else if (dateNow.getMonth() < dateBirth.getMonth()) {
		return dateNow.getFullYear() - dateBirth.getFullYear() - 1;
	} else if (dateNow.getMonth() == dateBirth.getMonth() && dateNow.getDate() < dateBirth.getDate()) {
		return dateNow.getFullYear() - dateBirth.getFullYear() - 1;
	} else {
		return dateNow.getFullYear() - dateBirth.getFullYear();
	}	
}

function isFutureDate(formname, startdate, enddate, message) {

	var frm = eval('document.forms.' + formname);
	
    if (startdate > enddate) 
       alert(message);
}

