//*********************************************************
//*                                                       *
//*   Script Name: checkForm.js                           *
//*   Function: Form Checking, error checking.            *
//*   Function Name: checkNumeric(),checkChar(),          *
//*       checkAmount(),checkBlank(),checkEmpty(),        *
//*       checkEmail(), checkDate(), checkTextBox(),      *
//*       checkMenuBox(), checkArrayNumeric(),            *
//*       checkMenuBox2(),checkExt()								  *
//*                                                       *
//*	  Author:  Gordon Lim Hon Wei						  *
//*   Creation Date: 2002-03-14							  *
//*                                                       *
//*********************************************************

	function checkExt(file,exname) {
		var ext;
		var exname;
		
			exname= new Array(exname);
			
		if (file=="") {
		}else{
				if (file.indexOf("\\") != -1) {
					//aa = aa.slice(aa.indexOf("\\") + 1);
					ext = file.slice(file.indexOf(".")).toLowerCase();
				}

				for (i=0;i<exname.length;i++) {
					if (ext==exname[i]) {
						return true;
					}else{
						return false;
					}
				}
		}
	}

	function checkNumeric(field,ctrl) 
	{
	var numericPat = /^(\"*\"|[0123456789]\w*)$/;
	var matchArray = field.match(numericPat);

		if (ctrl=="true") 
		{
			if (isNaN(field)) 
			{
			return false;
			}
		}
	
		if (ctrl=="false") 
		{
			if (field=="") 
			{
				return false;
			}
			
		
			if (matchArray == null) 
			{
				return false;
			}
			
			if (isNaN(field)) 
			{
				return false;
			}
		}
	
	}
	
	function checkChar(charStr) {

		if (charStr.value=="") {
		return false;
		}
		
		if (!isNaN(charStr.value)) {
		return false;
	}
	}
	
	function checkAmount(amtNum) {
				if (amtNum.value==0) {
				return false;
			}
			
				if (!parseFloat(amtNum.value)) {

					return false;
				}
}
	
	function checkBlank(field) {
		if (field.value=="") {

			return false;

		}

	}


		function checkEmpty(field) {

		for (i = 0; i < field.elements.length; i++) {
			if (field.elements[i].value==0) {
			return false;
			}
		}

	}

	
	function checkEmail(emailStr) {
// checks if the e-mail address is valid

var emailPat = /^(\".*\"|[A-Za-z]\w*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z]\w*(\.[A-Za-z]\w*)+)$/;
var text;
var ctrl;

var matchArray = emailStr.match(emailPat);
if (emailStr==0) {
return "blank";
}

if (matchArray==null) {
text +="\nYour email address seems incorrect.  Please try again (check the '@' and '.' in the email address)";

return false;
}
// make sure the IP address domain is valid
var IPArray = matchArray[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
if (IPArray != null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
text +="Destination IP address is invalid!";
alert(text);
return false;
      }
   }
}
return true;
}

  function checkDate(dateStr,dauto,status) {
  // Status: 1 - DD-MM-YY
  //         2 - YY-MM-DD
  // dauto usage: auto giving date string if month or day only 1 string, "5", it will auto
  //              return it to "05"
  // Parameter For dauto(optional): auto
  // Status: default empty, if you did not pass status into the function, it will auto check
  //         date to status 1.
  
  var mydate=dateStr.value;
  if (status==null) status="1";
  
     if (trim(mydate)=="") {
          return true;
       }else
          if (status==1) {
             var datePat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/;
          }
             if (status==2) {
                var datePat = /^(\d{4})(\/|-)(\d{1,2})(\/|-)(\d{1,2})$/;
             }
             
           var matchArray = mydate.match(datePat); // DD-MM-YY
 
           if (trim(mydate)!="" && matchArray == null) {
              return false;
           }
           
           if (status==1) {
                month = matchArray[3]; // parse date into variables
                day = matchArray[1];
                  year = matchArray[4];
           }
 
                  if (status==2) {
                     month = matchArray[3]; // parse date into variables
                     day = matchArray[5];
                     year = matchArray[1];
                  }
 
          if (month==0) {
              return false;
          }
          
             if (day==0) {
                 return false;
             }
             
          if (dauto!=null && dauto=="auto") {
             var numericPat = /^(\"*\"|[0]\w*)$/;
 
               if (month<="9") {
                  if (month==0) {
                     return false;
                  }
               
                 var monthArray=month.match(numericPat);
                 
                    if (monthArray==null && month.length<2) {
                       month="0"+month;
                    }else{
                       month=month;
                    }
               }
               
               if (day<=9) {
                  if (day==0) {
                     return false;
                  }
                  
                  var dayArray=day.match(numericPat);
                      if (dayArray==null && day.length<2) {
                          day="0"+day;
                      }else{
                          day=day;
                      }
               }
          }
          
      if (trim(mydate)=="" || dauto==null) {
      }else{
            if (status==1) {
               dateStr.value=day+"/"+month+"/"+year;
               mydate=day+"/"+month+"/"+year;
            }
               if (status==2) {
                  dateStr.value=year+"-"+month+"-"+day;
                  mydate=year+"-"+month+"-"+day;
               }
      }
 
          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;
          }
       }
 
          if (mydate.length<10 || mydate.length>10) {
             if (dauto!=null) {
                return false;
             }else{
                return false;
             }
          }
 
          return true;  // date is valid
  }
  
function checkTextBox(field,myname) {
// How to use? field=document.form_name
// myname=your_text_box_name;
// str=Textbox description;

var text="-=You have the following error message=-\n";
   for (i = 0; i < field.elements.length; i++) {
   if (field.elements[i].type=="text" && field.elements[i].name==myname && field.elements[i].value=="") {

	  return false;
    }
 }
}

function checkTextarea(field,myname) {
// How to use? field=document.form_name
// myname=your_text_box_name;
// str=Textbox description;

var text="-=You have the following error message=-\n";
   for (i = 0; i < field.elements.length; i++) {
   if (field.elements[i].type=="textarea" && field.elements[i].name==myname && trim(field.elements[i].value)=="") {

	  return false;
    }
 }
}
function checkMenuBox(field,myname) {
// How to use? field=document.form_name
// myname=your_text_box_name;
// str=Textbox description;

var text="-=You have the following error message=-\n";

	for (i = 0; i < field.elements.length; i++) {
 
   if (field.elements[i].name==myname && field.elements[i].value=="") {
	  return false;
    }
 }
}

function checkArrayNumeric(field,myname,ctrl) { 
//Function:  Checking Textbox's Array is Blank field or not and checking it is numeric or not.
// How to use? field=document.form_name
// myname=your_text_box_name;
// str=Textbox description;
// ctrl=true or false.

	

	for (i=0;i< field.elements.length;i++) {
	var numericPat = /^(\"*\"|[0123456789]\w*)$/;
	var matchArray = field.elements[i].value.match(numericPat);

	if (ctrl=="true") { //True, Allowed Textbox Empty but must be numeric.
		  if (field.elements[i].type=="text" && field.elements[i].name==myname && isNaN(field.elements[i].value)) {
		  return false;
   	   }
	}
	
	if (ctrl=="false") { //False, Textbox Empty Not Allowed, and Must be numeric.
	
	if (field.elements[i].type=="text" && field.elements[i].name==myname && field.elements[i].value=="") {

	  return false;
  		}
		
	  if (field.elements[i].type=="text" && field.elements[i].name==myname && matchArray==null) {
	  return false;
  		}	
	 }
	}

}

function checkedBox(form) {
	var myform=form.elements;
	var flag=false;
	
	for (i=1;i<myform.length-1;i++) {
		if (myform[i].checked==true) {
			flag=true;
		}
	}
	
	if (flag) {
		return true;
	}else{
		
	return false;
	}
}

function ltrim ( s )
{
	return s.replace( /^\s*/, "" )
}

function rtrim ( s )
{
	return s.replace( /\s*$/, "" );
}


function trim ( s )
{
	return rtrim(ltrim(s));

}

function checkTime(timeStr,flag) {

	if (flag=="hr") {
		var timePat = /^(\d{2})(\:)(\d{2})$/;
	}else{
		var timePat = /^(\d{2})(\:)(\d{2})\2(\d{2}|\d{2})$/;
	}
	
		var matchArray = timeStr.match(timePat); // DD-MM-YY
		var tstr=timeStr.split(":");

			if (matchArray==null) {
				return false;
			}
				if (tstr[0]>23 || tstr[0]<"00") {
					return "invhr";
				}
					if (tstr[1]>59 || tstr[1]<"00") {
						return "invmin";
					}
						if (flag=="hr") {
						}else{
							if (tstr[2]>59 || tstr[2]<"00") {
								return "invsec";
							}
						}
}


