window.defaultStatus ="";

/*-----------------------------------------------*/
/*   reportError ...                             */
/*-----------------------------------------------*/
window.onerror = reportError;
function reportError( msg, url, line )
{
   alert( msg + "\n" + url );
}

/*--------------------------------------------------------------------------*/
/*   isIE ...                                                               */
/*--------------------------------------------------------------------------*/
function isIE()
{
   return (window.navigator.appName == "Microsoft Internet Explorer");
}

/*--------------------------------------------------------------------------*/
/*   isFireFox ...                                                          */
/*--------------------------------------------------------------------------*/
function isFireFox()
{
   return (window.navigator.appName == "Netscape");
}

/*--------------------------------------------------------------------------*/
/*   popCalendar ...                                                        */
/*--------------------------------------------------------------------------*/
function popCalendar( field, range, frm )
{
   var om     = eval("document." + frm + "." + field + "_mm" );
   var od     = eval("document." + frm + "." + field + "_dd" );
   var oy     = eval("document." + frm + "." + field + "_yy" );
   var ofield = eval("document." + frm + "." + field );

   var mm = om.value;
   var dd = od.value;
   var yy = oy.value;

   var ad = "/js/calendar.jsp?m=" + mm + "&d=" + dd + "&y=" + yy + "&r=" + range;
   var nd;
   if( isIE() )
   {
      nd = showModalDialog( ad, '',    'dialogWidth=130pt;dialogHeight=180pt;center=yes;border=thick;help=no;minimize=no;maximize=no;status=no');
      if( nd != null )
      {
         tmpDt = nd.split("/");
         if( nd!="" && nd!=null )
         {
            eval("document." + frm + "." + field ).value = nd;
            om.value = tmpDt[0];
            od.value = tmpDt[1];
            oy.value = tmpDt[2];

            om.style.color = "black";
            od.style.color = "black";
            oy.style.color = "black";
         }
      }
   }
   else
   if( isFireFox() )
   {
      nd = window.open( ad, 'cal', "width=160,height=200,status=0,resizable=0, modal, dialog, centerscreen" );
      nd.om    = om;
      nd.od    = od;
      nd.oy    = oy;
      nd.field = ofield;
   }
}

/*-----------------------------------------------*/
/*   extractNumberJunk ...                       */
/*-----------------------------------------------*/
function extractNumberJunk( dd )
{
   var rr = "";
   for( var i=0; i<dd.value.length; i++ )
   {
      d = dd.value.charAt( i );
      if( (d <= "9" && d >= "0") || d == "." )
         rr += d;
   }
   dd.value = rr;
}

/*-------------------------------------------------------------*/
/*   Trim ...                                                  */
/*-------------------------------------------------------------*/
function Trim(s)
{
   if( s==null || typeof s=="undefined" )
      return "";
   /* cut white spaces from the beginning */
   while( s.charAt(0) == " " || s.charAt(0)=="\t" || s.charAt(0)=="\n" && s!="" )
      s=s.substring(1,s.length);
   /* cut white spaces from the end */
   while(s.charAt(s.length-1)==" " || s.charAt(s.lenth-1)=="\t" ||s.charAt(0)=="\n" && s!="")
      s=s.substring(0,s.length-1);

   p = s.indexOf("&nbsp;");
   if( p != -1 )
      s = s.substring( 0, p ) + s.substring( p + 6 );
   return s;
}

/*-----------------------------------------------*/
/*   decCheck ...                                */
/*-----------------------------------------------*/
function decCheck( numStr )
{
   return !( isNaN(numStr) || (numStr.indexOf("e")>-1) );
}

/*-----------------------------------------------*/
/*   intCheck ...                                */
/*-----------------------------------------------*/
function intCheck( numStr )
{
   if( !decCheck( numStr ) )         return false;
   if( numStr.indexOf( "." ) != -1 ) return false;
   return true;
}

/*-----------------------------------------------*/
/*   zipCheck ...                                */
/*-----------------------------------------------*/
function zipCheck( zip )
{
   _zip = Trim(zip);
   if( _zip.length == 0 )
      return true;
   return (intCheck(_zip) && _zip.length==5 );
}

/*-----------------------------------------------*/
/*   phoneCheck ...                              */
/*-----------------------------------------------*/
function phoneCheck( phone )
{
   _phone = Trim(phone);
   if( _phone.length == 0 )
      return true;
   return (intCheck(_phone) && _phone.length==10 );
}

/*-----------------------------------------------*/
/*   removeFromURL ...                           */
/*-----------------------------------------------*/
function removeFromURL( u, option )
{
   p = u.split( "?" );
   if( p.length == 1 )
      return u;
   url    = p[0];
   uri    = p[1];
   newURI = "";
   allPairs = uri.split( "&" );
   for( i=0; i<allPairs.length; i++ )
   {
      pair = allPairs[i].split( "=" );
      if( pair[0] != option )
         newURI += "&" + allPairs[i];
   }
   newURI = newURI.substring( 1 );
   return url + "?" + newURI;
}

/*-----------------------------------------------*/
/*   ssnCheck ...                                */
/*-----------------------------------------------*/
function ssnCheck( ssn )
{
   _ssn = Trim(ssn);
   if( _ssn.length == 0 )
      return true;
   return (intCheck(_ssn) && _ssn.length==9 );
}



/*-------------------------------------------------------------------*/
/*   beforeToday ...                                                 */
/*-------------------------------------------------------------------*/
function beforeToday( dt, today, range )
{
   if( (dt=="") || (dt=="//") || (dt=="  /  /    ") )
      return false;
   if( range == 0 )
      return false;

   ar = dt.split("/");
   dt1 = ar[2] + ar[0] + ar[1];

   dt2 = "";
   if( today == "" )
   {
      d  = new Date();
      mm = d.getMonth() + 1;
      dd = d.getDate();
      _m = ((mm<10)?"0":"") + mm;
      _d = ((dd<10)?"0":"") + dd;
      dt2 = "" + d.getYear() + _m + "" + _d;
   }
   else
   {
      ar = today.split("/");
      dt2 = ar[2] + ar[0] + ar[1];
   }
   b = null;
   if( range == -1 )
      b = (parseInt(dt1,10) > parseInt(dt2,10));
   else
      b = (parseInt(dt1,10) < parseInt(dt2,10));
   //  alert( "" + parseInt(dt1,10) + "\n" + parseInt(dt2,10) + "\n" + b + "\n" + range );
   return b;
}

/*-----------------------------------------------*/
/*   isDateOK ...                                */
/*-----------------------------------------------*/
function isDateOK( objM, objD, objY )
{
   m = Trim( objM.value );
   d = Trim( objD.value );
   y = Trim( objY.value );

   if( m=="" || d=="" || y=="" )
      return true;
   if( !intCheck(m) || !intCheck(d) || !intCheck(y) )
      return false;
   _m = parseInt(m,10);
   _d = parseInt(d,10);
   _y = parseInt(y,10);
   if( _m > 12 || _m==0 )
      return false;
   if( _d > 31 || _d==0 )
      return false;
   _y = ((_y<1000)?2000:0) + _y;
   if( _m==2 )
   {
      if( (_y%4==0) && _d>29 )
         return false;
      if( (_y%4!=0) && _d>28 )
         return false;
   }
   else
   {
      if( _m==4 || _m==6 || _m==9 || _m==11 )
         if( _d>30 )
               return false;
   }
   m = ((_m<10)?"0":"") + _m;
   d = ((_d<10)?"0":"") + _d;
   objM.value =  m;
   objD.value =  d;
   objY.value = _y;
   return true;
}

/*-----------------------------------------------*/
/*   setDate ...                                 */
/*-----------------------------------------------*/
function setDate( o )
{
   if( Trim(o.value) == "" )   { o.value = ""; return; }
   tmp = o.value.split( "/" );
   m = tmp[0];
   d = tmp[1];
   y = tmp[2];
   m = (m==null)?"":Trim(m);
   d = (d==null)?"":Trim(d);
   y = (y==null)?"":Trim(y);
   if( m=="" && d=="" && y=="" )
      o.value = "";
   else
      o.value = m + "/" + d + "/" + y;
}

/*-----------------------------------------------*/
/*   checkDate ...                               */
/*-----------------------------------------------*/
function checkDate( objDt )
{
   dt = objDt.value;
   if( Trim(dt) == "" )
      return true;
   tmp = dt.split( "/" );
   if( tmp.length != 3 )
      return false;

   m = tmp[0];
   d = tmp[1];
   y = tmp[2];

   if( y.length != 4 )
      return false;
   if( m=="" && d=="" && y=="" )
      return true;
   if( m=="" || d=="" || y=="" )
      return false;
   if( !intCheck(m) || !intCheck(d) || !intCheck(y) )
      return false;
   _m = parseInt(m,10);
   _d = parseInt(d,10);
   _y = parseInt(y,10);

   if( _m > 12 || _m==0 )
      return false;
   if( _d > 31 || _d==0 )
      return false;
   _y = ((_y<1000)?2000:0) + _y;

   objDt.value = _m + "/" + _d + "/" + _y;

   if( _y < 1800 )
      return false;
   if( _m==2 )
   {
      if( (_y%4==0) && _d>29 )
         return false;
      if( (_y%4!=0) && _d>28 )
         return false;
   }
   else
   {
      if( _m==4 || _m==6 || _m==9 || _m==11 )
         if( _d>30 )
               return false;
   }
   if( _y < 1900 )      return false;
//   if( _y > 2008 )      return false;
   return true;
}


/*----------------------------------------------------------------------------*/
/*   FormatDecimal ...                                                        */
/*----------------------------------------------------------------------------*/
function FormatDecimal( n, nd, fn, debug )
{
   s  = 1;
   n2 = n;
   if( n < 0 )
   {
      s=-1;
      n2 = -n;
   }
   var dec = n2 - Math.floor(n2);
   var nbr = Math.floor(n2);


   /*------- Rounding -------*/
   dec = Math.round(dec * Math.pow(10,nd)) / Math.pow(10,nd);
   if( dec >= 1 )
      nbr += Math.floor(dec);

   dec = "" + dec + "00000000000000000000000";
   dec = dec.substr( 2, nd );
   nbr = "" + nbr;

   /*------- Formatting ie 999,999,999.00 -------*/
   if( fn )
   {
      var tmp = "";
      var ind = 0;
      for( var i=nbr.length-1; i>=0; i-- )
      {
         if( ind%3 == 0 && ind > 0 )
            tmp = "," + tmp;
         tmp = nbr.charAt(i) + tmp;
         ind ++;
      }
      nbr = tmp;
   }

   if( nd == 0 )
      tmp2 = nbr;
   else
      tmp2 = nbr + "." + dec;

   if( s<0 )
      tmp2 = "-" + tmp2;
   return tmp2;
}


/*----------------------------------------------------------------------------*/
/*   blurDecimal ...                                                          */
/*----------------------------------------------------------------------------*/
function blurDecimal( o, nd )
{
   fmtDecimal( o, nd );
}

/*----------------------------------------------------------------------------*/
/*   fmtDecimal ...                                                           */
/*----------------------------------------------------------------------------*/
function fmtDecimal( o, nd )
{
   o.value = Trim( o.value );
   extractNumberJunk( o );
   if( o.value == "" )
      return;
   if( !decCheck( o.value ) )
      o.value = "";
   v = FormatDecimal( o.value, nd, true, false );
   o.value = v;
}

/*----------------------------------------------------------------------------*/
/*   ClearForm ...                                                            */
/*----------------------------------------------------------------------------*/
function ClearForm( frm )
{
   for( var i=0; i<frm.elements.length; i++ )
      if( (frm.elements[i].type == "hidden") || (frm.elements[i].type == "text") || (frm.elements[i].type == "select-one")  )
         frm.elements[i].value = "";
}

/*----------------------------------------------------------------------------*/
/*   ovr ...                                                                  */
/*----------------------------------------------------------------------------*/
function ovr(o)
{
   o.style.borderColor     = "blue";
   o.style.color           = "blue";
   o.style.backgroundColor = "#AAAAAA";
}

/*----------------------------------------------------------------------------*/
/*   out ...                                                                  */
/*----------------------------------------------------------------------------*/
function out(o)
{
   o.style.borderColor     = "black";
   o.style.color           = "black";
   o.style.backgroundColor = "#CCCCCC";
}

var http;
/*--------------------------------------------------*/
/*   httpCall ...                                   */
/*--------------------------------------------------*/
function httpCall( url, response )
{
   if( isIE() )
      http = new ActiveXObject("Microsoft.XMLHTTP");
   else
      http = new XMLHttpRequest();
   http.open( "get", url, false );
   http.onreadystatechange = eval(response);
   http.send( null );
}

/*--------------------------------------------------*/
/*   digitsOnly ...                                 */
/*--------------------------------------------------*/
function digitsOnly(o)
{
   extractNumberJunk( o );
}

/*--------------------------------------------------*/
/*   populateDate ...                               */
/*--------------------------------------------------*/
function populateDate(o)
{
   arr = o.value.split("-");
   if( arr[0]=="01" && arr[1]=="01" && arr[2]=="1900" )
      return;
   eval("document.frm." + o.name + "_yy").value = arr[0];
   eval("document.frm." + o.name + "_mm").value = arr[1];
   eval("document.frm." + o.name + "_dd").value = arr[2];
}

/*-------------------------------------------------------------*/
/*   emailCheck ...                                            */
/*-------------------------------------------------------------*/
function emailCheck( emailStr )
{
   if( Trim(emailStr) == "" )
      return true;
   var emailPat     = /^(.+)@(.+)$/;
   var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars   = "\[^\\s" + specialChars + "\]";
   var quotedUser   = "(\"[^\"]*\")";
   var ipDomainPat  = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
   var atom         = validChars + '+';
   var word         = "(" + atom + "|" + quotedUser + ")";
   var userPat      = new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat    = new RegExp("^" + atom + "(\\." + atom +")*$");


   var matchArray=emailStr.match(emailPat)
   if( matchArray==null )
      return false;

   var user=matchArray[1]
   var domain=matchArray[2]

   if( user.match(userPat)==null )
      return false

   var IPArray = domain.match( ipDomainPat )
   if( IPArray != null )
   {
      for( var i=1;i<=4;i++ )
      {
         if( IPArray[i]>255 )
            return false
      }
      return true
   }

   var domainArray=domain.match(domainPat)
   if( domainArray==null )
      return false

   var atomPat = new RegExp(atom,"g")
   var domArr  = domain.match(atomPat)
   var len     = domArr.length
   if( domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
      return false

   if( len<2 )
   {
      var errStr="This address is missing a hostname!"
      return false
   }

   return true;
}

/*--------------------------------------------------*/
/*   getCookieVal ...                               */
/*--------------------------------------------------*/
function getCookieVal( offset )
{
   var endstr = document.cookie.indexOf( ";", offset );
   if( endstr == -1 )
      endstr = document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}
         
/*--------------------------------------------------*/
/*   GetCookie ...                                  */
/*--------------------------------------------------*/
function GetCookie( CookieName, nvl )
{
   var arg = CookieName + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while( i < clen )
   {
      var j = i + alen;
      if( document.cookie.substring(i, j) == arg )
         return getCookieVal( j );
      i = document.cookie.indexOf(" ", i) + 1;
      if( i == 0 )
         break;
   }
   return nvl;
}
         
/*--------------------------------------------------*/
/*   SetCookie ...                                  */
/*--------------------------------------------------*/
function SetCookie( CookieName, value, expDays )
{
   var exp = new Date();
   exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
   addck  = "";
   addck += CookieName + "=" + escape (value);
   addck += "; expires=" + exp.toGMTString();
   document.cookie = addck;
}


function blr( o )
{
}

function blurPhone( o )
{
}


function checkRadio( o, v )
{
   for( i=0; i<o.length; i++ )
   {
      if( o[i].value == v )
      {
         o[i].checked = true;
         return;
      }
   }
}

function checkTheBox( o, v )
{
   o.checked = ( o.vchk == v );
}


function populateSsn( frmName, fName, val )
{
   _f1 = eval( "document." + frmName + "." + fName + "_1" );
   _f2 = eval( "document." + frmName + "." + fName + "_2" );
   _f3 = eval( "document." + frmName + "." + fName + "_3" );
   _f1.value = val.substr( 0, 3 );
   _f2.value = val.substr( 3, 2 );
   _f3.value = val.substr( 5, 8 );
}
function populatePhone( frmName, fName, val )
{
   _f1 = eval( "document." + frmName + "." + fName + "_1" );
   _f2 = eval( "document." + frmName + "." + fName + "_2" );
   _f3 = eval( "document." + frmName + "." + fName + "_3" );
   _f1.value = val.substr( 0, 3 );
   _f2.value = val.substr( 3, 3 );
   _f3.value = val.substr( 6, 9 );
}
function populateDate( frmName, fName, val )
{
   arr = val.split( "/" );
   _f1 = eval( "document." + frmName + "." + fName + "_mm" );
   _f2 = eval( "document." + frmName + "." + fName + "_dd" );
   _f3 = eval( "document." + frmName + "." + fName + "_yy" );

   if( arr[0]=='01' && arr[1]=='01' && arr[2]=='1900' )
   {
      _f1.value = "";
      _f2.value = "";
      _f3.value = "";
   }
   else
   {
      _f1.value = arr[0];
      _f2.value = arr[1];
      _f3.value = arr[2];
   }
}







function alertCheck( fld, lbl, forbid, tabNum, fcs )
{
   if( fld.value == forbid )
   {
      if( tabNum >= 0 )
         setCurrentTab( document.getElementById("tb" + tabNum + "_1") );
      alert( lbl + " required ..." );

      if( (fld.type == "text") || (fld.type.indexOf("select")!=-1) )
         fld.focus();
      if( (fld.type == "hidden") && (fcs!=null) )
         fcs.focus();
      return true;
   }
   return false;
}

function addDays( myDate, days )
{
   return new Date(myDate.getTime() + days*24*60*60*1000);
}




/*------------------*/
/*--- Google fix ---*/
/*------------------*/
  if(window.attachEvent)
    window.attachEvent("onload",setListeners);

  function setListeners(){
    inputList = document.getElementsByTagName("INPUT");
    for(i=0;i<inputList.length;i++){
      inputList[i].attachEvent("onpropertychange",restoreStyles);
      inputList[i].style.backgroundColor = "";
    }
    selectList = document.getElementsByTagName("SELECT");
    for(i=0;i<selectList.length;i++){
      selectList[i].attachEvent("onpropertychange",restoreStyles);
      selectList[i].style.backgroundColor = "";
    }
  }

  function restoreStyles(){
    if(event.srcElement.style.backgroundColor != "")
      event.srcElement.style.backgroundColor = "";
  }//-->
