///---------------------------------------------------------------------------------
/// CompareDate: compare two input dates
/// Usage: 
///		- date1, date2: two input date
///		- type: EQ 1 if the input date in format mm/dd/yyyy
/// Return:
///		- 1 : if date1>date2
///		- 2 : if date1<date2
///		- 3 : if date1=date2
///---------------------------------------------------------------------------------
function CompareDate(date1,date2,type){
	if (!type) type=0;
	var dateInput=(type==1)?1:0;
	var dateType=new Array();
	dateType[0]=/^\d{1,2}(\-|\/|\.|\s)\d{1,2}(\-|\/|\.|\s)\d+$/;	//date format dd mm yyyy
	dateType[1]=/^\d{1,2}(\-|\/|\.|\s)\d{1,2}(\-|\/|\.|\s)\d+$/;	//date format mm dd yyyy

	if (date1.search(dateType[dateInput])==-1||date2.search(dateType[dateInput])==-1) return 0;
	
	var seperator1=(date1.indexOf("-")!=-1)?"-":(date1.indexOf("/")!=-1)?"/":(date1.indexOf(".")!=-1)?".":(date1.indexOf(" ")!=-1)?" ":"";
	var seperator2=(date2.indexOf("-")!=-1)?"-":(date2.indexOf("/")!=-1)?"/":(date2.indexOf(".")!=-1)?".":(date2.indexOf(" ")!=-1)?" ":"";
	
	if (seperator1==""||seperator2=="") return 0;
	
	var dateArr1=date1.split(seperator1);
	var dateArr2=date2.split(seperator2);
	
	if (dateArr1.length!=3||dateArr2.length!=3) return 0;
	
	if (dateInput==1){
		var year1 = dateArr1[2];
		var year2 = dateArr2[2];
		var month1 = dateArr1[0];
		var month2 = dateArr2[0];
		var day1 = dateArr1[1];
		var day2 = dateArr2[1];
	}else{
		var year1 = dateArr1[2];
		var year2 = dateArr2[2];
		var month1 = dateArr1[1];
		var month2 = dateArr2[1];
		var day1 = dateArr1[0];
		var day2 = dateArr2[0];
	}

	if (day1>31 || day2>31 || month1>12 || month2>12) return 0;
	if (CompareNumber(year1, year2) != 3) return CompareNumber(year1, year2);
	if (CompareNumber(month1, month2) != 3) return CompareNumber(month1, month2);
	if (CompareNumber(day1, day2) != 3) return CompareNumber(day1, day2);
	return 3;
}

///---------------------------------------------------------------------------------
/// compareNumber: compare two input numbers
/// Usage: 
///---------------------------------------------------------------------------------
function CompareNumber(num1, num2){
	if (parseFloat(num1)>parseFloat(num2)){
		return 1;
	}else if (parseFloat(num1)<parseFloat(num2)){
		return 2;
	}else{
		return 3;
	}
}

///---------------------------------------------------------------------------------
/// IsBlank: check if an element value is blank or not
/// Usage: 
///---------------------------------------------------------------------------------
function IsBlank(value){
	return (value.length == 0);
}
///---------------------------------------------------------------------------------
/// IsDate: check if the input string is a valid date value
/// Usage: 
///---------------------------------------------------------------------------------
function IsDate(s) {
	if (s.search(/^([0]?[1-9]|[1|2][0-9]|[3][0|1])[.\/-]([0]?[1-9]|[1][0-2])[.\/-]([0-9]{4}|[0-9]{2})$/) != -1)
		return true ;
	return false ;
}
///---------------------------------------------------------------------------------
/// IsNumeric: check if the input string is a numeric value
/// Usage: 
///---------------------------------------------------------------------------------
function IsNumeric(s){
	return !isNaN(s);
}
///---------------------------------------------------------------------------------
/// IsEmail: check if the specified string is a valid email address
/// Usage: 
///---------------------------------------------------------------------------------
function IsEmail(s){
	if (s.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]{2,6}$/) != -1)
		return true ;
	return false ;
}
///---------------------------------------------------------------------------------
/// IsValidName: check if the specified string is only included [a-z][0-9][-_]
/// Usage: 
///---------------------------------------------------------------------------------
function IsValidName(s){
	return ( (s.search(/^[A-Za-z0-9]+([-_]+)?/) != -1)	);	
}

///---------------------------------------------------------------------------------
/// CheckForm	: Check the form element data
/// Usage			: arr_ctrl = (invalid_test_expr, message [,control_name]) 
///---------------------------------------------------------------------------------
function CheckForm(frm, arr_ctrl) {
	for(var i=0; i<arr_ctrl.length; i++) {
		expr = eval( arr_ctrl[i][0] );
		if( expr ) {
			alert( arr_ctrl[i][1] ) ;
			if( arr_ctrl[i][2] )
				eval( "frm."  + arr_ctrl[i][2] ).focus() ;
			return false ; //== Error
		}
	}
	return true ; //== OK
}
