function err(element,msg){
	alert(msg);
	element.focus();
	if (element.name.substring(0,3) != "sel" && element.name.substring(0,3) != "opt"){
		element.select();
	}
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function validBlank(element, title) {
	if (element.value == "") { err(element,"Please input the "+title+" !"); return true }
	return false;
}

function validNum(element,title) {
	if (isNaN(element.value)) { err(element,"The "+title+" should be a number !"); return true }
	return false;
}

function validInt(element,title) {
	if (isNaN(element.value) || (element.value.indexOf(".") != -1)) { err(element,"The "+title+" should be a integer !"); return true }
	return false;
}

function validEmail(element,title){
	var validEmail=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
	if (element.value.length==0){return true;}
	if (!validEmail.test(element.value) ){ err(element,"It is not a valid email address !"); return true }
	return false;
}

function validLength(element,title,elementLength,unit) {
	if (element.value.length==0){return true;}
	if (element.value.length != elementLength) {
		err(element,"The "+title+" should be "+elementLength+" "+unit+" !");
		return false;
	}
	return true;
}

function validTime(element,title){
	if (element.value == ""){ return false }
	else {
		if ( (element.value.length != 4) || isNaN(element.value) ){
			err(element,"Please check the Time format!!\n It should be hhmm");
			return true;
		} else {
			hh = element.value.substr(0,2);
			mm = element.value.substr(2,2);
			if (hh<0 || hh>23 || mm<0 || mm>59){
				err(element,"Please check the Time format!!\n hh should be 0-23, mm should be 0-59.");
				return true;
			}
		}
		return false;
	}
}

function validProductCode(element,title){
	if (element.value == ""){ return false }
	else {
		max=20;
		if (element.value.length<2 || element.value.length>max){ err(element,title + " length should be 2 to "+max+" letters !"); return true }
		for (i=0; i<element.value.length; i++){
			letter = element.value.substr(i,1);
//			if ( isNaN(letter) && (letter < "a" || letter > "z") || letter == " "){
//				err(element,"Email name should be 0-9 or a-z only !"); return true;
//			}
			if ( isNaN(letter) && (letter < "A" || letter > "Z") && (letter < "a" || letter > "z") && (letter != "-") && (letter != "_")){
				err(element,title + " should be 0-20, _-, A-Z or a-z only !"); return true;
			}
		}
		return false;
	}
}


function validLongDate(element,title){
	if (element.value == ""){ return false }
	else {
		// format : dd-mm-yyyy
                if ( element.value.length != 10 ){
                        err(element,"Please check the Date format!\n It should be yyyy-mm-dd");
                        return true;
                }       
//		year  = element.value.substr(0,4);
//		month = element.value.substr(4,2);
//		day   = element.value.substr(6,2);
//		if ( (month <= 0 || month > 12) ||
//			 (day <= 0 || day > 31) ||
//			 (year < 0) ){
		if (checkDate(element.value)==false) {
				err(element,"Please check the Date format!!\n It should be yyyymmdd");
				return true;	
		}
		return false;
	}
}

function checkDate(dateStr) {
	year  = dateStr.substr(6,4);
        month = dateStr.substr(3,2);
        day   = dateStr.substr(0,2);        
	if (month < 1 || month > 12) { // check month range
		return false;
	}
	if (day < 1 || day > 31) {
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false;
	}
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
		}
	}
	return true;
}


function validShortDate(element,title){
	if (element.value == ""){ return false }
	else {
	// format : yyyymm
		if ( element.value.length != 6 || isNaN(element.value) ){ err(element,"Please check the Date format!!\n It should be yyyymm"); return true; }
		year  = element.value.substr(0,4);
		month = element.value.substr(4,2);
		if ( (month <= 0 || month > 12) ||
			 (year < 0) ){
				err(element,"Please check the Date format!!\n It should be yyyymm");
				return true;	
		}
		return false;
	}
}

function validChequeNo(element,title){
	if (element.value == ""){ return false }
	else {
		if (element.value.length != 6){ err(form.txtChequeNo, "The Cheque No. should be 6 digits!"); return true }
		return false;
	}
}

function validCreditCard(element1,element2,element3,element4,element5, title){
	if (validBlank_new(element1,title)){ return true }
	if (validBlank_new(element2,title)){ return true }
	if (validBlank_new(element3,title)){ return true }
	if (validBlank_new(element4,title)){ return true }
	if ( isNaN(element1.value) || isNaN(element2.value) || isNaN(element3.value) || isNaN(element4.value)  || isNaN(element5.value) ) { err(element1,"Invalid "+title+" !"); return true }
	return false;
}

function radioNotChecked(element,title){
	len = element.length;
	for (i=0; i<len; i++){
		if (element[i].checked) { return false }
	}
	err(element[0],"Please select the "+title+" !");
	return true;
}

function checkboxNotChecked(element,title,needAlert){
	// "element" is an array containing checkboxes
	len = element.length;
	for (i=0; i<len; i++){
		if (element[i].checked) { return false }
	}
	if (needAlert){	err(element[0],"Please select at least one from the "+title+" !") }
	return true;
}

function pulldownNotSelected(element,title) {
	if (element.options[0].selected == true){
		err(element,"Please select the "+title+" !");
		return true;
	}
	return false;
}

function validPhone(element, fieldName) {
numStr=element.value;
if (numStr.length==0) {
	return true;
} else {
	var validNum = "0123456789-";
	for (var i=0; i < numStr.length; i++) {
		temp = "" + numStr.substring(i, i+1);
		if (validNum.indexOf(temp) == "-1") {
			err(element,fieldName+" is not valid!");
			//alert("Invalid characters in "+fieldName+"!  Please try again.");
			return false;
		}
	}
	return true;
}
}

function validFloat(numStr, fieldName) {
if (numStr.length==0) {
return true;
}
else {
var validNum = "0123456789.";

for (var i=0; i < numStr.length; i++) {
temp = "" + numStr.substring(i, i+1);
if (validNum.indexOf(temp) == "-1") {
alert("Invalid characters in "+fieldName+"!  Please try again.");
return false;
}
}
return true;
}
}

function validDate(dateStr, fieldName) {
// Checks for the following valid date formats:
// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
// Also separates date into month, day, and year variables

// var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

// To require a 4 digit year entry, use this line instead:
// var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

if (dateStr.length==0) {
return true;
}
else {

if ((dateStr.length!=10) && (dateStr.length!=0)) {
alert("Invalid date format in "+fieldName+"!  Please try again.")
return false;
}

var datePat = /^(\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/;

if (dateStr.length==10) {
var matchArray = dateStr.match(datePat); // is the format ok?
 if (matchArray == null) {
 alert("Invalid date format in "+fieldName+"!  Please try again.")
 return false;
}
month = matchArray[3]; // parse date into variables
day = matchArray[4];
year = matchArray[1];
if (month < 1 || month > 12) { // check month range
alert("Month must be between 1 and 12 in "+fieldName+"!");
return false;
}
if (day < 1 || day > 31) {
alert("Day must be between 1 and 31 in "+fieldName+"!");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Month "+month+" doesn't have 31 days in "+fieldName+"!")
return false;
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("February " + year + " doesn't have " + day + " days in "+fieldName+"!");
return false;
   }
}
}
return true;
}
}

function convertDate(dateStr) {
if (dateStr.length==0) {
return dateStr;
}
else {
	var x=new Array();
	var j=0;
	for (var i=0; i < dateStr.length; i++) {
		x[j] = "" + dateStr.substring(i, i+1);
		if (i==6 && x[j] == "/") {
			temp=x[5];
			x[5]="0";
			x[6]=temp;
			x[7]="/";
			j++;
		}
		if (i==dateStr.length-1 && j!=9) {
			temp=x[8];
			x[8]="0";
			x[9]=temp;
		}
		j++;
	}
	temp="";
	for (i=0; i < 10; i++) {
		temp+=x[i];
	}
	return temp;
}
}

function convertSimpleDate(dateStr) {
	dateStr1=convertDate(dateStr);
	temp=dateStr1.substring(0,4) + dateStr1.substring(5,7) + dateStr1.substring(8,10);
	return temp;
}

function validMoney(moneyStr, fieldName) {
	if (moneyStr.value=="") { return false }
	else {
		decimals = 2;  // how many decimals are allowed?
		if (isNaN(moneyStr.value)) { err(moneyStr, "Invalid value in "+fieldName+"!"); return true}
		else {
			if (moneyStr.value.indexOf('.') == -1) return false;
			
			dectext = moneyStr.value.substring(moneyStr.value.indexOf('.')+1, moneyStr.value.length);

			if (dectext.length > decimals) {
				err(moneyStr, "Please enter a number with up to " + decimals + " decimal places in "+fieldName+"."); return true}

			//timeshundred = parseFloat((moneyStr.value) * Math.pow(10, decimals));
			//integervalue = parseInt(parseFloat(moneyStr.value) * Math.pow(10, decimals));
			//if (timeshundred != integervalue) {
			//	err(moneyStr, "Please enter a number with up to " + decimals + " decimal places in "+fieldName+"."); return true}
		}
		return false;
	}
}

function validTimeFull(timeStr) {
	// var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
	
	if ((timeStr.length!=5) && (timeStr.length!=0)) {
	alert("Invalid time format!  Please try again.");
	return false;
	}
	
	var timePat = /^(\d{1,2}):(\d{2})$/;
	
	if (timeStr.length==5) {
	var matchArray = timeStr.match(timePat);
	if (matchArray == null) {
	alert("Time is not in a valid format.");
	return false;
	}
	hour = matchArray[1];
	minute = matchArray[2];
	// second = matchArray[4];
	// ampm = matchArray[6];
	
	// if (second=="") { second = null; }
	// if (ampm=="") { ampm = null }
	
	if (hour < 0  || hour > 23) {
	alert("Hour must be between 0 and 23.");
	return false;
	}
	// if (hour <= 12 && ampm == null) {
	// if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
	// alert("You must specify AM or PM.");
	// return false;
	//    }
	// }
	// if  (hour > 12 && ampm != null) {
	// alert("You can't specify AM or PM for military time.");
	// return false;
	// }
	if (minute<0 || minute > 59) {
	alert ("Minute must be between 0 and 59.");
	return false;
	}
	// if (second != null && (second < 0 || second > 59)) {
	// alert ("Second must be between 0 and 59.");
	// return false;
	// }
	return false;
	}
}


function convertIDMonth(numStr) {
IDMonth="";
for (var i=0; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
	IDMonth = IDMonth + numStr.substring(i, i+1);
}
IDMonth=IDMonth+"-";
for (i=i+1; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
	IDMonth = IDMonth + numStr.substring(i, i+1);
}
return IDMonth;
}

function convertIDNo(numStr) {
IDNo="";
for (var i=0; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
}
for (i=i+1; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
}
for (i=i+1; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
	IDNo = IDNo + numStr.substring(i, i+1);
}
return IDNo;
}

function convertIDFollowed(numStr) {
IDFollowed="";
for (var i=0; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
}
for (i=i+1; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
}
for (i=i+1; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
}
for (i=i+1; (i < numStr.length) && (numStr.substring(i, i+1)!="-"); i++) {
	IDFollowed = IDFollowed + numStr.substring(i, i+1);
}
return IDFollowed;
}

function validNoSpace(element,title) {
	if (element.value!='') {
		var a=element.value;
		var b=a.search(/[ ]/gi);
		if (b>-1){
			err(element,"The "+title+" should not contain any space !"); return true;
		}
	}
	return false;
}

function validPwdChr(element,title) {
	var validChrs = /^[\w\d]*$/;

	if (element.value!='') {
		var a=element.value;
		if (!validChrs.test(a)) {
			err(element,"The "+title+" should not content invalid characher(s) !"); return true;
		}
	}
	return false;
}
