<!--
// Frame Buster
if (window != top) top.location.href = location.href;

// Functions to verify form input
var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
function isValid(parm,val) {
  if (parm == "") return true;
  for (i=0; i<parm.length; i++) {
    if (val.indexOf(parm.charAt(i),0) == -1) return false;
  }
  return true;
}

function isAlpha(parm) {return isValid(parm,lwr+upr);}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb);}
function isNumeric(parm) {return isValid(parm,numb);}
function isDecimal(parm) {return isValid(parm,numb+'.');}
function isValidUser(parm) {return isValid(parm,lwr+upr+numb+'.@_!-');}
function isPrice(parm) {return isValid(parm,numb+'$.,');}

function stripBlanks(fld) {
var result = '';
if (fld == '') return result;
var c = 0;
for (i=0; i<fld.length; i++) {
  if (fld.charAt(i) != ' ' || c > 0) {
    result += fld.charAt(i);
    if (fld.charAt(i) != ' ') c = result.length;
    }
  }
return result.substr(0,c);
}

function verifyField(fld, str) {
  if (stripBlanks(fld.value) == '') fld.value = str;
  return true;
}

function isNumber(parm) {
  if (!isNumeric(parm)) {
    alert('Please enter only numbers.');
    return false;
  }
  return true;
}

function isValidDecimal(parm) {
  if (!isDecimal(parm)) {
    alert('Please enter a valid number.');
    return false;
  }
  return true;
}

function validateEmail(addr,db) {
  var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
/*
  for (i=0; i<invalidChars.length; i++) {
    if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
      if (db) alert('email address contains invalid characters');
      return false;
    }
  }
*/
  for (i=0; i<addr.length; i++) {
    if (addr.charCodeAt(i)>127) {
      if (db) alert("email address contains non ascii characters.");
      return false;
     }
  }
  var atPos = addr.indexOf('@',0);
  if (atPos == -1) {
    if (db) alert('email address must contain an @');
    return false;
  }
  if (atPos == 0) {
    if (db) alert('email address must not start with @');
    return false;
  }
  if (addr.indexOf('@', atPos + 1) > - 1) {
    if (db) alert('email address must contain only one @');
    return false;
  }
  if (addr.indexOf('.', atPos) == -1) {
    if (db) alert('email address must contain a period in the domain name');
    return false;
  }
  if (addr.indexOf('@.',0) != -1) {
    if (db) alert('period must not immediately follow @ in email address');
    return false;
  }
  if (addr.indexOf('.@',0) != -1){
    if (db) alert('period must not immediately precede @ in email address');
    return false;
  }
  if (addr.indexOf('..',0) != -1) {
    if (db) alert('two periods must not be adjacent in email address');
    return false;
  }
  var suffix = addr.substring(addr.lastIndexOf('.')+1);
  if (suffix.length != 2 && suffix.toLowerCase() != 'com' && suffix.toLowerCase() != 'net' && suffix.toLowerCase() != 'org' && suffix.toLowerCase() != 'edu' && suffix.toLowerCase() != 'int' && suffix.toLowerCase() != 'mil' && suffix.toLowerCase() != 'gov' & suffix.toLowerCase() != 'arpa' && suffix.toLowerCase() != 'biz' && suffix.toLowerCase() != 'aero' && suffix.toLowerCase() != 'name' && suffix.toLowerCase() != 'coop' && suffix.toLowerCase() != 'info' && suffix.toLowerCase() != 'pro' && suffix.toLowerCase() != 'museum' && suffix.toLowerCase() != 'nom' && suffix.toLowerCase() != 'name' && suffix.toLowerCase() != 'web') {
    if (db) alert('invalid primary domain in email address');
    return false;
  }
  return true;
}

function popUp(URL, winWidth, winHeight) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=" + winWidth +",height=" + winHeight + "');");
}

function valKeyPress(highVal, lowVal, allowedKeys, evt)
{
  if (!evt) evt = window.event;
  if(highVal != "None" && lowVal != "None")
  {
    if(evt.keyCode < highVal && evt.keyCode > lowVal)
      return true; 
  }
  if(allowedKeys.indexOf(";" + evt.keyCode + ";") != -1)
    return true;
  return false;
}

function limitChars(field, charsAllowed)
{
  if(field.value.length >= charsAllowed)
  {
    alert("This field is limited to " + charsAllowed + " characters.");
    return false;
  }
  return true;
}

function isDate(dateStr)
{
  var aa;
  var strError;
  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2}|\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
    if (matchArray == null) 
    strError = "Please enter date as either mm/dd/yyyy, mm-dd-yyyy, mm/dd/yy, or mm-dd-yy.";
    else
    {
      month = matchArray[1]; // parse date into variables
      day = matchArray[3];
      year = matchArray[5];
      if (month < 1 || month > 12) { // check month range
        strError = "Month must be between 1 and 12.";
      }
      if (day < 1 || day > 31) {
        strError = "Day must be between 1 and 31.";
      }
      if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        strError = "Month "+month+" doesn't have 31 days!";
      }
      if (month == 2) // check for february 29th
      {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
        strError = "February " + year + " doesn't have " + day + " days!";
        }
      }
    }
  return strError;
}

/* This function makes sure users do not use invalid price ranges */ 
function rangeFixHigh(frm, fLo, fHi) {
  var form = document.forms[frm];
  var elem1=form.elements[fHi];
  var elem2=form.elements[fLo];
  if (parseInt(elem1.options[elem1.selectedIndex].value) == 99999999){
    elem1.selectedIndex = (elem2.selectedIndex);
  }
  if (parseInt(elem2.options[elem2.selectedIndex].value) > 99999999) {
    elem1.selectedIndex = (elem2.selectedIndex);
  }
  if (parseInt(elem2.options[elem2.selectedIndex].value) >= parseInt(elem1.options[elem1.selectedIndex].value)) {
    elem1.selectedIndex = (elem2.selectedIndex);
  }
}

function rangeFixLow(frm, fLo, fHi) {
  var form = document.forms[frm];
  var elem1=form.elements[fHi];
  var elem2=form.elements[fLo];
  if (parseInt(elem1.options[elem1.selectedIndex].value) > 99999999) {
    elem2.selectedIndex = (elem1.selectedIndex);
  }
  if (parseInt(elem1.options[elem1.selectedIndex].value) <= parseInt(elem2.options[elem2.selectedIndex].value)) { 
    elem2.selectedIndex = (elem1.selectedIndex);
  }
}

function selectBox(field1,field2) {
  if (document.search[field1].value != "") {
    document.search[field2].checked = true;
  } else {
    document.search[field2].checked = false;
  }
}

function selectRadio(frm, fld, val) {
  var form = document.forms[frm];
  var elem = form.elements[fld];
  for (var i=0; i<elem.length; i++) {
    if (elem[i].value == val) { elem[i].click(); }
	}
}

function selectCBox(frm, fld, val) {
  var form = document.forms[frm];
  var elem = form.elements[fld];
  for (var i=0; i<elem.length; i++) {
    if (elem[i].value == val) { elem[i].checked = true; }
	}
}

function dateDiff(date1, date2)
{
  //create first date as js object
  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4}|\d{2})$/;
  var dateArray1 = date1.match(datePat);  
  month1 = dateArray1[1];
  day1 = dateArray1[3];
  year1 = dateArray1[5];
  if(year1.length == 2)
  {
    if(parseInt(year1) >= 80 && parseInt(year1) <= 99)
    {
      year1 = "19" + year1;
    }
    else
      year1 = "20" + year1;
  }
  var jsDate1 = new Date(year1, (month1 - 1), day1);
  //create second date as js object - if blank it is set to today's date
  if(date2 == "")
  {
    jsDate2 = new Date();
    jsDate2.setHours(0,0,0,0); //don't want extra milliseconds
  }
  else
  {  
    var dateArray2 = date2.match(datePat);  
    month2 = dateArray2[1];
    day2 = dateArray2[3];
    year2 = dateArray2[5];
    jsDate2 = new Date(year2, (month2 - 1), day2);
  }
  return (jsDate2 - jsDate1)/86400000;  //86400000 is the number of milliseconds in a day = 1000*60*60*24
}  

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//:::                                                                         :::
//:::  This routine calculates the distance between two points (given the     :::
//:::  latitude/longitude of those points).                                   :::
//:::                                                                         :::
//:::  Definitions:                                                           :::
//:::    South latitudes are negative, east longitudes are positive           :::
//:::                                                                         :::
//:::  Passed to function:                                                    :::
//:::    lat1, lon1 = Latitude and Longitude of point 1 (in decimal degrees)  :::
//:::    lat2, lon2 = Latitude and Longitude of point 2 (in decimal degrees)  :::
//:::    unit = the unit you desire for results                               :::
//:::           where: 'M' is statute miles (default)                         :::
//:::                  'K' is kilometers                                      :::
//:::                                                                         :::
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

function distance(lat1, lon1, lat2, lon2, unit) {
  var radlat1 = Math.PI * lat1/180;
  var radlat2 = Math.PI * lat2/180;
  var radlon1 = Math.PI * lon1/180;
  var radlon2 = Math.PI * lon2/180;
  var theta = lon1-lon2;
  var radtheta = Math.PI * theta/180;
  var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
  dist = Math.acos(dist);
  dist = dist * 180/Math.PI;
  dist = dist * 60 * 1.1515;
  if (unit=="K") { dist = dist * 1.609344 }
  return dist;
}

function getElement(psID) {
  if(document.all) {
    return document.all[psID];
  } else if(document.getElementById) {
    return document.getElementById(psID); 
  } else {
    for (iLayer = 1; iLayer < document.layers.length; iLayer++) {
      if(document.layers[iLayer].id == psID) return document.layers[iLayer];
    }      
  }
  return Null;
}

//-->