// Common Javascript Functions
// started 03/11/2003 by Herb Rubin

var RecaptchaOptions = {
    theme : 'clean'
};

var saved_confirm_data = new Array();

function rollover(target,imgName) {
	if (document.images) {
		imgchange = 'images/' + imgName;
		document[target].src = imgchange;
		}
}

function smartdate (t) {
  // assist user in entering a valid date (mm-dd-yyyy)
  // This is a required field.
  // It converts 4 digit years to 2 digit years. It looks for
  // leap year correctness and defaults to today's date.
  var result;
  var pattern_1d = /^\d$/;
  var pattern_2d = /^\d\d$/;
  var pattern_3ds = /^(\d)(\d\d)$/; // assume m-dd
  var pattern_4d = /^\d\d\d\d$/;
  var pattern_4ds = /^(\d\d)(\d\d)$/; // assume mm-dd
  var pattern_6d = /^(\d\d)(\d\d)(\d\d)$/;
  var pattern_8d = /^(\d\d)(\d\d)(\d\d\d\d)$/;
  var datefield = t.value;
  
  // convert slashes and dots to dashes
  if (datefield != null) {
      datefield = (datefield.split("-")).join("/");
      datefield = (datefield.split(".")).join("/");
  } else {
     t.value = get_date("0");
     return true;
  }
  
  // now check for no separators
  result = datefield.match(pattern_8d);
  if (result != null) datefield = result[1] + '/' + result[2] + '/' + result[3];
  result = datefield.match(pattern_6d);
  if (result != null) datefield = result[1] + '/' + result[2] + '/' + result[3];
  result = datefield.match(pattern_3ds);
  if (result != null) datefield = '0' + result[1] + '/' + result[2] + '/' + get_year();;
  result = datefield.match(pattern_4ds);
  if (result != null) datefield = result[1] + '/' + result[2] + '/' + get_year();
  
  // Assume now its properly formatted with dashes. Split into 3 fields: mm dd yyyy
  var a = datefield.split("/");
  if ((a[0] == "") || (a[0] == null)) a[0] = get_chaser_month();
  result = a[0].match(pattern_1d); // one digit month test
  if (result != null) a[0] = "0" + a[0]; // matched one digit month
  result = a[0].match(pattern_2d); // 2 digit month test
  if (result == null) a[0] = get_chaser_month(); // not 2 digit month, use today
  if ((a[0] > 12) || (a[0] < 1)) a[0] = get_chaser_month();
  
  if ((a[1] == "") || (a[1] == null)) a[1] = get_chaser_day();
  result = a[1].match(pattern_1d); // 1 digit day test
  if (result != null) a[1] = "0" + a[1]; // matched 1 digit day
  result = a[1].match(pattern_2d); // 2 digit day test
  if (result == null) a[1] = get_chaser_day(); // not 2 digit day, use today
  if (a[1] < 1) a[1] = get_chaser_day();
  
  if ((a[2] == "") || (a[2] == null)) a[2] = get_year();
  result = a[2].match(pattern_2d); // 2 digit year test
  if (result == null) {
      result = a[2].match(pattern_4d); // 4 digit year test
      if (result == null) { 
          // not 2 or 4 digit year, use this year
          a[2] = get_year();
      }
  } else {
      // 2 digit year, convert to 4 digit year
      a[3] = get_year();
      a[3] = a[3].substr(0,2); // get century
      a[2] = a[3] + a[2]; // convert to 4 digits
  }

  var lastdayofmonth = get_last_day(a[0],a[2]);
  if (a[1] > lastdayofmonth) a[1] = lastdayofmonth;
  
  t.value = a[0] + "/" + a[1] + "/" + a[2];
  return true;
}

function opt_smartdate (t) {
  // assist user in entering a valid date (mm-dd-yyyy)
  // but a blank is allowed. This is the optional part!
  // It converts 4 digit years to 2 digit years. It looks for
  // leap year correctness and defaults to today's date.
  var result;
  var pattern_1d = /^\d$/;
  var pattern_2d = /^\d\d$/;
  var pattern_3ds = /^(\d)(\d\d)$/; // assume m-dd
  var pattern_4d = /^\d\d\d\d$/;
  var pattern_4ds = /^(\d\d)(\d\d)$/; // assume mm-dd
  var pattern_6d = /^(\d\d)(\d\d)(\d\d)$/;
  var pattern_8d = /^(\d\d)(\d\d)(\d\d\d\d)$/;
  var pattern_garbage = /^([a-zA-Z]+)$/;
  var datefield = t.value;

  // convert slashes and dots to dashes
  if (datefield != "") {
      datefield = (datefield.split("-")).join("/");
      datefield = (datefield.split(".")).join("/");
  } else {
     t.value = '';
     return true;
  }

  result = datefield.match(pattern_garbage);
  if (result != null) {
      t.value = '';
      return true;
  }
  
  result = datefield.match(pattern_8d);
  if (result != null) datefield = result[1] + '/' + result[2] + '/' + result[3];
  result = datefield.match(pattern_6d);
  if (result != null) datefield = result[1] + '/' + result[2] + '/' + result[3];
  result = datefield.match(pattern_3ds);
  if (result != null) datefield = '0' + result[1] + '/' + result[2] + '/' + get_year();;
  result = datefield.match(pattern_4ds);
  if (result != null) datefield = result[1] + '/' + result[2] + '/' + get_year();

  // Assume now its properly formatted with dashes. Split into 3 fields: mm dd yyyy
  var a = datefield.split("/");
  if ((a[0] == "") || (a[0] == null)) a[0] = get_chaser_month();
  result = a[0].match(pattern_1d); // one digit month test
  if (result != null) a[0] = "0" + a[0]; // matched one digit month
  result = a[0].match(pattern_2d); // 2 digit month test
  if (result == null) a[0] = get_chaser_month(); // not 2 digit month, use today
  if ((a[0] > 12) || (a[0] < 1)) a[0] = get_chaser_month();
  
  if ((a[1] == "") || (a[1] == null)) a[1] = get_chaser_day();
  result = a[1].match(pattern_1d); // 1 digit day test
  if (result != null) a[1] = "0" + a[1]; // matched 1 digit day
  result = a[1].match(pattern_2d); // 2 digit day test
  if (result == null) a[1] = get_chaser_day(); // not 2 digit day, use today
  if (a[1] < 1) a[1] = get_chaser_day();
  
  if ((a[2] == "") || (a[2] == null)) a[2] = get_year();
  result = a[2].match(pattern_2d); // 2 digit year test
  if (result == null) {
      result = a[2].match(pattern_4d); // 4 digit year test
      if (result == null) { 
          // not 2 or 4 digit year, use this year
          a[2] = get_year();
      }
  } else {
      // 2 digit year, convert to 4 digit year
      a[3] = get_year();
      a[3] = a[3].substr(0,2); // get century
      a[2] = a[3] + a[2]; // convert to 4 digits
  }

  var lastdayofmonth = get_last_day(a[0],a[2]);
  if (a[1] > lastdayofmonth) a[1] = lastdayofmonth;
  
  t.value = a[0] + "/" + a[1] + "/" + a[2];
  return true;
}

function get_chaser_mmccyy(days) {
   // return date string mm-ccyy with number of "days" into future from today
   // if days = 1 then return tommorrows date
   
   var d = new Date();
   if (days != "") {
      var milli = d.getTime();
      days = days * 24 * 60 * 60 * 1000 + milli; // milliseconds
      d.setTime(days);
   }
   var mon = d.getMonth() + 1;
   var year = d.getFullYear();
   year = year.toString();
   if (mon < 10) mon ="0" + mon;
   return mon + "-" + year;
}

function get_date(days) {
   // return date string dd-mm-yyyy with number of "days" into future from today
   // if days = 1 then return tommorrows date
   
   var d = new Date();
   if (days != "") {
      var milli = d.getTime();
      days = days * 24 * 60 * 60 * 1000 + milli; // milliseconds
      d.setTime(days);
   }
   var day = d.getDate();
   var mon = d.getMonth() + 1;
   var year = d.getFullYear();
   year = year.toString();
   if (day < 10) day = "0" + day;
   if (mon < 10) mon ="0" + mon;
   return mon + "-" + day + "-" + year;
   // return days;
}

function get_chaser_date(days) {
   // return date string dd-mm-yy with number of "days" into future from today
   // if days = 1 then return tommorrows date
   
   var d = new Date();
   if (days != "") {
      var milli = d.getTime();
      days = days * 24 * 60 * 60 * 1000 + milli; // milliseconds
      d.setTime(days);
   }
   var day = d.getDate();
   var mon = d.getMonth() + 1;
   var year = d.getFullYear();
   year = year.toString();
   year = year.substr(2,2);
   if (day < 10) day = "0" + day;
   if (mon < 10) mon ="0" + mon;
   return mon + "-" + day + "-" + year;
   // return days;
}

function get_chaser_month() {
   // return string of 2 digit current month
   
   var d = new Date();
   var mon = d.getMonth() + 1;
   if (mon < 10) mon ="0" + mon;
   return mon.toString();
}

function get_chaser_day() {
   // return string of 2 digit current month
   
   var d = new Date();
   var day = d.getDate();
   if (day < 10) day = "0" + day;
   return day.toString();
}

function get_chaser_year() {
   // return string of 2 digit current year
   
   var d = new Date();
   var year = d.getFullYear();
   year = year.toString();
   year = year.substr(2,2);
   return year.toString();
}

function get_year() {
   // return string of 2 digit current year
   
   var d = new Date();
   var year = d.getFullYear();
   // year = year.toString();
   return year.toString();
}

function get_chaser_fullyear() {
   // return string of 4 digit current year
   
   var d = new Date();
   var year = d.getFullYear();
   year = year.toString();
   return year.toString();
}

function get_last_day(month, year) {
   // return last day of the month
   
   var daylist = [31,28,31,30,31,30,31,31,30,31,30,31];
   if (year == 0) { 
      daylist[1] = 29; // century leap year
   } else {
      var leap = year / 4;
      var leap2 = Math.floor(leap);
      if (leap == leap2) daylist[1] = 29;  // regular leap year
   }
   month = month - 1;
   var lastday = daylist[month];
   return lastday.toString();
}

function trim_decimal_places(num) {
  /**********************************
   * Ensure always 2 decimal places *
   **********************************/
   num = num + '00';
   var nums = num.substring(0,2);
   return nums.toString();
}

function smartMMCCYY (t) {
  // assist user in entering a valid date (mm-yyyy)
  // This is a required field.
  // It converts 2 digit years to 4 digit years.
  var result;
  var pattern_1d = /^\d$/;
  var pattern_2d = /^\d\d$/;
  var pattern_4d = /^\d\d\d\d$/;
  var pattern_6d = /^(\d\d)(\d\d)(\d\d)$/;
  var pattern_close = /^(\d\d)(\d\d\d\d)$/;
  var pattern_close2 = /^(\d\d)(\d\d)$/;
  var pattern_close3 = /^(\d)(\d\d)$/;
  var datefield = t.value;
  result = datefield.match(pattern_close);
  if (result != null) datefield = result[1] + '-' + result[2];
  result = datefield.match(pattern_close3);
  if (result != null) datefield = "0" + result[1] + '-' + result[2];
  result = datefield.match(pattern_close2);
  if (result != null) datefield = result[1] + '-' + result[2];
  var a = datefield.split("-");
  if (datefield == '') {
     t.value = get_chaser_mmccyy("0");
     return true;
  }
  if ((a[0] == "") || (a[0] == null)) a[0] = get_chaser_month();
  result = a[0].match(pattern_1d); // one digit month test
  if (result != null) a[0] = "0" + a[0]; // matched one digit month
  result = a[0].match(pattern_2d); // 2 digit month test
  if (result == null) a[0] = get_chaser_month(); // not 2 digit month, use today
  if ((a[0] > 12) || (a[0] < 1)) a[0] = get_chaser_month();
  
  if ((a[1] == "") || (a[1] == null)) a[1] = get_chaser_fullyear();
  result = a[1].match(pattern_2d); // 2 digit year test
  if (result != null) a[1] = "20" + a[1]; // matched 2 digit year, use all 4
  result = a[1].match(pattern_4d); // 4 digit year test
  if (result == null) a[1] = get_chaser_fullyear(); // no match, use this year

  t.value = a[0] + "-" + a[1];
  return true;
}

function opt_smartMMCCYY (t) {
  // assist user in entering a valid date (mm-yyyy)
  // This is a required field.
  // It converts 2 digit years to 4 digit years.
  var result;
  var pattern_1d = /^\d$/;
  var pattern_2d = /^\d\d$/;
  var pattern_4d = /^\d\d\d\d$/;
  var pattern_6d = /^(\d\d)(\d\d)(\d\d)$/;
  var pattern_close = /^(\d\d)(\d\d\d\d)$/;
  var pattern_close2 = /^(\d\d)(\d\d)$/;
  var pattern_close3 = /^(\d)(\d\d)$/;
  var pattern_garbage = /^([a-zA-Z]+)$/;
  var datefield = t.value;
  
  result = datefield.match(pattern_garbage);
  if (result != null) {
      t.value = '';
      return true;
  }
  result = datefield.match(pattern_close);
  if (result != null) datefield = result[1] + '-' + result[2];
  result = datefield.match(pattern_close3);
  if (result != null) datefield = "0" + result[1] + '-' + result[2];
  result = datefield.match(pattern_close2);
  if (result != null) datefield = result[1] + '-' + result[2];
  var a = datefield.split("-");
  if (datefield == '') {
     t.value = '';
     return true;
  }
  if ((a[0] == "") || (a[0] == null)) a[0] = get_chaser_month();
  result = a[0].match(pattern_1d); // one digit month test
  if (result != null) a[0] = "0" + a[0]; // matched one digit month
  result = a[0].match(pattern_2d); // 2 digit month test
  if (result == null) a[0] = get_chaser_month(); // not 2 digit month, use today
  if ((a[0] > 12) || (a[0] < 1)) a[0] = get_chaser_month();
  
  if ((a[1] == "") || (a[1] == null)) a[1] = get_chaser_fullyear();
  result = a[1].match(pattern_2d); // 2 digit year test
  if (result != null) a[1] = "20" + a[1]; // matched 2 digit year, use all 4
  result = a[1].match(pattern_4d); // 4 digit year test
  if (result == null) a[1] = get_chaser_fullyear(); // no match, use this year

  t.value = a[0] + "-" + a[1];
  return true;
}

function smartmoney (t) {
 /*********************************************
  * assist user in entering a + dollar amount *
  * This is a required field.                 *
  * It chops off more than 2 decimal places.  *
  * If garbage then return 0.00               *
  *********************************************/
  var result;
  var pattern_close  = /(\d+)\.(\d+)/;
  var pattern_close2 = /(\d+)/;
  var datefield = t.value;
  
  result = datefield.match(pattern_close);
  if (result != null) {
     /**************************************************
      * Found a number with decimal places, so trim it *
      * down to 2 decimal places.                      *
      *************************************************/
      t.value = result[1] + "." + trim_decimal_places(result[2]);
      return true;
  }
  
  result = datefield.match(pattern_close2);
  if (result != null) {
     /******************************************
      * Append decimal place since its missing.*
      ******************************************/
      t.value = result[1] + "." + "00";
      return true;
  }

  t.value = '0.00';
  return true;
}

function opt_smartmoney (t) {
 /*********************************************
  * assist user in entering a + dollar amount *
  * It chops off more than 2 decimal places.  *
  * If garbage then return null (blank field) *
  *********************************************/
  var result;
  var pattern_close  = /(\d+)\.(\d+)/;
  var pattern_close2 = /(\d+)/;
  var datefield = t.value;
  
  result = datefield.match(pattern_close);
  if (result != null) {
     /**************************************************
      * Found a number with decimal places, so trim it *
      * down to 2 decimal places.                      *
      *************************************************/
      t.value = result[1] + '.' + trim_decimal_places(result[2]);
      return true;
  }
  
  result = datefield.match(pattern_close2);
  if (result != null) {
     /******************************************
      * Append decimal place since its missing.*
      ******************************************/
      t.value = result[1] + '.00';
      return true;
  }

  t.value = '';
  return true;
}

function opt_smartmoney_manual (t) {
 /*********************************************
  * assist user in entering a + dollar amount *
  * It chops off more than 2 decimal places.  *
  * If garbage then return null (blank field) *
  * But only for c3t_manual.php               *
  *********************************************/
  var result;
  var pattern_close  = /(\d+)\.(\d+)/;
  var pattern_close2 = /(\d+)/;
  var datefield = t.value;
  
  result = datefield.match(pattern_close);
  if (result != null) {
     /**************************************************
      * Found a number with decimal places, so trim it *
      * down to 2 decimal places.                      *
      *************************************************/
      t.value = result[1] + '.' + trim_decimal_places(result[2]);
      return true;
  }
  
  result = datefield.match(pattern_close2);
  if (result != null) {
     /******************************************
      * Append decimal place since its missing.*
      ******************************************/
      t.value = result[1] + '.00';
      return true;
  }

  t.value = '';
  return true;
}


function convert_enter (field, event) {
/****************************************************************************
 * cause enter key to act like tab key and avoid it causing form submission *
 * usage: onkeypress="convert_enter(this,event);"                           *
 ****************************************************************************/
  var keycode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
  
  if (keycode == 13) {
     /**********************************
      * set i to field number in form, *
      * then set focus to next one.    *
      **********************************/
      var i;
      for (i = 0; i < field.form.elements.length; i++) if (field == field.form.elements[i]) break;
      i = (i + 1) % field.form.elements.length;  // wraparound to first
      field.form.elements[i].focus();
      return false;
  } else return true;
}

function disable_enter_key() {
/****************************************************
 * cause enter key to not be recognized as an entry *
 * usage: onkeypress="disable_enter_key();"         *
 ****************************************************/
   if (window.event.srcElement.type != "submit") {
      if (window.event.keyCode == 13) window.event.keyCode = 0; 
   }
} 

function move_along (field) {
/************************************************
 * automatically shift focus to next tab field  *
 * and allow for skipping up to 4 hidden fields *
 * usage: onclick="move_along(this);"           *
 ************************************************/
   var i;
   for (i = 0; i < field.form.elements.length; i++) {
     if (field == field.form.elements[i]) break;
   }
   i = (i + 1) % field.form.elements.length;  // wraparound to first
   if (field.form.elements[i].type == "hidden") {
       i = (i + 1) % field.form.elements.length;  // skip this hidden field
   }
   if (field.form.elements[i].type == "hidden") {
       i = (i + 1) % field.form.elements.length;  // skip this hidden field
   }
   if (field.form.elements[i].type == "hidden") {
       i = (i + 1) % field.form.elements.length;  // skip this hidden field
   }
   if (field.form.elements[i].type == "hidden") {
       i = (i + 1) % field.form.elements.length;  // skip this hidden field
   }
   field.form.elements[i].focus();
   return;
}

function smartinteger (t) {
 /****************************************
  * assist user in entering a + integer  *
  ****************************************/
  var result;
  var pattern_close = /(\d+)/;
  var datefield = t.value;
  
  result = datefield.match(pattern_close);
  if (result != null) {
     /***************************
      * Return positive integer *
      ***************************/
      t.value = result[1];
      return true;
  }
  
  t.value = '0';
  return true;
}

function opt_smartinteger (t) {
 /****************************************
  * assist user in entering a + integer  *
  * If garbage return null (blank field) *
  ****************************************/
  var result;
  var pattern_close = /(\d+)/;
  var datefield = t.value;
  
  result = datefield.match(pattern_close);
  if (result != null) {
     /***************************
      * Return positive integer *
      ***************************/
      t.value = result[1];
      return true;
  }
  
  t.value = '';
  return true;
}

function smartsigned (t) {
 /**************************************************
  * assist user in entering a + or - dollar amount *
  * This is a required field.                      *
  * It chops off more than 2 decimal places.       *
  * If garbage then it returns 0.00                *
  **************************************************/
  var result;
  var pattern_close  = /(\d+)\.(\d+)/;
  var pattern_close2 = /(\d+)/;
  var pattern_close3 = /(-\d+)\.(\d+)/;
  var pattern_close4 = /(-\d+)/;
  var datefield = t.value;
  
  result = datefield.match(pattern_close3);
  if (result != null) {
     /*************************************************
      * Found negative number with decimal places, so *
      * trim down to 2 digit decimal place.           *
      *************************************************/
      t.value = result[1] + "." + trim_decimal_places(result[2]);
      return true;
  }
  
  result = datefield.match(pattern_close4);
  if (result != null) {
     /******************************************
      * Found negative number with no decimals.*
      * Append decimal place since its missing.*
      ******************************************/
      t.value = result[1] + "." + "00";
      return true;
  }
  result = datefield.match(pattern_close);
  if (result != null) {
     /*************************************************
      * Found positive number with decimal places, so *
      * trim down to 2 digits in decimal places.      *
      *************************************************/
      t.value = result[1] + '.' + trim_decimal_places(result[2]);
      return true;
  }
  
  result = datefield.match(pattern_close2);
  if (result != null) {
     /*******************************************
      * Found a positive number with no decimal.*
      * Append decimal place since its missing. *
      *******************************************/
      t.value = result[1] + '.00';
      return true;
  }

  t.value = '0.00';
  return true;
}

function opt_smartsigned (t) {
  // assist user in entering a + or - dollar amount
  // This is a required field.
  // It chops off more than 2 decimal places.
  var result;
  var pattern_close  = /(\d+)\.(\d+)/;
  var pattern_close2 = /(\d+)/;
  var pattern_close3 = /(-\d+)\.(\d+)/;
  var pattern_close4 = /(-\d+)/;
  var datefield = t.value;
  
  result = datefield.match(pattern_close3);
  if (result != null) {
     /*************************************************
      * Found negative number with decimal places, so *
      * trim down to 2 digit decimal place.           *
      *************************************************/
      t.value = result[1] + '.' + trim_decimal_places(result[2]);
      return true;
  }
  
  result = datefield.match(pattern_close4);
  if (result != null) {
     /******************************************
      * Found negative number with no decimals.*
      * Append decimal place since its missing.*
      ******************************************/
      t.value = result[1] + '.00';
      return true;
  }
  result = datefield.match(pattern_close);
  if (result != null) {
     /*************************************************
      * Found positive number with decimal places, so *
      * trim down to 2 digits in decimal places.      *
      *************************************************/
      t.value = result[1] + '.' + trim_decimal_places(result[2]);
      return true;
  }
  
  result = datefield.match(pattern_close2);
  if (result != null) {
     /*******************************************
      * Found a positive number with no decimal.*
      * Append decimal place since its missing. *
      *******************************************/
      t.value = result[1] + '.00';
      return true;
  }

  t.value = '';
  return true;
}

function are_you_sure(message) {
    return window.confirm(message);
}

function smart_ss (t) {
  // assist user in entering a valid social sec number (111-22-3333)
  // This is a optional field.
  var result;
  var pattern_8d = /^(\d\d\d)(\d\d)(\d\d\d\d)$/;
  var pattern_8dd = /^(\d\d\d)-(\d\d)-(\d\d\d\d)$/;
  var ssfield = t.value;
  
  result = ssfield.match(pattern_8d);
  if (result != null) {
     /*************************************************
      * user entered ss num withour dashes, put em in *
      *************************************************/
      t.value = result[1] + '-' + result[2] + '-' + result[3];
      return true;
  }
  result = ssfield.match(pattern_8dd);
  if (result != null) {
     /********************************************
      * user entered complete and correct ss num *
      ********************************************/
      return true;
  }
  t.value = '';
  return true;
}


function strip_nonalpha(text) {
/**************************************
 * formats string for only alpha characters or comma *
 **************************************/
	var newtext = '';
	for(i=0; i<text.length; i++) {
		letter = text.charAt(i);
		if (!letter.match(/\s/)) {
			if (letter.match(/\w/)) {
				if (!letter.match(/\d/))
					newtext = newtext + letter;
			}	
		}
		if (letter == ',')
			newtext = newtext + letter;
	}
	return newtext.toUpperCase();
}

function no_future(entered, cutoff) {
/************************************************
 * Makes sure date entered is not in the future *
 * The reason the cuttoffdate is passed in is   *
 * be sure the server date is used.             *
 ************************************************/
        if (entered.value == '') { return true; }
        smartdate(entered); // clean date
        var tempdate, cutoffdate;
        tempdate = entered.value;
        var userdate = new Date(tempdate);
        if (isNaN(cutoff) == false) {
            // Server supplied cutoff date
            cutoffdate = new Date(cutoff);
        } else {
            // Browser supplied cutoff date
            cutoffdate = new Date();
        }
//        tempdate = cutoffdate.toString();
                                                                                                                  
        if (userdate > cutoffdate) {                                                                              
            var monthnumber = cutoffdate.getMonth() + 1;
            var day         = cutoffdate.getDate();
            var year        = cutoffdate.getYear();

            if (year < 2000) { 
                year = year + 1900;
            }
            entered.value = monthnumber + "-" + day + "-" + year;
        }       
        smartdate(entered); // clean date
        return true;
}

function checkAll(formptr) {
/***************************************
 * ensure all fields not empty in form *
 ***************************************/
  var i;
  
  for (i = 4; i < form1.elements.length; i++) {
      if (form1.elements[i].value == null) {
         /*********************
          * found empty field *
          *********************/
          window.alert('All fields are required to confirm and continue');
          return false;
      }
      if (form1.elements[i].value == "") {
         /*********************
          * found empty field *
          *********************/
          window.alert('All fields are required to confirm and continue');
          return false;
      }
  }
  return true;
}

function PopUpCalculator() {
  window.open('/c3scan/calculator.php','','height=400,width=200');
}

function PopUpSpecialCalculator(formname, field) {
 /***********************************************
  * Create a popup calculator that will update  *
  * the field that preceded it in parent window *
  ***********************************************/
  var url = '/c3scan/calculator.php?f=' + formname + '&i=' + field;
  var child = window.open(url,'','height=450,width=200');
}

function select_all_checkboxes(myobj) {
 var i;
 for (i = 0; i < myobj.form.elements.length; i++) {
     if (myobj.form.elements[i].type == "checkbox") {
         if (myobj.form.elements[i].checked) {
             myobj.form.elements[i].checked = false;
         } else {
             myobj.form.elements[i].checked = true;
         }
     }                 
 }
}

var temp, temp2, cookieArray, cookieArray2, cookieCount;
                                                                                                               
function initiate_hide(){
// given an expandable <ul> allow it to open and close
  cookieCount=0;
  if(document.cookie){
                                                                                                               
    cookieArray=document.cookie.split(";");
    cookieArray2=new Array();
    for(var i = 0; i < cookieArray.length; i++){
      cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")] = cookieArray[i].split("=")[1].replace(/ /g,"");
    }
  }
                                                                                                               
  cookieArray = (document.cookie.indexOf("state=") >= 0) ? cookieArray2["state"].split(",") : new Array();
                                                                                                               
  temp=document.getElementById("containerul");
  for(var o=0;o<temp.getElementsByTagName("li").length;o++){
    if(temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0){
      temp2                             = document.createElement("span");
      temp2.className                   = "symbols";
      temp2.style.backgroundImage       = (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?"url(./images/minus.png)":"url(./images/plus.png)"):"url(./images/plus.png)";
      temp2.onclick=function(){
        showhide(this.parentNode);
        writeCookie();
      }
                                                                                                               
      temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild)
      temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
      if(cookieArray[cookieCount]=="true"){
        showhide(temp.getElementsByTagName("li")[o]);
      }
      cookieCount++;
    } else{
      temp2                             = document.createElement("span");
      temp2.className                   = "symbols";
      temp2.style.backgroundImage       = "url(./images/page.png)";
      temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild);
    }
  }
}

function showhide(el){
                                                                                                               
  el.getElementsByTagName("ul")[0].style.display=(el.getElementsByTagName("ul")[0].style.display=="block")?"none":"block";
                                                                                                               
  el.getElementsByTagName("span")[0].style.backgroundImage=(el.getElementsByTagName("ul")[0].style.display=="block")?"url(./images/minus.png)":"url(./images/plus.png)";
                                                                                                               
}
                                                                                                               
function writeCookie(){         // Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together and assigned to a cookie.
                                                                                                               
  cookieArray=new Array()
                                                                                                               
  for(var q=0;q<temp.getElementsByTagName("li").length;q++){
                                                                                                               
    if(temp.getElementsByTagName("li")[q].childNodes.length>0){
      if(temp.getElementsByTagName("li")[q].childNodes[0].nodeName=="SPAN" && temp.getElementsByTagName("li")[q].getElementsByTagName("ul").length>0){
                                                                                                               
        cookieArray[cookieArray.length]=(temp.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display=="block");
                                                                                                               
      }
    }
                                                                                                               
  }
                                                                                                               
  document.cookie="state="+cookieArray.join(",")+";expires="+new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
                                                                                                               
}

function toggle_checkbox(myobj){
	if(myobj.type == 'checkbox'){
		if(myobj.checked){
			myobj.checked = false;
		}else{
			myobj.checked = true;
		}
	}
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}


// called from update_form.php 
// Just two required fields

function validateUpdateForm(theform) {

  if (theform.firstName.value == "") {
      alert("First name is a required field");
      theform.firstName.focus();
      return false;
  }
  if (theform.lastName.value == "") {
      alert("Last name is a required field");
      theform.lastName.focus();
      return false;
  }

  return true;
	
}


function validateApplyJob(theform) {
  if (theform.cancel.value == "Cancel") { 
	return true;
  }
  if (theform.contactName.value == "") {
      alert("Contact name is a required field");
      theform.contactName.focus();
      return false;
  }
  if (theform.phone.value == "") {
      alert("Phone is a required field");
      theform.phone.focus();
      return false;
  }
  if (theform.email.value == "") {
      alert("Email is a required field");
      theform.email.focus();
      return false;
  }



  return true;

}


function validateEventForm(theform) {
  if (theform.eventDate.value == "") {
      alert("Event date is a required field");
      theform.eventDate.focus();
      return false;
  }
  if (theform.name.value == "") {
      alert("Event name is a required field");
      theform.name.focus();
      return false;
  }
  if (theform.city.value == "") {
      alert("City is a required field");
      theform.city.focus();
      return false;
  }
  if (theform.state.value == "u") {
      alert("State is a required field");
      return false;
  }
  if (theform.recaptcha_response_field.value == "") {
      alert("Spam Fighting Field is a required field");
      theform.recaptcha_response_field.focus();
      return false;
  }
}

// This form comes from the admin_job.php file

function validateJobsCCForm(theform) {
  if (theform.cc_firstname.value == "") {
      alert("First Name is a required field");
      return false;
  }
  if (theform.cc_lastname.value == "") {
      alert("Last Name is a required field");
      return false;
  }
  if (theform.cc_address.value == "") {
      alert("Address is a required field");
      return false;
  }
  if (theform.cc_city.value == "") {
      alert("City is a required field");
      return false;
  }
  if (theform.cc_state.value == "u") {
      alert("State is a required field");
      return false;
  }
  if (theform.cc_zip.value == "") {
      alert("Zip is a required field");
      return false;
  }
  if (theform.email.value == "") {
      alert("Email is a required field");
      return false;
  }
  if (theform.cc_cardname.value == "") {
      alert("Credit Card is a required field");
      return false;
  }
  if (theform.cc_cardnum.value == "") {
      // drop down
      alert("Card Number is a required field");
      return false;
  }
  if (theform.expiration.value == "") {
      // drop down
      alert("Price is a required field");
      return false;
  }
  if (theform.cc_cvv2.value == "") {
      alert("CVV2 is a required field");
      return false;
  }
}

function validateJobsForm(theform) {
  if (theform.jobTitle.value == "") {
      alert("Job Title is a required field");
      return false;
  }

  if (theform.company.value == "") {
      alert("Organization is a required field");
      return false;
  }
// check environment radio buttons

  notSelected= true;

  for (i = 0; i < theform.jobs_environment.length; i++) {
	if(theform.jobs_environment[i].checked == true) {
		notSelected = false;
	}
  }
  if(notSelected) {
	alert("You must select an Environment");
        return(false);
  }

  if (theform.city.value == "") {
      alert("City is a required field");
      return false;
  }

  if (theform.state.value == "u") {
      alert("State is a required field");
      return false;
  }

// check hours check boxes 

  notSelected= true;
  for (i = 0; i < theform.elements.length; i++) {
	if(theform.elements[i].name == 'jobs_hours[]') {
		if(theform.elements[i].checked == true) {
			notSelected = false;
		}
	}
  }
  if(notSelected) {
	alert("You must select at least one or more Hours types");
        return(false);
  }

// check job status check boxes 
  notSelected= true;
  for (i = 0; i < theform.jobs_status.length; i++) {
	if(theform.jobs_status[i].checked == true) {
		notSelected = false;
	}
  }
  if(notSelected) {
	alert("You must select a Hire Status");
        return(false);
  }


  notSelected= true;
  for (i = 0; i < theform.jobs_level.length; i++) {
	if(theform.jobs_level[i].checked == true) {
		notSelected = false;
	}
  }
  if(notSelected) {
	alert("You must select a Job Level");
        return(false);
  }



  notSelected = true;
  for (i = 0; i < theform.jobs_type.length; i++) {
	if(theform.jobs_type[i].checked == true) {
		notSelected = false;
	}
  }

  if(notSelected) {
	alert("You must select a Job Type");
        return(false);
  }

  notSelected = true;

  for (i = 0; i < theform.jobs_office.length; i++) {
	if(theform.jobs_office[i].checked == true) {
		notSelected = false;
	}
  }

  if(notSelected) {
	alert("You must select an Aim Office");
        return(false);
  }



  if (theform.description.value == "") {
      alert("Job Description is a required field");
      return false;
  }


  if (theform.url_email.value != "") {

      address= theform.url_email.value;
      error = false;
      
      if (!isURL(address) ) {
      	if (!isEMAIL(address) ) {
       		 error = true;
      	}
      }


      if (error) {
	alert("URL/EMAIL must be a valid EMAIL or URL address"); 
	return false;
      }
  }
}

function validateLibTechForm(theform) {

  if (theform.school.value == "") {
      alert("School is a required field");
      return false;
  }

  if (theform.website.value == "") {
      alert("Website is a required field");
      return false;
  }

  if (theform.state.value == "u") {
      alert("State is a required field");
      return false;
  }

  return true;
}


// This form comes from the app.php file

function validateAppForm(theform) {

  if (theform.lastName.value == "") {
      alert("Last Name is a required field");
      return false;
  }

  if (theform.firstName.value == "") {
      alert("First Name is a required field");
      return false;
  }

  if (theform.address.value == "") {
      alert("Address is a required field");
      return false;
  }
  if (theform.cityState.value == "") {
      alert("City and State is a required field");
      return false;
  }

  if (theform.zip.value == "") {
      alert("Zip Code is a required field");
      return false;
  }
  if (theform.telephone.value == "") {
      alert("Telephone is a required field");
      return false;
  }

// check hours check boxes 

  notSelected= true;
  for (i = 0; i < theform.elements.length; i++) {
	if(theform.elements[i].name == 'application_refer[]') {
		if(theform.elements[i].checked == true) {
			notSelected = false;
		}
	}
  }
  if(notSelected) {
	alert("You must select at least one or more referal types");
        return(false);
  }
  notSelected= true;
  for (i = 0; i < theform.elements.length; i++) {
	if(theform.elements[i].name == 'application_type[]') {
		if(theform.elements[i].checked == true) {
			notSelected = false;
		}
	}
  }
  if(notSelected) {
	alert("You must select at least one or more Job types");
        return(false);
  }

  notSelected= true;

  for (i = 0; i < theform.elements.length; i++) {
	if(theform.elements[i].name == 'application_commute[]') {
		if(theform.elements[i].checked == true) {
			notSelected = false;
		}
	}
  }
  if(notSelected) {
	alert("You must select at least one or more acceptable commute locations");
        return(false);
  }

  notSelected= true;

  for (i = 0; i < theform.application_relocate.length; i++) {
	if(theform.application_relocate[i].checked == true) {
		notSelected = false;
	}
  }
  if(notSelected) {
	alert("Please answer if you are willing to relocate");
        return(false);
  }


  if (theform.wage.value == "") {
      alert("Wage/Salary Requirement is a required field");
      return false;
  }

  notSelected= true;

  for (i = 0; i < theform.application_work_verification_yes_no.length; i++) {
	if(theform.application_work_verification_yes_no[i].checked == true) {
		notSelected = false;
	}
  }
  if(notSelected) {
	alert("Please answer if you can verify your right to work in U.S.");
        return(false);
  }
  notSelected= true;

  for (i = 0; i < theform.application_language_yes_no.length; i++) {
	if(theform.application_language_yes_no[i].checked == true) {
		notSelected = false;
	}
  }
  if(notSelected) {
	alert("Please select whether or not you speak understand a foreign language");
        return(false);
  }


  offense = -1;
  for (i = 0; i < theform.application_offense_yes_no.length; i++) {
	if(theform.application_offense_yes_no[i].checked == true) {
		offense = i;
		notSelected = false;
	}
  }
  if(notSelected) {
	alert("Please answer if you have been convicted of committing a criminal offense");
        return(false);
  }



  if(offense  == 0 ) {		// they choose yes.  Yes should always be 0 in the database
  	if (theform.offense_explain.value == "") {
      		alert("Please give a brief explaination of offense");
      		return false;
	}
  }
  if(theform.cert_authorize_investigation.checked != true || theform.cert_withheld_info.checked != true || theform.cert_non_binding.checked != true) { 
	alert("In order to process this form you must check all three legal affirmations at bottom of form");
        return(false);
  }



	
}




function isUserID(userid){
  var pattern = /^\w+$/;
  var result = userid.match(pattern);

  if (result == null ) { 
      return false; // no match
  } else {
      return true;
  }
}

function validateCreateAccount(theform) {

  if (theform.userid.value == "") {
      alert("Choosing a userid is required");
      theform.userid.focus();
      return false;
  }

  if (!isUserID(theform.userid.value)) {
      alert("Userid must be only letters and numbers");
      theform.userid.focus();
      return false;
  }

  if (theform.password.value == "") {
      alert("Password is a required field");
      theform.password.focus();
      return false;
  }
  if (theform.password2.value == "") {
      alert("Password2 is a required field");
      theform.password2.focus();
      return false;
  }
  if (theform.name.value == "") {
      alert("Name is a required field");
      theform.name.focus();
      return false;
  }
  if (theform.email.value == "") {
      alert("Email is a required field");
      theform.email.focus();
      return false;
  }
  if (theform.company.value == "") {
      alert("Company is a required field");
      theform.email.focus();
      return false;
  }
  if (theform.phone.value == "") {
      alert("Phone is a required field");
      theform.phone.focus();
      return false;
  }
  if (theform.password.value != theform.password2.value) {
      alert("Passwords do not match");
      theform.password.focus();
      return false;
  }
  if (!isEMAIL(theform.email.value)) {
      alert("A valid email address is required");
      theform.email.focus();
      return false;
  }
}

function validateMlisTechForm(theform) {

  if (theform.school.value == "") {
      alert("School is a required field");
      return false;
  }

  if (theform.schoolUrl.value == "") {
      alert("School's website is a required field");
      return false;
  }

  if (theform.state.value == "u") {
      alert("State is a required field");
      return false;
  }

  return true;

}

function validateProfAffiliation(theform) {


  if (theform.affiliation.value == "") {
      alert("Affiliation is a required field");
      return false;
  }

  if (theform.url.value == "") {
      alert("Url is a required field");
      return false;
  }

 return true;

}



// Simple check to see if it is an URL

function isURL(urlStr){


  //var url = /(\w+):\/\/([\w.]+)\/*(\S*)/;

  var url =   /\w{3}\.\w+\.\w{3}\/*(\S*)/;

  var result = urlStr.match(url);

  if(result == null ) { 
      return false; // no match
  } else {
      return true;
  }

}

// Simple check to see if it is an email 

function isEMAIL(urlStr){

//alert("isEMAIL" + urlStr);	
	var url = /(\w+)@(\w+)/;
	var result = urlStr.match(url);
	if(result == null ) {
		return false;
	}
	return true;

}

// For onchange.  Modifies a URL to contain 
// httpd if necessary.

function correctUrl(str){


        var tmp = str.value;
	if(str.value == "" ) { 
		return;
	}

	if(isEMAIL(str.value)) {
     		str.value = tmp;
		return;
	}

     	var result = str.value.match('http');
	if(result == null) {
     		str.value = 'http://' + str.value;
	}
}


function smart_cc_numbers (t) {
 /**************************************
  * assist user in entering a 16 digit *
  * credit card number, spaces and -   *
  * are stripped as a courtesy.        *
  **************************************/
  var result;
  var pattern     = /^(\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d)$/;
  var testpattern = /^(4007000000027)$/;
  var numfield    = t.value;

  if (numfield != null) {
      numfield = (numfield.split("-")).join(" ");
      numfield = (numfield.split(" ")).join("");
  }

  result = numfield.match(testpattern);
  if (result != null) {
     /***************************
      * Return positive integer *
      ***************************/
      t.value = result[1];
      return true;
  }
  result = numfield.match(pattern);
  if (result != null) {
     /***************************
      * Return positive integer *
      ***************************/
      t.value = result[1];
      return true;
  }

  t.value = '';
  return true;
}

function testArticleCategory(field) {
// unhide newcategory field if new in dropdown
  var code;

  if (field.type == "radio") {
    code = field.value;
    if (code == "n") {
        $('newcategory').className="divShown";
        //document.forms['idform'].otitle.focus();
        $('newcategory').focus();
    } else {
        $('newcategory').className="divHidden";
    }
  }
  if (field.type == "select-one") {
    code = field.value;
    if (code == "n") {
        $('newcategory').className="divShown";
        $('newcategory').focus();
        //document.forms['idform'].otitle.focus();
    } else {
        $('newcategory').className="divHidden";
    }
  }
}

function freeJobToggle(myobj) {
// ajax call to update checkbox table record 
  if (myobj.type == 'checkbox'){
      if(myobj.checked){
          var opt = {
              method: 'post',
              //parameters: '',
              postBody: 'v=Y',
              onSuccess: function(t) {
                  if (t.responseText != "ON") {
                    //something went wrong, uncheck box
                    myobj.checked = false;
                  }
              },
              on404: function(t) {
                  alert('Error 404: ajax_set_freejobs.php "' + t.statusText + '".');
              },
              onFailure: function(t) {
                  alert('Error ' + t.status + ' -- ' + t.statusText);
              }
          }
          new Ajax.Request('ajax_set_freejobs.php', opt);
      } else {
          var opt = {
              method: 'post',
              //parameters: '',
              postBody: 'v=N',
              onSuccess: function(t) {
                  if (t.responseText != "OFF") {
                    //something went wrong, recheck box
                    myobj.checked = true;
                  }
              },
              on404: function(t) {
                  alert('Error 404: ajax_set_freejobs.php "' + t.statusText + '".');
              },
              onFailure: function(t) {
                  alert('Error ' + t.status + ' -- ' + t.statusText);
              }
          }
          new Ajax.Request('ajax_set_freejobs.php', opt);
      }
  }
}

