//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 = ""
/* ========================================================================= */
/* trims leading/trailing spaces from a string                               */
/* ========================================================================= */
/* for validation messages */
lsmsgvar_26 = document.getElementById("msgvar_26").value
lsmsgvar_27 = document.getElementById("msgvar_27").value
lsmsgvar_28 = document.getElementById("msgvar_28").value
lsmsgvar_29 = document.getElementById("msgvar_29").value
lsmsgvar_30 = document.getElementById("msgvar_30").value

/* ======================= */
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 + lsmsgvar_26;
             return lsMessage;
        } else {
                var ldTmp = (lsVal.trim() == "")?0: eval(lsVal);
                if (lsVal.trim()!="" && ldTmp<0) {
                        lsMessage = asText +lsmsgvar_27;
                        return lsMessage;
                }
                liPos = lsVal.indexOf(".");
                if (liPos >= 0){
                        lsDecimal = lsVal.substring(liPos+1);
                        if (lsDecimal.length > 2){
                                lsMessage = asText +lsmsgvar_28;
                                return lsMessage;
                        }
                }
                if(eval(lsVal) > 999999.99) {
                        lsMessage = asText +lsmsgvar_29;
                        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 +lsmsgvar_26;
             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 +lsmsgvar_28;
                                return lsMessage;
                        }
                }

               if(eval(lsVal) > 999999.99) {
                        lsMessage = asText +lsmsgvar_29;
                       return lsMessage;
                }

        }
        return "";
}


//validates Minimum and Maximum range
function ufValidate_Range(asMin,asMax,asMinField,asMaxField){
  if (eval(asMin) > eval(asMax)){
    lsMessage = asMinField +lsmsgvar_30+ 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;
      }
   }
}

function MM_openBrWindow(theURL,winName,features)
{ //v2.0
  window.open(theURL,winName,features);
}

function textCounter(field, countfield, maxlimit) {
if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
else
countfield.value = maxlimit - field.value.length;
}
