//SJS PIM 2346 Is London Flag
function validateOptions(element, elementValue, booCheckedValue)
{
	var validated = false;
//SJS Nov 2006 Revalidate rules for Allowances
	for (var i=0; i < element.length; i++)
	{
		if (element[i].checked == booCheckedValue)  
		{
			if (element[i].value == "N" && Number(elementValue.value) == 0)
				validated = false;
			else
				validated = true;
			break;
		}
		else
		{
			//Not checked, if mileage <> 0 and checkbox "N" than good enough
			if (Number(elementValue.value) > 0 && element[i].value == "N")
			{
				validated = true;
				break;
			}
		}
	}
	return validated
}
function confirmRange(element, lower, upper, allowNulls, errormessage)
//SJS variation of validateRange just to give the option of allowing values thru
{
	if ((Number(element.value) >= lower && Number(element.value) <= upper) || (allowNulls && element.value == ""))
		return true;
	else
		return confirm(errormessage + "\n\nTo continue with your claim click OK, to return to your timesheet click CANCEL.");
}

function validateRange(element, lower, upper, allowNulls, errormessage)
{
	if ((Number(element.value) >= lower && Number(element.value) <= upper) || (allowNulls && element.value == ""))
		return true;
	else
	{
		alert(errormessage + "\n\nPlease enter a value between " + lower + " and " + upper + ".");
		element.focus();
		element.select();
		return false;
	}
}

function validateLower(element, lower, allowNulls, errormessage)
{
	if (Number(element.value) >= lower || (allowNulls && element.value == ""))
		return true;
	else
	{
		alert(errormessage + "\n\nPlease enter a value greater than " + lower + ".");
		element.focus();
		element.select();
		return false;
	}
}

function validateUpper(element, upper, allowNulls, errormessage)
{
	if (Number(element.value) <= upper || (allowNulls && element.value == ""))
		return true;
	else
	{
		alert(errormessage + "\n\nPlease enter a value less than " + upper + ".");
		element.focus();
		element.select();
		return false;
	}
}

function validatePresent(element, allowNulls, errormessage)
{
	if ((allowNulls && element.value == "") || (!allowNulls && element.value != ""))
		return true;
	else
	{
		alert(errormessage + "\n\nPlease supply a value for this field.");
		element.focus();
		
		if (element.type != "select-multiple" && element.type != "select-one")
			element.select();

		return false;
	}
}

function validatePayroll(element, allowNulls)
{
	re = new RegExp("^[0-9]{6}[0-9X]$", "i");
	if (re.test(element.value) || (allowNulls && element.value == ""))
		return true;
	else
	{
		alert("Please enter a valid payroll number.");
		element.focus();
		element.select();
		return false;
	}
}

function validateAccount(element, allowNulls)
{
	re = new RegExp("^[A-Z][0-9]{6,7}$", "i");
	if (re.test(element.value) || (allowNulls && element.value == ""))
		return true;
	else
	{
		alert("Please enter a valid account number.");
		element.focus();
		element.select();
		return false;
	}
}

function validateReedEmail(element, allowNulls)
{
	var validated = false;
	
	if (allowNulls && element.value == "")
		validated = true;
	else
	{
		re = new RegExp("^.+@reed([a-z]*).co.uk$", "i");
		if (re.test(element.value))
		{
			switch (RegExp.$1)
			{
				case "" :
				
					validated = true;
					break;
					
				case "health" :
				
					validated = true;
					break;
					
				default :

					validated = false;
					break;
			}
		}
		
		if (validated == true)
			return true;
		else
		{
				alert("Please enter a valid Reed e-mail address.");
				element.focus();
				element.select();
				return false;
		}
	}
	
	return false;
}

function validateEmail(element, allowNulls)
{
	if (allowNulls && element.value == "")
		return true;
	else
	{
		var re = /^.+@[^\.].*\.[a-z]{2,}$/i;
		if (re.test(element.value))
			return true;
		else
		{
			alert("Please enter a valid e-mail address.");
			element.focus();
			element.select();
			return false;
		}
	}
}

function validateCompare(element, elementCompare, allowNulls, errormessage)
{
	if (element.value == elementCompare.value && ((allowNulls == true && element.value == "") || (allowNulls == false && element.value != "")))
		return true;
	else
	{
		alert(errormessage + "\n\nPlease re-enter the required information.");
		element.focus();
		element.select();
		return false;
	}
}

function validateTime(element)
{
	var re = /^([0-2]?[0-9])?([:\.\-])?([0-5][0-9]?)?$/;
	
	if (element.value == "")
		return false;
	
	if (re.test(element.value))
	{
		// The RegExp object automatically catches matches from any regular expression
		var hours = (RegExp.$1 == '') ? "00" : RegExp.$1;
		var separator = (RegExp.$2 == '') ? "." : RegExp.$2;
		var minutes = (RegExp.$3 == '') ? "00" : RegExp.$3;

		// Make sure that they haven't entered a silly value for hours
		if (hours > 23)
		{
			alert(hours + ".00 is not a valid 24-hour time.\n\nPlease enter a value between 00.00 and 23.59");
			element.select();
			element.focus();
			return false;
		}

		// Pad out hours with a preceding 0
		if (hours.length == 1)
			hours = "0" + hours.toString();

		// Force the separator to a .
		separator = separator.replace(/[\:\-]/, ".");

		// Pad out minutes with a trailing 0
		if (minutes.length == 1)
			minutes = minutes.toString() + "0";

		element.value = hours.toString() + separator + minutes.toString();

		return true;
	}
	else
	{
		alert("Please enter a valid time in 24-hour format (HH:MM)");
		element.select();
		element.focus();
		return false;
	}  
}

function validateMoney(element)
{
	var my_string = element.value;

	if (my_string != "")
	{
		if (my_string.match(/^\d{1,5}(\.[0-9]{1,2}\d?)?$/i))
		{
			if (!my_string.match(/\./i))
			{
				element.value = my_string + ".00";
			}
		}
		else
		{
			alert("You have entered an incorrect value. Please correct it and try again.");
			element.value = "";
		}
	}
}

function validateHours(element)
{
	var my_string = element.value;

	if (my_string != "")
	{
		if (my_string.match(/^\d{1,2}([:\.][0-5]\d?)?$/i))
		{
			my_string = my_string.replace(/\./, ":");

			if (!my_string.match(/:/i))
				element.value = my_string + ":00";
			else
			{
				var my_time = my_string.split(":");
				element.value = my_time[0] + ":" + my_time[1];
				if (my_time[1].length == 1)
					element.value += "0";
			}
		}
		else
		{
			alert("You have entered an incorrect value. Please correct it and try again.\n\n(Times should be entered as Hours:Minutes)");
			element.value = "";
		}
	}
}

function validatePostcode(element, allowNulls)
{
	if (allowNulls && element.value == "")
		return true;
	else
	{
		var re = /^[A-Z]{1,2}[0-9][0-9A-Z]?\s[0-9][A-Z]{2}$/i;
		var retest2 = /^\d{4}$/i;
		if (re.test(element.value))
			return true;
		else if (retest2.test(element.value))
			return true;
		else
		{
			alert("Please enter a valid Postcode.");
			element.focus();
			element.select();
			return false;
		}
	}
}

function validatePassword(element, allowNulls)
{
	if (allowNulls && element.value == "")
		return true;
	else
	{
		var re = /^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/i;
		if (re.test(element.value))
			return true;
		else
		{
			alert("Please enter a valid password.\n\nThe password must be at least eight characters long, and you will need to include at least one upper-case letter, one lower-case letter, and one number.");
			element.focus();
			element.select();
			return false;
		}
	}
}

function IsNumeric(strString)
{
	//  check for valid numeric strings	
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
}

// code copied from www.weberdev.com/get_example-4228.html - 2940
function validateURL(element) 
			{ 
				var v = new RegExp(); 
				v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$"); 
				if (!v.test(element.value)) 
				{ 
					alert("You must supply a valid URL."); 
					return false; 
			    }
			    else
					return true; 
			}