//  Commonly used functions for Javascript
//  By Joel Bauca

//alert(1)

try { if (undefined == xajax.config) xajax.config = {}; } catch (e) { xajax = {}; xajax.config = {}; };
xajax.config.requestURI = "x_func.php";
xajax.config.statusMessages = false;
xajax.config.waitCursor = true;
xajax.config.version = "xajax 0.5 Beta 4";
xajax.config.legacy = false;
xajax.config.defaultMode = "asynchronous";
xajax.config.defaultMethod = "POST";


help_resp = function() { return xajax.request( { xjxfun: 'help_resp' }, { parameters: arguments } ); };
help_hide = function() { return xajax.request( { xjxfun: 'help_hide' }, { parameters: arguments } ); };
inv_print = function() { return xajax.request( { xjxfun: 'inv_print' }, { parameters: arguments } ); };
set_log   = function() { return xajax.request( { xjxfun: 'set_log'   }, { parameters: arguments } ); };




function chRowMode(el, mode){

    var browser=navigator.appName;
    var b_version=navigator.appVersion;
    var version=parseFloat(b_version);

    if (browser == 'Microsoft Internet Explorer'){
        browser = 'IE'
    } else {
        browser = 'noIE'
    }



    if (browser == 'IE'){
        if (mode == 'none') mode = 'none'
        if (mode == 'table-row') mode = 'block'
        if (mode == 'block') mode = 'block'

    } else {
        if (mode == 'none') mode = 'none'
        if (mode == 'table-row') mode = 'table-row'
        if (mode == 'block') mode = 'block'
    }
    el.style.display = mode
}

var errhnd=false
function seekVal(to,val){
  for (ctr1=0;ctr1<to.options.length;ctr1++){
     if(to.options[ctr1].value==val){
        to.options[ctr1].selected=true;
        break;
     }
  }
}

function IsPercent(iobj){ //Percentage Validation
   var myString = iobj
   var inThere = myString.match(/^(\d{1,3}|\d{1,3}\.\d{1,2})$/g)
   if (inThere)
      return true //Invalid number
   return false //Valid Number
}

function IsPhone(eobj){//Phone Validation
   var str = eobj;
   str1=strreplace(str," ","")
   str1=strreplace(str,"+","")
   var res = str1.match(/^\([0-9]{1,3}\)[0-9]{3}-[0-9]{4}$/g)
   if (res)
      return true //Valid Phone
   return false  //Invalid Phone
}
function IsPhone2(eobj){//Phone Validation
   var str = eobj;

   str1=strreplace(str," ","")
//   str1=strreplace(str1,"+","")

//   var res1 = str1.match(/^\([0-9]{1,3}\)[0-9]{3}-[0-9]{4}$/g)
//   var res2 = str1.match(/\D/g)
   var res = str1.match(/^[0-9\(\)\+\-]+$/g)

//   if (res1 || !res2)
   if (res)
      return true //Valid Phone
   return false  //Invalid Phone
}

function IsCode(eobj){//Fax/Zip Validation
   var str = eobj;
   str1=strreplace(str," ","")
   var res = str1.match(/\D/g)
   if (res)
      return false //Fax/Zip Phone
   return true  //Fax/Zip Phone
}

function IsMobile(eobj){//CellPhone Validation
   var str = eobj;
   str1=strreplace(str," ","")
   str1=strreplace(str1,"+","")
   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(/^[_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
{
   if (obj)
      return false //Invalid number
   return true //Valid Number
}
function IsSpaceFound(sobj){ //Space Validation
   if (sobj.indexOf(" ")!=-1)
      return true //String with space
   return false //String without space
}

function InvalidCode(nobj)
{
   var mstr = nobj
   var res = mstr.match(/[^A-Za-z0-9\-]/g)
   if (res)
      return true //Invalid Code
   return false //Valid Code
}

function InvalidStr(nobj)
{
   //if (!nobj)
//      return true //Invalid Code
   return false //Valid Code
}

function IsNotNumber(iobj){ //Integer Validation
   var myString = iobj
   var inThere = myString.match(/\D/g)
   if (inThere)
      return true //Invalid number
   return false //Valid Number
}
function IsColor(iobj){ //Color Validation
   var myString = iobj
   var inThere = myString.match(/\#([0-9a-fA-F]){6}/g)
   if (inThere)
      return true //Valid Color
   return false //Invalid Color
}
function IsFloat(iobj){ //Float Validation
   var myString = iobj
   var inThere = myString.match(/^((\d{1,3}(\,\d{3})*)|(\d)+)\.\d{0,2}$/g)
   if (inThere)
      return true //Invalid number
   return false //Valid Number
}

function IsNumbSign(nobj){ //Float Validation
  var mstr = nobj
  var res = mstr.match(/[^0-9\-\.]/g)
  if (res)
      return false //valid Code
  return true //inValid Code
}
function IsNumb(nobj){ //Float Validation
  var mstr = nobj
  var res = mstr.match(/[^0-9\.]/g)
  if (res)
      return false //valid numb
  return true //inValid numb
}
function IsInt(iobj){ //Integer Validation
   var myString = iobj
   var inThere = myString.match(/^((\d{1,3}(\,\d{3})*)|(\d)+)$/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 (year<1900){
       alert("Invalid Year!")
       return false;
    }
    if (year>2299){
       alert("Invalid Year!")
       return false;
    }
    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 == 2)monthname="February";
    else if (month == 4)monthname="April";
    else if (month == 6)monthname="June";
    else if (month == 9)monthname="September";
    else if (month == 11)monthname="November";

    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)){
            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 = matchArray1[5];
    mm2 = matchArray2[1]; // parse date into variables
    dd2 = matchArray2[3];
    yy2 = 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 displayAlert() {
     errhnd=false
 }
function displayerror(){
    errhnd=true
}
function testimage(J){
    errhnd=false
    imageA = new Image(100,100)
    imageA.onload=displayAlert
    imageA.onerror=displayerror
    imageA.src=J
}

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 chkimg(imgname,nnflag,noneflag){
var imgsrc,imgold,imgpath,nflag

    imgpath = document.form1.imgpath.value
    eval('imgsrc=document.form1.'+imgname+'.value')
    eval('imgold=document.form1.h'+imgname+'.value')
    if (noneflag=="1"){
       eval('nflag=document.form1.n'+imgname+'.checked')
       if (nflag==true){
          imgsrc="none"
       }
    }
    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"')
       eval('document.form1.h'+imgname+'file.value=imgsrc')
       eval('document.form1.n'+imgname+'.checked=true')
      // eval('alert(document.form1.h'+imgname+'file.value)')
       return false
    }
    if(IsNull(imgsrc)){
       if (imgold=="nopic.gif")
            eval('document.form1.n'+imgname+'.checked=true')
       eval('document.images["d'+imgname+'"].src="'+imgpath+imgold+'"')
       eval('document.form1.h'+imgname+'file.value=imgsrc')
       return false
    }
    else if (!IsNull(imgsrc)){
         if (document.getElementById&&!document.all){
           imgsrc = "file:///" + strreplace(imgsrc,"\\","/")
        }
        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 ((document.getElementById&&!document.all)||(document.all))
            testimage(imgsrc)
        if (errhnd) {
           alert('Please enter a valid Image File!')
           errhnd=true
           return false
        }
        else {
        //  alert('document.images["d'+imgname+'"].src="'+imgsrc+'"')
           if ((document.getElementById&&!document.all)||(document.all))
               eval('document.images["d'+imgname+'"].src=imgsrc')
           eval('document.form1.h'+imgname+'ext.value=ext')
           eval('document.form1.h'+imgname+'file.value=imgsrc')
           eval('document.form1.n'+imgname+'.checked=false')
           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,xm,ns){


   if (delrec!=""){
      if(xm==null)
         xm = "Do you really want to delete this record?"
      if(confirm(xm)){

         if (ns == undefined || ns == null ){
               document.form1.delid.value=a
               document.form1.submit()


         } else {
             if (confirm("This job has "+ ns + " task slips. All of this task slips will be permanently deleted. \n\nContinue? ") ){
                document.form1.delid.value=a
                document.form1.submit()
             }

         }
      }
   }
}
function opennewwindow(mypage,h,w,n,winname){
  if ((IsNull(h)) || (IsNull(w)) || (IsNull(n)) || (IsNotNumber(h)) || (IsNotNumber(w)) || ((n!="no")&&(n!="yes")))
     prpty=""
  else {
     locx = (screen.width - w)/2;
     locy = (screen.height - h)/2;
     prpty="status=yes,resizable=no,height="+h+",width="+w+",left="+locx+",top="+locy+",menubar=no,toolbar=no,scrollbars=" + n
  }
  if (IsNull(winname))
     wn = null
  else
     wn = winname
  if (!IsNull(mypage)){
    try {
     mywin =  window.open(mypage,wn,prpty)
     setTimeout(mywin.focus(), 500)
    } catch (e) {

    }
  }
}
function strreplace(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += strreplace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

