//  Commonly used functions for Javascript
var errhnd=false

   function space_remover(obj){ //Removes Spaces in the string
      p = obj.indexOf(" ",0)
	  strnew=0;
	  txt= new String();
      while(p!=-1)
      {
	     txt = txt + obj.substr(strnew,p-strnew);
		 strnew=p+1
		 p = obj.indexOf(" ",p+1)

	  }
	     
	    txt = txt + obj.substr(strnew,obj.length-strnew)
	  return (txt);
   }
    function IsPhone(eobj){//Phone Validation
	   var str = eobj;
	   str1=space_remover(str);
        var res = str1.match(/^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$/g)
       if (res)
          return true //Valid Phone
       return false  //Invalid Phone
    }
    function IsMobile(eobj){//Phone Validation
	   var str = eobj;
	   str1=space_remover(str);
       var res = str1.match(/^\([0-9]{1,4}\)[0-9]{3}-[0-9]{4}$/g)
       if (res)
          return true //Valid Phone
       return false  //Invalid Phone
    }
    function IsEmail(ieobj){//Email Validation
	   var estr = ieobj          
       var eres = estr.match(/^(\s)*[_a-z0-9A-Z-]+(\.[_a-z0-9A-Z-]+)*@[a-z0-9A-Z-]+(\.[a-z0-9A-Z-]+)+$/g)
       if (eres)
          return true  //Valid Email
       return false  //Invalid Email
    }
	function IsNull(obj) //Null Validation
    {
      var sc=0
      p = obj.indexOf(" ",0)
      while(p!=-1)
      {
         sc++ 
         p=obj.indexOf(" ",p+1)
      }
      if (sc==obj.length)
         return true // String is null
     return false  //  String is not null
    }
	function IsNullBr(obj) //Null Validation
    {
      var sc=0
      p = obj.indexOf("\r",0)
      while(p!=-1)
      {
         sc+=2 
         p=obj.indexOf("\r",p+1)
      }
      if (sc==obj.length)
         return true // String is null
     return false  //  String is not null
    }	
    function IsSpace(sobj){ //Space Validation
     if (sobj.indexOf(" ")!=-1){
       return true //String with space
	 }
	 return false //String without space
    }
    function InvalidName(nobj)
    {
       var mstr = nobj          
       var res = mstr.match(/[^A-Za-z'\s]/g)
       if (res)
          return true
       return false
    }
    function InvalidCode(nobj)
    {
       var mstr = nobj          
       var res = mstr.match(/[^A-Za-z0-9\-]/g)
       if (res)
          return true
       return false
    }
    function IsNotNumber(iobj){ //Number Validation
       var myString = iobj
       var inThere = myString.match(/\D/g)
       if (inThere) {
          return true //Invalid number
       }
       return false //Valid Number
    }
 
 function IsFloat(iobj){ //Number Validation
       var myString = iobj
       var inThere = myString.match(/^(\d)+\.\d{0,2}$/g)
       if (inThere) {
          return true //Invalid number
       }
       return false //Valid Number
    }

function IsDate(dateStr) {
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
    var monthname=""
    if (matchArray == null) {
        alert("Please enter date as either mm/dd/yyyy.");
        return false;
    }

    month = matchArray[1]; // parse date into variables
    day = matchArray[3];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
        alert("Month must be between 1 and 12.");
        return false;
    }

    if (day < 1 || day > 31) {
        alert("Day must be between 1 and 31.");
        return false;
    }
if (month == 1)monthname="January";
else if (month == 2)monthname="February";
else if (month == 3)monthname="March";
else if (month == 4)monthname="April";
else if (month == 5)monthname="May";
else if (month == 6)monthname="June";
else if (month == 7)monthname="July";
else if (month == 8)monthname="August";
else if (month == 9)monthname="September";
else if (month == 10)monthname="October";
else if (month == 11)monthname="November";
else if (month == 12)monthname="December";

    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        alert(monthname+" doesn't have 31 days!")
        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(monthname + " " + year + " doesn't have " + day + " days!");
            return false;
        }
    }
    return true; // date is valid
}
function InvTimeDiff(a,b,c,d){
   sdur = (parseInt(a) * 60)+parseInt(b)
   edur = (parseInt(c) * 60)+parseInt(d)
   if (parseInt(edur)>parseInt(sdur))
      return false
   return true
}
function IsMilTime(timeStr) {
    var tstr = timeStr
	var timePat = /^(\d{1,2}):(\d{2})$/;
	var tres = tstr.match(timePat)
	if (tres) {
   	   var hh = parseInt(tres[1]);
       var mm = parseInt(tres[2]);
	   if ((hh>24) || (mm>59)) {
          return false
	   }
	   else if((hh==24) && (mm!=0)){	
	   	  // 	alert(mm) 
	        return false
	   } 
	}
	else return false
		return true
}

function IsTime(tymStr) {
    var tymfrm = /^(\d{1,2})(\:)(\d{1,2})(\ am| AM| pm| PM)$/;
    var matchArray = tymStr.match(tymfrm); // is the format ok?

    if (matchArray == null) {
        alert("Please enter time as either hh:mm am/pm.");
        return false;

    }
      hour = matchArray[1]; 
      minute = matchArray[3];
   	 
    if (hour < 1 || hour > 12 ||  minute > 59) { // check month range
        alert("Invalid time.");
        return false;
     
     }
     return true; //Time is valid
}
function DateDiff(date1,date2){ //from,to
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray1 = date1.match(datePat); // is the format ok?
    var matchArray2 = date2.match(datePat); // is the format ok?
    mm1 = matchArray1[1]; // parse date into variables
    dd1 = matchArray1[3];
    yy1 = 20 + matchArray1[5];
    mm2 = matchArray2[1]; // parse date into variables
    dd2 = matchArray2[3];
    yy2 = 20 + matchArray2[5];
    var dat2 = new Date(mm2 + "/" + dd2 +"/" + yy2)
    var dat1 = new Date(mm1 + "/" + dd1 +"/" + yy1)
	var diff = new Date()
	diff=dat2.getTime() - dat1.getTime();
	if (diff<0){
	   return true
	}
	
    //timediff = diff.getTime();
    days = Math.floor(diff / (1000 * 60 * 60 * 24)); 
	return false
}
function DateDiff1(date1,date2){ //from,to
 
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray1 = date1.match(datePat); // is the format ok?
    var matchArray2 = date2.match(datePat); // is the format ok?

    mm1 = matchArray1[1]; // parse date into variables
    dd1 = matchArray1[3];
    yy1 = 20 + matchArray1[5];
    mm2 = matchArray2[1]; // parse date into variables
    dd2 = matchArray2[3];
    yy2 = 20 + matchArray2[5];
    var dat2 = new Date(mm2 + "/" + dd2 +"/" + yy2)
    var dat1 = new Date(mm1 + "/" + dd1 +"/" + yy1)
	var diff = new Date()
	diff=dat2.getTime() - dat1.getTime();
    days = Math.floor(diff / (1000 * 60 * 60 * 24)); 
	return days
}
   
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function chkallf(tf){
   if (tf.heid.value!=""){
      if(tf.chkall.checked){
	     tid = tf.heid.value.split(",")
	     for(a in tid){
	        eval("tf.eid" + tid[a] + ".checked=true")
         }
      }
      else {
	     tid = tf.heid.value.split(",")
	     for(a in tid){
	        eval("tf.eid" + tid[a] + ".checked=false")
         }
      }
   }
}


function chkimg(imgname,nnflag){
	var imgsrc,imgold,imgpath
    errhnd=false
    imgpath = document.form1.imgpath.value
    eval('imgsrc=document.form1.'+imgname+'.value')
	eval('imgold=document.form1.h'+imgname+'.value')
    if (imgsrc=="none") {
	   if (nnflag=='1'){
          alert('Please enter a valid Image File!')
		  errhnd=true
		  return false
	   }
	   eval('document.images["d'+imgname+'"].src="'+imgpath+'nopic.gif"')
	   return false
	}
    if(IsNull(imgsrc)){
	   eval('document.images["d'+imgname+'"].src="'+imgpath+imgold+'"')
	   	   return false
	}
    else if (!IsNull(imgsrc)){
	/*   a =imgsrc
	   if (a.length<3) {
	       alert('Please enter a valid Image File!')
	       errhnd=true
		   return false
	   }		   
		a = a.substr(0,3)
		if ((a.substr(0,2)!="\\\\")&&(a.substr(1,2)!=":\\")){
	       alert('Please enter a valid Image File!')
	       errhnd=true
		   return false
	    }
    */
	    if (imgsrc.lastIndexOf(".")<0) {
	       alert('Please enter a valid Image File!')
	       errhnd=true
		   return false
		}
		ext = imgsrc.substr(imgsrc.lastIndexOf(".")+1)
		if ((ext.toUpperCase()!="JPG") && (ext.toUpperCase()!="JPE") && (ext.toUpperCase()!="JPEG") && (ext.toUpperCase()!="GIF") && (ext.toUpperCase()!="PNG")){
	       alert('Please enter a valid Image File!')
	       errhnd=true
		   return false
		}
        if (errhnd) {
	       alert('Please enter a valid Image File!')
	       errhnd=true
		   return false
	    } else {

		   eval('document.images["d'+imgname+'"].src=imgsrc');
		   return false
		}
    }   
}

function vldchk(tf){
  
 if (tf.chkid.checked){
   if (tf.ctr.value==1){
      tf.deid.checked=true
   }
   else if(tf.ctr.value>1) {
    for (i = 0; i < tf.deid.length; i++)
			tf.deid[i].checked = true ;
   }
 }
 else {
   if (tf.ctr.value==1){
      tf.deid.checked=false
   }
   else if(tf.ctr.value>1) {
    for (i = 0; i < tf.deid.length; i++)
			tf.deid[i].checked = false ;
   }
 }
 
}

function delcon() {
   condel = false
   if (document.form1.ctr.value==1){
      if(document.form1.deid.checked)
	     condel = true
   }
   else if(document.form1.ctr.value>1) {
    for (i = 0; i < document.form1.deid.length; i++)
			if(document.form1.deid[i].checked)
 	   	      condel = true
    }
    if (condel){
      if (confirm("Do you really want to delete your record(s)?")){
          document.form1.submit()
	  }	  
	}
	else 
	   alert('Please check the record(s) to be deleted!')
} 

function delrec(a){
   if (delrec!=""){
      if(confirm("Do you really want to delete your record?")){
	     document.form1.delid.value=a
		 document.form1.submit()
	  }
   }
}

function opennewwindow(mypage,h,w,n){
  if ((IsNull(h)) || (IsNull(w)) || (IsNull(n)) || (IsNotNumber(h)) || (IsNotNumber(w)) || ((n!="no")&&(n!="yes")))
     prpty="";
  else 
     prpty="resizable=no,height="+h+",width="+w+",menubar=no,toolbar=no,scrollbars=" + n;
	 
  if (!IsNull(mypage)){	 
	 mywin =  window.open(mypage,null,prpty);
	 mywin.focus();
  }
}
