// Validation Routines
var css_valid = "textbox";
var css_invalid = "textbox_invalid";

function validate_null(field)
{
	var value = "";
	if(field.tagName == "INPUT" || field.tagName == "TEXTAREA") value = field.value;
	else if (field.tagName == "SELECT") value = field.options[field.selectedIndex].value;
	
	if(value == "")
	{
		field.className = css_invalid;
		
		if(field.nextSibling)
			if(field.nextSibling.id == "required")
				field.nextSibling.innerHTML = "* required";
		return true;
	}
	else
	{
		field.className = css_valid;
		if(field.nextSibling)
			if(field.nextSibling.id == "required")
				field.nextSibling.innerHTML = "*";

		return false;
	}
}

function validate_passwordstrength(field)
{
	var passValue = field.value;
	var strength_int = 0;

	//- Upper case letters 
	if (passValue.match(/[A-Z]/)) strength_int++; 
	
	//- Lower case letters 
	if (passValue.match(/[a-z]/)) strength_int++; 
	
	//- Digits 
	if (passValue.match(/[0-9]/)) strength_int++; 
	
	//- Special characters (!, @, $, %, etc.) 
	if (passValue.match(/[@#$%&!*)(-+=^]/)) strength_int ++; 
	
	if (strength_int >= 2)
	{
		field.className = css_valid;
		if(field.nextSibling.id == "required")
			field.nextSibling.innerHTML = "*";
		return false;
	}
	else
	{
		field.className = css_invalid;
		
		if(field.nextSibling.id == "required")
			field.nextSibling.innerHTML = "* weak password";

		return true;
	}
}

function validate_email(field)
{
	var email_re = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/g;
	if(!email_re.test(field.value))
	{
		field.className = css_invalid;
		if(field.nextSibling.id == "required")
			field.nextSibling.innerHTML = "* invalid";
		return true;
	}
	else
	{
		field.className = css_valid;
		if(field.nextSibling.id == "required")
			field.nextSibling.innerHTML = "*";
		return false;
	}
}

function validate_compare(field_one, field_two)
{
	if((field_one.value != "") && (field_two.value != ""))
		if(field_one.value != field_two.value)
		{
			field_one.className = css_invalid;
			if(field_one.nextSibling.id == "required")
				field_one.nextSibling.innerHTML = "* match not found";
			field_two.className = css_invalid;
			if(field_two.nextSibling.id == "required")
				field_two.nextSibling.innerHTML = "* match not found";
			return true;
		}
		else
		{
			field_one.className = css_valid;
			if(field_one.nextSibling.id == "required")
				field_one.nextSibling.innerHTML = "* ";
			field_two.className = css_valid;
			if(field_two.nextSibling.id == "required")
				field_two.nextSibling.innerHTML = "* ";
			return false;
		}
	else
	{
		field_one.className = css_invalid;
		if(field_one.nextSibling.id == "required")
			field_one.nextSibling.innerHTML = "* required";
		field_two.className = css_invalid;
		if(field_two.nextSibling.id == "required")
			field_two.nextSibling.innerHTML = "* required";
		
		return true;
	}
}

function validate_fileextension(field_obj, extensions_str, allownull_bool)
{
	var path_str = field_obj.value;
	var extensions_arr = extensions_str.split(",");

	//Test NULL
	if(path_str == "")
	{
		if(!allownull_bool)
		{
			field_obj.className = css_invalid;
			
			if(field_obj.nextSibling.id == "required")
				field_obj.nextSibling.innerHTML = "* required";
			return true;
		}
		else
		{
			field_obj.className = css_valid;
			if(field_obj.nextSibling.id == "required")
				field_obj.nextSibling.innerHTML = "*";
			return false;
		}
	}

	var extension_str = path_str.substring(path_str.lastIndexOf(".") + 1, path_str.length);
	
	for(i=0; i < extensions_arr.length; i++)
	{
		if(extensions_arr[i] == extension_str.toLowerCase())
		{
			field_obj.className = css_valid;
			if(field_obj.nextSibling.id == "required")
				field_obj.nextSibling.innerHTML = "*";
			return false;
		}
	}

	field_obj.className = css_invalid;
	
	if(field_obj.nextSibling.id == "required")
		field_obj.nextSibling.innerHTML = "* invalid file type";
	return true;

}