//File    : lc_common.js
//Purpose : Generic Javascript functions that are applicable for most of the pages
var giDecimalPos = 0;
var n, p, p1, goFieldName;
var ssField, ssHandler, handlerInterval = 100, mcValue = ""

var vWinCal
/* ========================================================================= */
/* trims leading/trailing spaces from a string                               */
/* ========================================================================= */
String.prototype.trim = function() {
	return this.replace(/^\s+/,"").replace(/\s+$/,"");
}

//checks if the input value is numeric or not
String.prototype.isNumeric = function isNum() {
	var arg = isNum.arguments;

	if (arg==null || arg.length==0) {
		regE = /^\s*[-+]{0,1}\d*\.{0,1}\d*\s*$/g
	} else {
		regE = new RegExp(arg[0], arg[1])
	}
	var larrVal = new Array();
	larrVal = this.match(regE);
	if (larrVal==null) {
		return false;
	} else {
		return true;
	}
}

//Checks if the date is valid or not (format must be MM/DD/YYYY only)
/***
function ufIsDate(asDate){
  var indate      =       asDate
  var strDate   =   indate.split("/");
  //format must be (yyyy,mm,dd)
  var dtchkDate   =       new Date(((strDate[2] * 1)),((strDate[0] * 1)-1),(strDate[1] * 1));
  var lintYear  = dtchkDate.getFullYear();
  var strcmpDate  =       ((dtchkDate.getMonth()+1)+"/"+dtchkDate.getDate())+"/"+(lintYear);
  var strindate2  =       (Math.abs(strDate[0]))+"/"+(Math.abs(strDate[1]))+"/"+(Math.abs(strDate[2]));
  if (strindate2!=strcmpDate){ return false;}
  else {
    if (strcmpDate=="NaN/NaN/NaN"){
      return false;
    }
	}
    return true;
}
***/

//Checks if the date is valid or not (format must be MM/DD/YYYY only)
function ufIsDate(asDate) {
	// regular expression to match "MM/DD/YYYY" where
	//	MM   = (1, 2, ... 9), (01, 02, ...09), (10, 11, 12)
	//	DD   = (1, 2, ... 9), (01, 02, ...09), (10, 11, ... 19), (20, 21, ... 29), (30, 31)
	//	YYYY = any 4 digit year
	var exp = /^((1[0-2])|(0*[1-9]))\/(([12][0-9])|([3][01])|(0*[1-9]))\/\d{4}$/

	asDate = asDate.trim()
	if (!exp.test(asDate)) {
		return false
	} else {
		arr = asDate.split("/")
		dateObj = new Date( arr[2], arr[0] - 1, arr[1] )

		if ( dateObj.getMonth()!=(arr[0] - 1) ||  arr[2] < 1900) {
			return false
		}
	}
	return true
}

//Checks if the date is valid or not (format must be MM/DD/YYYY only)
function ufIsTime(asTime){

  var inTime      =       asTime
  var strTime   =   inTime.split(":");
  if (strTime.length) {
  } else {
	return false;
  }

  if (strTime.length != 2) {
	return false;
  }


  if (!ufIsNumber(strTime[0])) {
	return false;
  }

  if (eval(strTime[0]) <= 0 || eval(strTime[0]) > 12) {
	return false;
  }


  var strTime2   =   strTime[1].trim().split(" ");
  if (strTime2.length)	{
  } else {
	return false;
  }
  if (strTime2.length != 2) {
	return false;
  }

  if (!ufIsNumber(strTime2[0])) {
	return false;
  }
  if (eval(strTime2[0]) < 0 || eval(strTime2[0]) > 59) {
	return false;
  }


  if (strTime2[1].toUpperCase() != "AM" && strTime2[1].toUpperCase() != "PM") {
	return false;
  }


    return true;
}

/* ========================================================================= */
/* Roll Over Images function                                                 */
/* ========================================================================= */
function ufImgRollOver(astrImg) {
	var lobjSource = event.srcElement;
	lobjSource.src = astrImg;
}

// displays error message from CLIENT SIDE validations
function ufShowMessage(asLayer, asMsg) {
                var loLyr = document.all[asLayer];
                loLyr.innerHTML = "<CENTER CLASS='message'>" + asMsg + "</CENTER>"
                loLyr.style.display = "block";
}
// Hides the message
function ufHideMessage(asLayer, abDisplay) {
	var loLyr = document.all[asLayer];
	loLyr.innerHTML = "&nbsp;"
	if (!abDisplay)	loLyr.style.display = "none";
}

//
function ufDisable(asChk) {
 if (asChk.checked) {
	asChk.checked = false;
 }
 else {
   asChk.checked = true ;
 }
}

function ufChkValidate(asChk) {
 if (asChk.checked) {
   asChk.value = 1 ;
 }
 else {
   asChk.value = 0 ;
 }
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function ufToUpper( asString ){
  if ( asString == null ) return "" ;
  if ( asString.length = 0 ) return "" ;
  return asString.trim().toUpperCase();
}

function isValidDateRange( asFrom,asTo ){
  dtFrom = new Date(asFrom)
  dtTo = new Date(asTo)
  if (dtFrom > dtTo) return false;
  return true;
}

function isFutureDate(asDateEntry){
  dtDateEntry = new Date(asDateEntry)
  dtDateToday = new Date()
  if (dtDateEntry > dtDateToday) return false;
  return true;
}

function getHTMLEncode( asString ) {

  if ( asString == null ) return "";
  if ( asString.length <= 0 ) return "";
  var lsTemp = "";
  var lbMultiSpace = false ;

  for( liX = 0; liX < asString.length ; liX++ ) {
    var lcChar = asString.charAt( liX ) ;
    var lbMultiSpace = (lbMultiSpace && lcChar == ' ' )
    switch( lcChar ) {
      case '<' :
        lsTemp = lsTemp + "&lt;" ;
        break ;
      case '>' :
        lsTemp =  lsTemp +"&gt;" ;
        break ;
      case '&' :
        lsTemp =  lsTemp +"&amp;" ;
        break ;
      case '"' :
        lsTemp =  lsTemp +"&quot;" ;
        break ;
      case '\n' :
        break ;
      case '\t' :
        lsTemp =  lsTemp +"&nbsp;&nbsp;&nbsp;" ;
        break ;
      case ' ' :
        lsTemp =  lsTemp +" " ;
        if ( lbMultiSpace ) {
          lsTemp =  lsTemp +"&nbsp; " ;
        }
        lbMultiSpace = true ;
        break ;
      default:
        lsTemp =  lsTemp + lcChar
    }
  }

  if( lbMultiSpace ) {
    lsTemp =  lsTemp +"&nbsp; " ;
  }
  return lsTemp ;

}

function ufGetTime() {
     var ldate    = new Date()
     var lampm    = ((ldate.getHours() >= 12) ? "pm" : "am");
     var lhours   = ldate.getHours();
     var lhours   = ((lhours > 12) ? (lhours - 12) : lhours);
     var lminutes = ((ldate.getMinutes() < 10) ? ".0" : ".") + ldate.getMinutes();
     var lseconds = ((ldate.getSeconds() < 10) ? ".0" : ".") + ldate.getSeconds();
     var ltime    = (lhours + lminutes + lseconds + lampm)
     return (ltime);
}

// dreamweaver systems generated functions //

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) { //v4.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);
  if(!x && document.getElementById) x=document.getElementById(n); 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 MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

// print displayed page
function ufPrintMeNow() {
       var ns = (navigator.appName == "Netscape");
       if (ns) {
          var version = parseInt(navigator.appVersion);
       } else {
          var version = navigator.userAgent;
              version = parseInt(version.substring(version.indexOf('MSIE') + 5));
       }
       window.focus();
       this.focus();
       if ((ns) || (version > 4)) {
           window.print();
       } else {
           var webBrowser = '<OBJECT ID="webBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
           document.body.insertAdjacentHTML('BeforeEnd', webBrowser);
           window.alert("Make sure the printer is ready.");
           webBrowser1.ExecWB(6, 1); //use 1(for prompting dialog box in IE4) or 2(for direct print in IE4)
           webBrowser1.outerHTML = "";
       }
}

function ufCheckForDecimal(asVal){
   var liPos = asVal.indexOf(".");
   if (liPos > 0){
        var lsDecimal = asVal.substring(liPos+1);
        if (lsDecimal.length > 2){  //two decimals found
                return true;
        }
   }
return false;
}

//Use this function instead of the above isNumeric(). This works with ie 5.5. AEEJR 11/06/2001
function ufIsNumeric(asValue,asText) {
       var lsVal = asValue.toString();
       var lsMessage = "";

        if(isNaN(asValue.trim())){
             lsMessage = asText +" should be a valid numeric entry.";
             return lsMessage;
        } else {
                var ldTmp = (lsVal.trim() == "")?0: eval(lsVal);
                if (lsVal.trim()!="" && ldTmp<0) {
                        lsMessage = asText +" should be a positive numeric value.";
                        return lsMessage;
                }
                liPos = lsVal.indexOf(".");
                if (liPos >= 0){
                        lsDecimal = lsVal.substring(liPos+1);
                        if (lsDecimal.length > 2){
                                lsMessage = asText +" can not have more than two decimal places.";
                                return lsMessage;
                        }
                }
                if(eval(lsVal) > 999999.99) {
                        lsMessage = asText +" should be in 999999.99 format.";
                        return lsMessage;
                }
        }
        return "";
}

//Use this function instead of the above isNumeric(). This works with ie 5.5. AEEJR 11/06/2001
function ufIsNumber(asValue) {
       var lsVal = asValue.toString();
       var lsMessage = "";

        if(isNaN(asValue.trim())){
             return false;
        } else {
                var ldTmp = (lsVal.trim() == "")?0: eval(lsVal);
                if (lsVal.trim()!="" && ldTmp<0) {
                        return false;
                }
                liPos = lsVal.indexOf(".");
                if (liPos >= 0){
			return false;
                }

        }
        return true;
}

//this method allow negative values -gvs02182002
function ufIsNum(asValue,asText) {
       var lsVal = asValue.toString();
       var lsMessage = "";

        if(isNaN(asValue.trim())){
             lsMessage = asText +" should be a valid numeric entry.";
             return lsMessage;
        } else {
                var ldTmp = (lsVal.trim() == "")?0: eval(lsVal);
                //if (lsVal.trim()!="" && ldTmp<0) {
                //        lsMessage = asText +" should be a positive numeric value.";
                //        return lsMessage;
                //}
                liPos = lsVal.indexOf(".");
                if (liPos >= 0){
                        lsDecimal = lsVal.substring(liPos+1);
                        if (lsDecimal.length > 2){
                                lsMessage = asText +" can not have more than two decimal places.";
                                return lsMessage;
                        }
                }

               if(eval(lsVal) > 999999.99) {
                        lsMessage = asText +" should be in 999999.99 format.";
                       return lsMessage;
                }

        }
        return "";
}


//validates Minimum and Maximum range
function ufValidate_Range(asMin,asMax,asMinField,asMaxField){
  if (eval(asMin) > eval(asMax)){
    lsMessage = asMinField +" can not be greater than "+ asMaxField +"."
    return lsMessage;
  }
  return "";
}

function ufMaxValue(aiLen) {
var lsVal = "";
        for (i=0;i<aiLen;i++){
           lsVal += "9";
        }
return lsVal+".99";

}

//add trailing zero to numeric entries
function ufPadElement(objField){
        var liDecCtr = 0;
        var lsPrefix = "",lsVal="";
        var lsTempVal = objField.value
        if (objField.value.charAt(0)=="") return

        lsVal = objField.value.substring(0,objField.value.indexOf("."));
//        if (lsVal.length > objField.maxLength ){
//                objField.value = "0.00";
//                return
//        }
        if (objField.value.length >= objField.maxLength ){
                return;
        }
        if(lsTempVal.indexOf(".") <= 0) {
               lsTempVal = lsTempVal + ".00";
        } else {
                if (lsTempVal.charAt(lsTempVal.length-2)=="."){
                        lsTempVal=lsTempVal+"0"
                } else if(lsTempVal.charAt(lsTempVal.length-1)=="."){
                        lsTempVal=lsTempVal+"00"
                }
        }

        if (lsTempVal.length > objField.maxLength ){
                return;
        }

        var lsTempnum = objField.value
        for (i=0;i<lsTempnum.length;i++){
                if (lsTempnum.charAt(i)=="."){
                        liDecCtr++;
                }
        }


        if(liDecCtr <= 1) {
                if (objField.value.trim() == ".") {
                        objField.value = "0.00";
                        return;
                }

                lsVal = objField.value;
                var lsStartChars = lsVal.substring(0,lsVal.indexOf("."));
                for (i=0;i<lsVal.indexOf(".");i++) {
                        if (lsVal.charAt(i)=="0" && lsStartChars.length > 1){
                                 objField.value = lsVal.substring(i+1, lsVal.length);
                        } else {
                                break;
                        }
                }
                //start check
                lsVal = objField.value;
                var lsChar = lsVal.substring(0,1);
                if(lsChar == "."){
                        objField.value = "0"+lsVal;
                }
                lsVal = objField.value;
                if(eval(lsVal) < 0.01) {
                        objField.value = "0.00";
                        return;
                }


                if (eval(objField.value+" > "+ufMaxValue(objField.maxLength))) {
                        objField.value = "0.00";
                        return
                }
                if (liDecCtr == 0)
                        objField.value=lsPrefix+lsTempnum+".00"
                else if(liDecCtr == 1) {
                    if (lsTempnum.charAt(lsTempnum.length-2)=="."){
                        objField.value=lsPrefix+lsTempnum+"0"
                    } else if(lsTempnum.charAt(lsTempnum.length-1)=="."){
                          objField.value=lsPrefix+lsTempnum+"00"
                    }
                }

                //we need to redo this again. since there are other scenario not considered.
                lsVal = objField.value;
                var lsStartChars = lsVal.substring(0,lsVal.indexOf("."));
                for (i=0;i<lsVal.indexOf(".");i++) {
                        if (lsVal.charAt(i)=="0" && lsStartChars.length > 1){
                                 objField.value = lsVal.substring(i+1, lsVal.length);
                        } else {
                                break;
                        }
                }
                //final check
                lsVal = objField.value;
                var lsChar = lsVal.substring(0,1);
                if(lsChar == ".") objField.value = "0"+lsVal;
                lsVal = objField.value;
                if(eval(lsVal) < 0.01) objField.value = "0.00";

        }
}

function ufPadElem(objField){
        var liDecCtr = 0;
        var lsPrefix = "",lsVal="";
        var lsTempVal = objField.value
        if (objField.value.charAt(0)=="") return

        lsVal = objField.value.substring(0,objField.value.indexOf("."));
//        if (lsVal.length > objField.maxLength ){
//                objField.value = "0.00";
//                return
//        }
        if (objField.value.length >= objField.maxLength ){
                return;
        }
        if(lsTempVal.indexOf(".") <= 0) {
               lsTempVal = lsTempVal + ".00";
        } else {
                if (lsTempVal.charAt(lsTempVal.length-2)=="."){
                        lsTempVal=lsTempVal+"0"
                } else if(lsTempVal.charAt(lsTempVal.length-1)=="."){
                        lsTempVal=lsTempVal+"00"
                }
        }

        if (lsTempVal.length > objField.maxLength ){
                return;
        }

        var lsTempnum = objField.value
        for (i=0;i<lsTempnum.length;i++){
                if (lsTempnum.charAt(i)=="."){
                        liDecCtr++;
                }
        }


        if(liDecCtr <= 1) {
                if (objField.value.trim() == ".") {
                        objField.value = "0.00";
                        return;
                }

                lsVal = objField.value;
                var lsStartChars = lsVal.substring(0,lsVal.indexOf("."));
                for (i=0;i<lsVal.indexOf(".");i++) {
                        if (lsVal.charAt(i)=="0" && lsStartChars.length > 1){
                                 objField.value = lsVal.substring(i+1, lsVal.length);
                        } else {
                                break;
                        }
                }
                //start check
                lsVal = objField.value;
                var lsChar = lsVal.substring(0,1);
                if(lsChar == "."){
                        objField.value = "0"+lsVal;
                }
                lsVal = objField.value;
                //if(eval(lsVal) < 0.01) {
                //        objField.value = "0.00";
                //        return;
                //}


                if (eval(objField.value+" > "+ufMaxValue(objField.maxLength))) {
                        objField.value = "0.00";
                        return
                }
                if (liDecCtr == 0)
                        objField.value=lsPrefix+lsTempnum+".00"
                else if(liDecCtr == 1) {
                    if (lsTempnum.charAt(lsTempnum.length-2)=="."){
                        objField.value=lsPrefix+lsTempnum+"0"
                    } else if(lsTempnum.charAt(lsTempnum.length-1)=="."){
                          objField.value=lsPrefix+lsTempnum+"00"
                    }
                }

                //we need to redo this again. since there are other scenario not considered.
                lsVal = objField.value;
                var lsStartChars = lsVal.substring(0,lsVal.indexOf("."));
                for (i=0;i<lsVal.indexOf(".");i++) {
                        if (lsVal.charAt(i)=="0" && lsStartChars.length > 1){
                                 objField.value = lsVal.substring(i+1, lsVal.length);
                        } else {
                                break;
                        }
                }
                //final check
                lsVal = objField.value;
                var lsChar = lsVal.substring(0,1);
                if(lsChar == ".") objField.value = "0"+lsVal;
                lsVal = objField.value;
                //if(eval(lsVal) < 0.01) objField.value = "0.00";

        }
}


/* ====================================================================================
*  Description: Add new line in table
*  Arguments:
*	aobjDiv (object) = document referencing to DIV name (e.g. document.all.divAttendance)
*       astrIdentifier (string) = will serve as a basis on what action to take.
*       asString (string) = the string or value to display on field.
======================================================================================== */
function ufAddLine(aobjDiv,asIdentifier, asString) {
    var lsStart = "",
        lsEnd = "",
        lsHTML = aobjDiv.innerHTML,
        lsSearch="<tbody>",
        liPos = 0;

    liPos = lsHTML.indexOf(lsSearch.toUpperCase());
        if (liPos >= 0) {
	    lsStart = lsHTML.substring(0, liPos);
            lsEnd = lsHTML.substring(liPos, lsHTML.length);
		//handles which action to be taken, depending on the Identifier passed
		switch (asIdentifier) {
		    case 'ContActivity':
                                lsHTML  = lsStart + asString + lsEnd;
			break;
		}
            aobjDiv.innerHTML = lsHTML
        }
}

function ufRoundOff(asResult) {
  liDecPt=2;
  var lsResult = asResult + " ";
  if (lsResult.charAt(0) == ".") {lsResult = "0" + lsResult};
  var liResultLen = lsResult.length - 1;
  ufGetPos(lsResult);

  if (liResultLen > 16) {
    if (liDecPt == -1) {liDecPt = 14};
    lsResult = ufDecPt(lsResult.substring(0,liResultLen)) + " ";
    liResultLen = lsResult.length - 1;
    ufGetPos(lsResult)
  }

  if (giDecimalPos > 0) {
       var lsRetVal = ufDecPt(lsResult.substring(0,liResultLen))
  }

  if (lsRetVal.charAt(0) == ".") {lsRetVal = "0" + lsRetVal};
  return(lsRetVal);
}

function ufGetPos(asParam) {
  giDecimalPos = 0;
  giDecimalPos = asParam.indexOf(".");
}

function ufDecPt(asParam) {
with (Math) {
    var liDecPos = giDecimalPos;
    if (liDecPos == -1) {liDecPos = asParam.length};
    if (liDecPos > 16) {
        var lsRoundNo = round(asParam*pow(10, 18)) + " ";
        var lsEpos = lsRoundNo.indexOf("e");
        var lsRetNo = (lsRoundNo.substring(0,lsEpos));
        lsRetNo = round(lsRetNo*pow(10, 15))/pow(10, 15) + " ";
        lsSpace = (lsRoundNo.substring(lsEpos+2,lsRoundNo.length-1));
        lsSpace = "e+" + (lsSpace-18)
     } else {
        var lsRetNo = round(asParam*pow(10, liDecPt))/pow(10, liDecPt) + " "
     }

        lsRetNo = lsRetNo.substring(0,lsRetNo.length - 1);
        if (lsRetNo.charAt(0) == ".") {lsRetNo = "0" + lsRetNo};
        if (liDecPt < 14) {
                if (lsRetNo.indexOf(".") == -1 && liDecPt != 0)
                        {lsRetNo += "."};
                var liTemp = (giDecimalPos + liDecPt) - (lsRetNo.length - 1);
                if (liTemp > 0 && liDecPt > 0) {
                        for (var n = 0; n < liTemp; n++) {
                                lsRetNo += "0"
			}
                }
        }
  return (lsRetNo)
}
}

function ValidatePhone(){
p=p1.value
if(p.length==3){
	pp=p;
	d4=p.indexOf('(')
	d5=p.indexOf(')')
	if(d4==-1){
		pp="("+pp;
	}
	if(d5==-1){
		pp=pp+")";
	}
    goFieldName.value="";
    goFieldName.value=pp;
}
if(p.length>3){
	d1=p.indexOf('(')
	d2=p.indexOf(')')
	if (d2==-1){
		l30=p.length;
		p30=p.substring(0,4);
		p30=p30+")"
		p31=p.substring(4,l30);
		pp=p30+p31;
        goFieldName.value="";
        goFieldName.value=pp;
	}
	}
if(p.length>5){
	p11=p.substring(d1+1,d2);
	if(p11.length>3){
	p12=p11;
	l12=p12.length;
	l15=p.length
	p13=p11.substring(0,3);
	p14=p11.substring(3,l12);
	p15=p.substring(d2+1,l15);
    goFieldName.value="";
	pp="("+p13+")"+p14+p15;
    goFieldName.value=pp;
	}
	l16=p.length;
	p16=p.substring(d2+1,l16);
	l17=p16.length;
	if(l17>3&&p16.indexOf('-')==-1){
		p17=p.substring(d2+1,d2+4);
		p18=p.substring(d2+4,l16);
		p19=p.substring(0,d2+1);
	pp=p19+p17+"-"+p18;
    goFieldName.value="";
    goFieldName.value=pp;
	}
}
    setTimeout(ValidatePhone,100)
}
function getIt(aoField){
    n=aoField.name;
    p1=aoField
    goFieldName = aoField;
    ValidatePhone();
}

//function checks if the passed string is found in the string list separated by ,.
function ufFindString(asStringList, asStringParm) {
  var lsString_arr = asStringList.split(",");
  var lbFound = false;
  for(var x = 0; x < lsString_arr.length; x++) {
        if(asStringParm.trim().toUpperCase() == lsString_arr[x].trim().toUpperCase()) {
            lbFound = true;
            break;
        }
  }
 return lbFound;
}

function formatSSNo() {
	// format: 999-99-9999
	var ssNo
	if (ssField) {
		ssNo = ssField.value

		ssNo = ssNo.replace(/-+/g, "").replace(/\D/g, "")
		if (ssNo.length>5) {
			ssNo = ssNo.substr(0, 5) + '-' + ssNo.substr(5, ssNo.length - 4)
		}
		if (ssNo.length>3) {
			ssNo = ssNo.substr(0, 3) + '-' + ssNo.substr(3, ssNo.length - 2)
		}
		ssField.value = ssNo
	}
}

function getSSNo(aoField){
	ssField = aoField
	ssHandler = setInterval("formatSSNo()", handlerInterval)
}

function stopFormatter(handler) {
	clearInterval(handler)
}

function formatMixedCase() {
        var sValue, nValue, tValue
        if (mcField) {
                nValue  = "";
                sValue  = mcField.value;
                if (sValue==mcValue) {
                        return
                }
                results = sValue.match(/\S+\s*/g);
                if (results) {
                        for (var i =0; i < results.length; i++) {
                                if (results[i].length>1) {
                                        tValue = results[i].substr(0,1).toUpperCase() + results[i].substring(1, results[i].length);
                                } else {
                                        tValue = results[i].toUpperCase();
                                }
                                nValue = nValue + tValue;
                        }
                } else {
                        nValue = sValue;
                }
                mcField.value  = "";
                mcField.value  = nValue;
                mcValue = nValue
        }
}

function formatUpperCase() {
        var sValue, nValue, tValue
        if (mcField) {
                nValue  = "";
                sValue  = mcField.value;
                if (sValue==mcValue) {
                        return
                }
                sValue  = sValue.toUpperCase()
                mcField.value  = "";
                mcField.value  = sValue;
                mcValue = sValue
        }
}

function formatLowerCase() {
        var sValue, nValue, tValue
        if (mcField) {
                nValue  = "";
                sValue  = mcField.value;
                if (sValue==mcValue) {
                        return
                }
                sValue  = sValue.toLowerCase()
                mcField.value  = "";
                mcField.value  = sValue;
                mcValue = sValue
        }
}

function getMixedCase(aoField) {
        // dynamic arguments:
        //      arg[0] = field object
        //      arg[1] = format type (optional): 1 = mixed case (default), 2 = all uppercase, 3 = all lowercase
        args = getMixedCase.arguments
        if (args) {
                if (args.length>0) {
                        mcField = args[0];
                        mcValue = mcField.value
                        if (args.length>1) {
                                formatType = args[1]
                        } else {
                                formatType = 0
                        }
                        switch (args[1]) {
                                case 1:
                                        mcHandler = setInterval("formatMixedCase()", handlerInterval)
                                        break;
                                case 2:
                                        mcHandler = setInterval("formatUpperCase()", handlerInterval)
                                        break;
                                case 3:
                                        mcHandler = setInterval("formatLowerCase()", handlerInterval)
                                        break;
                                default:
                                        mcHandler = setInterval("formatMixedCase()", handlerInterval)
                                        break;
                        }
                }
        }
}

/* ====================================================================================
*  Macromedia Functions RC 09/16/03
======================================================================================== */

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 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];}}
}

/* ========================================================================= */
/* listbox selection                                                         */
/* ========================================================================= */
function small_window(myurl) {
var newWindow;
var props = 'scrollBars=yes,resizable=yes,toolbar=no,menubar=no,location=no,directories=no,width=300,height=200';
newWindow = window.open(myurl, "Add_from_Src_to_Dest", props);
}
// Adds the list of selected items selected in the child
// window to its list. It is called by child window to do so.  
function addToParentList(sourceList) {
destinationList = window.document.forms[0].parentList;
for(var count = destinationList.options.length - 1; count >= 0; count--) {
destinationList.options[count] = null;
}
for(var i = 0; i < sourceList.options.length; i++) {
if (sourceList.options[i] != null)
destinationList.options[i] = new Option(sourceList.options[i].text, sourceList.options[i].value );
   }
}
// Marks all the items as selected for the submit button.  
function selectList(sourceList) {
sourceList = window.document.forms[0].parentList;
for(var i = 0; i < sourceList.options.length; i++) {
if (sourceList.options[i] != null)
sourceList.options[i].selected = true;
}
return true;
}

// Deletes the selected items of supplied list.
function deleteSelectedItemsFromList(sourceList) {
var maxCnt = sourceList.options.length;
for(var i = maxCnt - 1; i >= 0; i--) {
if ((sourceList.options[i] != null) && (sourceList.options[i].selected == true)) {
sourceList.options[i] = null;
      }
   }
}
// Add the selected items in the parent by calling method of parent
function addSelectedItemsToParent() {
self.opener.addToParentList(window.document.forms[0].destList);
window.close();
}
// Fill the selcted item list with the items already present in parent.
function fillInitialDestList() {
var destList = window.document.forms[0].destList; 
var srcList = self.opener.window.document.forms[0].parentList;
for (var count = destList.options.length - 1; count >= 0; count--) {
destList.options[count] = null;
}
for(var i = 0; i < srcList.options.length; i++) { 
if (srcList.options[i] != null)
destList.options[i] = new Option(srcList.options[i].text);
   }
}
// Add the selected items from the source to destination list
function addSrcToDestList() {
destList = window.document.forms[0].destList;
srcList = window.document.forms[0].srcList; 
var len = destList.length;
for(var i = 0; i < srcList.length; i++) {
if ((srcList.options[i] != null) && (srcList.options[i].selected)) {
//Check if this value already exist in the destList or not
//if not then add it otherwise do not add it.
var found = false;
for(var count = 0; count < len; count++) {
if (destList.options[count] != null) {
if (srcList.options[i].text == destList.options[count].text) {
found = true;
break;
      }
   }
}
if (found != true) {
destList.options[len] = new Option(srcList.options[i].text); 
len++;
         }
      }
   }
}
// Deletes from the destination list.
function deleteFromDestList() {
var destList  = window.document.forms[0].destList;
var len = destList.options.length;
for(var i = (len-1); i >= 0; i--) {
if ((destList.options[i] != null) && (destList.options[i].selected == true)) {
destList.options[i] = null;
      }
   }
}

//============= Phone functions,  =======================
	function phoneMask(){
		/*
		*  Source:http://www.sutternow.com/CodeStuff/javascript/PhoneMask.jsp
		*  Researcher: Leo Veranga 03/25/2004
		*/
		var sMask = "01234567890 ";
		var KeyTyped = String.fromCharCode(window.event.keyCode);
		var srcObject = window.event.srcElement;
		if (sMask.indexOf(KeyTyped.toString()) == -1)
				{
						window.event.keyCode = 0;
						_ret = false;
				} 
		/* 
		* The varible "frigger is used because" the friggen DOM 
		*does not does not expose lenght via window.event.srcElement.length
		*/
		frigger = document.getElementById(window.event.srcElement.id);
		keyCount = frigger.value.length;
			var tmpStr = "(";
		    
		keyEntered = KeyTyped;
		keyCount++;

		//..US only, limit characters
		if (keyCount > 13) {
			srcObject.value = srcObject.value.substring(0, srcObject.value.length - 1);
			_ret = false;
		}
		switch (keyCount)
		{
			//case 2: modified by AST 04.06.2004 -- add '(' on after first character was typed
			case 1:
				tmpStr += srcObject.value;
				srcObject.value = tmpStr;
				break;
			case 5:
				srcObject.value += ")";
				break;
			case 9:
				srcObject.value += "-";
				break;
		}
		////..check again
		//if (srcObject.value.length == 1){
		//		tmpStr += srcObject.value;
		//		srcObject.value = tmpStr;
		//}
	}

	function ufRemoveNonNum(string)
	{
		for (var i=0, output='', valid="0123456789"; i < string.length; i++){
		if (valid.indexOf(string.charAt(i)) != -1)
			output += string.charAt(i)
		}	
		return output;
	}

	// auto format phone
	function ufFormatPhone(strValue) {
		//insert "()-" chars for US format 
		//using generic code
		// for US: 1st="(999)999-9999 999"
		var strNew = '', 
		 nPos1 =  0,
		 c1 = '(',
		 nPos2  = 4, 
		 c2 = ')',
		 nPos3 = 8,
		 c3 = '-',
		 nPos4 = 13,
		 c4 = ' ';
		strNew = ufInsertNthChar(strValue,c1,nPos1)
		strNew = ufInsertNthChar(strNew,c2,nPos2)
		strNew = ufInsertNthChar(strNew,c3,nPos3)
		strNew = ufInsertNthChar(strNew,c4,nPos4)
		//return strNew
		return strNew.substr(0,13); // AST 04.06.2004
	}
	
	// char insert function
	function ufInsertNthChar(string,chr,nth) {
		var output = '';
		for (var i=0; i<string.length; i++) {
			if (i == nth )
			output += chr;
			output += string.charAt(i);
		}
		return output;
	}	
	

	// used for phone validation, called in uf_Save event
	function uf_IsUSPhone(asPhone){
		var exp=/((\(\d{3}\))(\d{3}-))\d{4}$/;
		asPhone = asPhone.trim();
		if(asPhone != ""){
			if (!exp.test(asPhone)) {
				return false;
			}
			return true;
		}else{
			return true;
		}
	}
	
	
	//=========================== phone function end ===================

	function uf_IsEmail(asEmail) {
		var exp=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
		asEmail = asEmail.trim();
		if(asEmail != ""){
			if (!exp.test(asEmail)) {
			return false
			}
			return true;
		}else{
			return true;
		}
	}
	
	//***************************//
		
	//ante:07/18/2004 - function used from basepage
	// triggered during <body> tag onload=
	function uf_EnableTabView(){
		//maintab
		if (document.getElementById("UcTABView_TabView")) {
			document.getElementById("UcTABView_TabView").disabled = false;
			
			//ante:08/04/2004 #14817 - start
			//var lsScrollLeft = window.clipboardData.getData("Text");
			//window.clipboardData.clearData("Text");
			
			var lsScrollLeft = parent.header.document.frmHeader.hfScrollLeft.value;
			document.getElementById("ucTABView_divTabStrip").scrollLeft = lsScrollLeft;
			document.getElementById("ucTABView_divTabStrip").scrollLeft;
			parent.header.document.frmHeader.hfScrollLeft.value = "0";	
			
			//ante:08/16/2004 - issue#14817 - start
			var lsOffSet = document.getElementById("UcTABView_TabView").offsetWidth;
									
			if (lsOffSet <= "716") {
				document.getElementById("tdPrevImg").style.display = "none";
				document.getElementById("tdNextImg").style.display = "none";
				document.getElementById("ucTABView_tdTabStrip").width = "749";
				document.getElementById("ucTABView_tdTabStrip").colspan = "3";
				document.getElementById("ucTABView_divTabStrip").style.width = "747";
				document.getElementById("tblTabStrip").width = "747";
			} else {
				document.getElementById("tdPrevImg").style.display = "block";
				document.getElementById("tdNextImg").style.display = "block";
				document.getElementById("imgPrev").disabled = false;
				document.getElementById("imgNext").disabled = false;
				document.getElementById("ucTABView_tdTabStrip").width = "718";
				document.getElementById("ucTABView_divTabStrip").style.width = "716";
				document.getElementById("tblTabStrip").width = "716";
			}
			//ante:08/16/2004 - issue#14817 - end
			//ante:08/04/2004 #14817 - end
		}
		
		
		//subtab
		if (document.getElementById("ucTABView_TabMultiPage")) {
			document.getElementById("ucTABView_TabMultiPage").disabled = false;
			//ante:0728/2004 #14817 - start
			document.getElementById("ucTABView_tdMultiPage").style.display = "block";
			document.getElementById("ucTABView_tdMultiPageDisabled").style.display = "none";	
			//ante:0728/2004 #14817 - end
			//ante:08/12/2004 #14817 - start
			if (document.getElementById("ucTABView_tdMultiPageDisabled").innerText == "") {
				document.getElementById("trTopSubTab").style.display = "none";
			} else {
				document.getElementById("trTopSubTab").style.display = "block";
			}		
			//ante:08/12/2004 #14817 - end
        }
        
        //pagetab
		if (document.getElementById("ucTABView_TabMultiPageTab")) {
			document.getElementById("ucTABView_TabMultiPageTab").disabled = false;	
			//ante:07/29/2004 #14817 - start
			document.getElementById("ucTABView_tdMultiPagePageTab").style.display = "block";
			document.getElementById("ucTABView_tdMultiPageDisabledPageTab").style.display = "none";	
			//ante:07/29/2004 #14817 - end	
			//ante:08/12/2004 #14817 - start
			if (document.getElementById("ucTABView_tdMultiPageDisabledPageTab").innerText == "") {
				document.getElementById("trTopPageTab").style.display = "none";
				document.getElementById("trBottomPageTab").style.display = "none";	
				document.getElementById("trBottomSubTab").style.display = "none";			
			} else {
				document.getElementById("trTopPageTab").style.display = "block";
				document.getElementById("trBottomPageTab").style.display = "block";
				document.getElementById("trBottomSubTab").style.display = "block";			
			}		
			//ante:08/12/2004 #14817 - end	
		}
		
		//table footer
		if (document.getElementById("uc_footerCtrl.ID_tblFooter")) {
			document.getElementById("uc_footerCtrl.ID_tblFooter").style.display = "block";			
		}
		
	}

	//ante:08/06/2004 #14930 - start
	var isControlValue = "";

	function ufControlValue(){
		isControlValue = window.event.srcElement.type;
	}
	//ante:08/06/2004 #14930 - end
	
	//ante:07/23/2004 - disable Tab and footer	
	function uf_DisableObjects() {

		if (isControlValue=="" || isControlValue=="button" || isControlValue=="submit" ||
                isControlValue=="reset"  || isControlValue=="select-one") {	//ante:08/06/2004 #14930

			//main tab
			if (document.getElementById("UcTABView_TabView")) {
				document.getElementById("UcTABView_TabView").disabled = true;	
				
				//ante:08/02/2004 #14817 - start
				var lsScrollLeft = document.getElementById("ucTABView_divTabStrip").scrollLeft;
				parent.header.document.frmHeader.hfScrollLeft.value = lsScrollLeft;
				//window.clipboardData.setData("Text", lsScrollLeft.toString());
				//var a = window.clipboardData.getData("Text");
				//ante:08/02/2004 #14817 - end
				
				document.getElementById("imgPrev").disabled = true;	//ante:08/16/2004 #14817
				document.getElementById("imgNext").disabled = true;	//ante:08/16/2004 #14817
											
			}
			
			//sub tab
			if (document.getElementById("ucTABView_TabMultiPage")) {
				document.getElementById("ucTABView_TabMultiPage").disabled = true;
				//ante:0728/2004 #14817 - start
				document.getElementById("ucTABView_tdMultiPage").style.display = "none";
				document.getElementById("ucTABView_tdMultiPageDisabled").style.display = "block";	
				//ante:0728/2004 #14817 - end
			}
			
			//page tab
			if (document.getElementById("ucTABView_TabMultiPageTab")) {
				document.getElementById("ucTABView_TabMultiPageTab").disabled = true;
				//ante:07/29/2004 #14817 - start
				document.getElementById("ucTABView_tdMultiPagePageTab").style.display = "none";
				document.getElementById("ucTABView_tdMultiPageDisabledPageTab").style.display = "block";	
				//ante:07/29/2004 #14817 - end
			}
			
			//table footer
			if (document.getElementById("uc_footerCtrl.ID_tblFooter")) {
				document.getElementById("uc_footerCtrl.ID_tblFooter").style.display = "none";
			}
		
		}	//ante:08/06/2004 #14930
		isControlValue = ""	//ante:08/06/2004 #14930
		return;
		
		// since having problem using the disabled and readonly; the temporary solution is to hide the footer.
		// the codes ends here
		///////////////////////

		//menu
		if (document.getElementById("uc_footerCtrl.ID_btMenu")) {
			//document.getElementById("uc_footerCtrl.ID_btMenu").disabled = true;
			document.getElementById("uc_footerCtrl.ID_btMenu").readOnly = true;
			
		}
		//clear
		if (document.getElementById("uc_footerCtrl.ID_btClear")) {
			//document.getElementById("uc_footerCtrl.ID_btClear").disabled = true;
			document.getElementById("uc_footerCtrl.ID_btClear").readOnly = true;
		}
		
		//add
		if (document.getElementById("uc_footerCtrl.ID_Add")) {	
			//document.getElementById("uc_footerCtrl.ID_Add").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Add").readOnly = true;
		}
		
		//search
		if (document.getElementById("uc_footerCtrl.ID_btWSearch")) {
			//document.getElementById("uc_footerCtrl.ID_btWSearch").disabled = true;
			document.getElementById("uc_footerCtrl.ID_btWSearch").readOnly = true;
		}
		
		//save to file
		if (document.getElementById("uc_footerCtrl.ID_SavetoFile")) {
			//document.getElementById("uc_footerCtrl.ID_SavetoFile").disabled = true;
			document.getElementById("uc_footerCtrl.ID_SavetoFile").readOnly = true;
		}
		
		//save
		if (document.getElementById("uc_footerCtrl.ID_btSave")) {
			//document.getElementById("uc_footerCtrl.ID_btSave").disabled = true;
			document.getElementById("uc_footerCtrl.ID_btSave").readOnly = true;
		}
		
		//delete
		if (document.getElementById("uc_footerCtrl.ID_btDelete")) {
			//document.getElementById("uc_footerCtrl.ID_btDelete").disabled = true;
			document.getElementById("uc_footerCtrl.ID_btDelete").readOnly = true;
		}
		
		//print
		if (document.getElementById("uc_footerCtrl.ID_Print")) {
			//document.getElementById("uc_footerCtrl.ID_Print").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Print").readOnly = true;
		}
		
		//submit
		if (document.getElementById("uc_footerCtrl.ID_Submit")) {
			//document.getElementById("uc_footerCtrl.ID_Submit").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Submit").readOnly = true;
		}
		
		//back
		if (document.getElementById("uc_footerCtrl.ID_btBack")) {
			//document.getElementById("uc_footerCtrl.ID_btBack").disabled = true;
			document.getElementById("uc_footerCtrl.ID_btBack").readOnly = true;
		}
		
		//import
		if (document.getElementById("uc_footerCtrl.ID_Import")) {
			//document.getElementById("uc_footerCtrl.ID_Import").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Import").readOnly = true;
		}
		
		//Save As Template
		if (document.getElementById("uc_footerCtrl.ID_SaveAsTemplate")) {
			//document.getElementById("uc_footerCtrl.ID_SaveAsTemplate").disabled = true;
			document.getElementById("uc_footerCtrl.ID_SaveAsTemplate").readOnly = true;
		}
		
		//clone
		if (document.getElementById("uc_footerCtrl.ID_Clone")) {
			//document.getElementById("uc_footerCtrl.ID_Clone").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Clone").readOnly = true;
		}
		
		//create
		if (document.getElementById("uc_footerCtrl.ID_Create")) {
			//document.getElementById("uc_footerCtrl.ID_Create").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Create").readOnly = true;
		}
			
		//freeze
		if (document.getElementById("uc_footerCtrl.ID_Freeze")) {
			//document.getElementById("uc_footerCtrl.ID_Freeze").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Freeze").readOnly = true;
		}
		
		//inactive
		if (document.getElementById("uc_footerCtrl.ID_Inactive")) {
			//document.getElementById("uc_footerCtrl.ID_Inactive").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Inactive").readOnly = true;
		}
		
		//void
		if (document.getElementById("uc_footerCtrl.ID_Void")) {
			//document.getElementById("uc_footerCtrl.ID_Void").disabled = true;
			document.getElementById("uc_footerCtrl.ID_Void").readOnly = true;
		}
		
				
		//search table - start
		//search field
		if (document.getElementById("uc_footerCtrl.ID_ddlSearch")) {
			//document.getElementById("uc_footerCtrl.ID_ddlSearch").disabled = true;
			document.getElementById("uc_footerCtrl.ID_ddlSearch").readOnly = true;
		}
		
		//search filter
		if (document.getElementById("uc_footerCtrl.ID_ddlFilter")) {
			//document.getElementById("uc_footerCtrl.ID_ddlFilter").disabled = true;
			document.getElementById("uc_footerCtrl.ID_ddlFilter").readOnly = true;
		}
		
		//search text
		if (document.getElementById("uc_footerCtrl.ID_txtSearch")) {
			//document.getElementById("uc_footerCtrl.ID_txtSearch").disabled = true;
			document.getElementById("uc_footerCtrl.ID_txtSearch").readOnly = true;
		}
		
		//search button
		if (document.getElementById("uc_footerCtrl.ID_btTableSearch")) {
			//document.getElementById("uc_footerCtrl.ID_btTableSearch").disabled = true;
			document.getElementById("uc_footerCtrl.ID_btTableSearch").readOnly = true;
		}
			
		//search table - end

	}


//ante:08/09/2004 - #14817 start
var speedmoving;
	function ufMouseDown(asValue){
		var delay = 1; //speed in milliseconds
		var x = 5; //amount to jump by
		
		if (asValue == "ADD") {
			speedmoving = window.setInterval("scrollDiv(" + x + ",'ADD')", delay);
		} else {
			speedmoving = window.setInterval("scrollDiv(" + x + ",'SUB')", delay);
		}
		return true;
	}

	function ufMouseUp(){
		if (speedmoving) {
			window.clearInterval(speedmoving);
		}
		
		var dB = document.getElementById("ucTABView_divTabStrip");
		var lsScrollLeft = dB.scrollLeft;
		parent.header.document.frmHeader.hfScrollLeft.value = lsScrollLeft;		
	}

	function scrollDiv(x,asValue) {
		var dB = document.getElementById("ucTABView_divTabStrip");
		if (asValue == "ADD") {
			dx = dB.scrollLeft + x;			
		} else {
			dx = dB.scrollLeft - x;
		}	
		dB.scrollLeft = dx;
		dB.scrollLeft;
				
	}

	//ante:08/09/2004 - #14817 end


	//***************************//
	
	
//AVillaflor Issue # 23779 01.16.06
//This function catches the Enter Key (keyCode=13) to prevent it from automatically issuing a form submit event.
function ufKeyFilter()
{
	if(navigator.userAgent.indexOf("Mac") != -1)
	{
		var keyCode = event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode);
		if (keyCode == 13) 
		{
			return false
		}
	}
}