/////
//
//	ftsjavascript.js - JavaScript Utilities
//
//      Developed by: First Time Software
//
//      Thu Jan 18 12:13:59 EST 2001 - F Harvell
//
/////
//
//	Website application technologies developed by:
//
//	First Time Software
//	7457 Aloma Ave, Suite 302
//	Winter Park, FL  32792
//
//	+1.407.673.2529 (Voice)
//	+1.407.673.4472 (Fax)
//
//	http://www.firsttimesoftware.com
//	mailto:info@firsttimesoftware.com
//
/////
//
//	Copyright &copy; First Time Software 2001 - 2002
//
//	All rights reserved worldwide by First Time Software.
//	Usage rights have been granted to the website owner according to the
//	terms and conditions of the First Time Software License Agreement.
//
/////
//
// Version 1.11, $Id: ftsjavascript.js,v 1.59 2002/10/08 18:34:42 fharvell Exp $
//
/////


// global variables
var fts_oldClass;
var fts_ham = true; // *** FIXME! ***
var fts_tags = new Array();

// change an element's class on mouse over and back on mouse out
function
light(
  that,
  newClass
) {
  if (fts_oldClass == null) {
    fts_oldClass = that.className;
    that.className = newClass ? newClass : 'light';
  } else {
    that.className = fts_oldClass;
    fts_oldClass = void 0;
  }
}

// convert a date to ISO format
function
ISODate(
  obj
) {
  s = obj.value.replace(/^\s+/g, '').replace(/\s+$/g, ''); obj.value = s;
  s = Date.parse(s) || s.replace(/(\w+).(\w+).(\w+)/, "$1/$2/$3");

  if (s) {
    d = new Date(s);
    d.getYear() < 38 && d.setYear(d.getYear() + (obj.value.match(/19\d\d/) == null ? 2000 : 0));
    if (d.getTime()) {
      obj.value = (d.getYear() < 2000 ? d.getYear() + 1900 : d.getYear()) + '-' + (d.getMonth() < 9 ? '0' : '') + (d.getMonth() + 1) + '-' + (d.getDate() <= 9 ? '0' : '') + d.getDate();
    } else {
      alert("An invalid date has been entered.\nPlease re-enter the date.");
      obj.focus();
    }
  }
}

// toggle a popup window
function
togglePopup(
  object,
  content,
  event,
  x,
  y
) {
  if (event) {
    x += event.pageX ? event.pageX : event.clientX + document.body.scrollLeft; (x < 0) && (x = 0);
    y += event.pageY ? event.pageY : event.clientY + document.body.scrollTop; (y < 0) && (y = 0);
  }
  if (document.getElementById && document.getElementById(object)) {
    if (document.getElementById(object).style.visibility == 'visible') {
      document.getElementById(object).style.visibility = 'hidden';
      document.getElementById(object).style.zIndex = -1;

      if (document.getElementById(content)) {
	document.getElementById(content).style.zIndex = 1;
	document.getElementById(content).style.visibility = 'visible';
      }
    } else {
      if (document.getElementById(content)) {
	document.getElementById(content).style.visibility = 'hidden';
	document.getElementById(content).style.zIndex = -1;
      }

      document.getElementById(object).style.left = x;
      document.getElementById(object).style.top = y;
      document.getElementById(object).style.zIndex = 1;
      document.getElementById(object).style.visibility = 'visible';
    }
  } else if (document.layers && document.layers[object]) { // non-standard NS 4
    if (document.layers[object].visibility == 'show') {
      document.layers[object].visibility = 'hidden';
      document.layers[object].zIndex = -1;

      if (document.layers[content]) {
	document.layers[content].zIndex = 1;
	document.layers[content].visibility = 'visible';
      }
    } else {
      if (document.layers[content]) {
	document.layers[content].visibility = 'hidden';
	document.layers[content].zIndex = -1;
      }

      document.layers[object].left = x;
      document.layers[object].top = y;
      document.layers[object].zIndex = 1;
      document.layers[object].visibility = 'visible';
    }
  } else if (document.all && document.all[object]) { // broken IE 4
    if (document.all[object].style.visibility == 'visible') {
      document.all[object].style.visibility = 'hidden';
//      document.all[object].style.zIndex = -1;
    } else {
      document.all[object].style.posLeft = x;
      document.all[object].style.posTop = y;
//      document.all[object].style.zIndex = 1;
      document.all[object].style.visibility = 'visible';
    }
  }
}

// set browser default home page to current page
function
setCurrentPageDefault(
  thisPage,
  homeURL
) {
  if (document.all) {
    thisPage.style.behavior='url(#default#homepage)';
    thisPage.setHomePage(homeURL ? homeURL : top.location.href);
  } else {
    netscape.security.PrivilegeManager.enablePrivilege('UniversalPreferencesWrite');
    navigator.preference('browser.startup.homepage', (homeURL ? homeURL : top.location.href));
  }
}

// clear each text input in an input's form
function
clearText(
  that
) {
  f = that.form;
  l = f.length;

  for (i = 0; i < l; i++) { if (f[i].type == 'text') { f[i].value = ''; } }
}

// set each text input in an input's form to the next number in a sequence
function
sequenceText(
  that,
  s
) {
  f = that.form;
  l = f.length;
  s = s ? s : 1;

  for (i = 0; i < l; i++) { if (f[i].type == 'text') { f[i].value = s++; } }
}

// open a tool window (clean, subordinate window)
function
openToolWin(
  pageURL,
  name,
  width,
  height,
  bar
) {
  toolWin = new Object()                                                                                ;
  toolWin.focus();

  return toolWin;
}


/////
//
// option list selection support
//
/////


// open loading window and call application to load options
function
selectTool(
  that,
  s
) {
  toolWin = new Object()                                                              ;
  l = parent.location;
  u = l.protocol + '//' + l.host + l.pathname + '?fts_f=' + that.form.name + '&fts_st=' + escape(s);
  toolWin.location.href = u;
  toolWin.focus();

  return false;
}


/////
//
// generate the referral tool window
//
/////

function
openReferralTool(
  sender,
  from_email
) {
  toolWin = new Object()                                                                                                          ;
  referralPage = referralTool(sender, from_email);
  toolWin.document.location='javascript:parent.opener.referralPage;';
  toolWin.focus();
}

function
referralTool(
  sender,
  from_email
) {
  var HTML;

  HTML  = '<?xml version="1.0" encoding="UTF-8" ?>';
  HTML += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/ftsdtd/xhtml1-transitional.dtd">';
  HTML += '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
HTML = '<html>';
  HTML += '<head>';
  HTML += '<title>Referral Tool</title>';
  HTML += '<style type="text/css">';
  HTML += '<!--';
  HTML += 'body { font: 12px Arial,Verdana,Helvetica,sans-serif; color: #000000; background: #FFFFFF; margin: 0px;}';
  HTML += '.popup { font: 12px Arial,Verdana,Helvetica,sans-serif; }';
  HTML += 'table.popup { background: #DBDBDF; }';
  HTML += 'th.popupreq { font: bold 12px Arial,Verdana,Helvetica,sans-serif; color: #FF3333; background: #A19FAB; }';
  HTML += 'th.popup { font: bold 12px Arial,Verdana,Helvetica,sans-serif; background: #A19FAB; }';
  HTML += 'td.popup { text-align: center; background: #EDF1F3; }';
  HTML += 'input.popup { background: #66CC99; }';
  HTML += 'td.poweredby { font: 9px Helvetica,Arial,Verdana,sans-serif; text-align: left; vertical-align: top; color: #AAAAAA; }';
  HTML += 'a.poweredby { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: none; color: #CCCCCC; }';
  HTML += 'a.poweredby:link { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: none; color: #CCCCCC; }';
  HTML += 'a.poweredby:visited { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: none; color: #CCCCCC; }';
  HTML += 'a.poweredby:hover { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: underline; color: #3333CC; }';
  HTML += 'a.poweredby:active { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: underline; color: #3333CC; }';
  HTML += 'td.copyright { font: italic 9px Helvetica,Arial,Verdana,sans-serif; text-align: right; vertical-align: top; color: #AAAAAA; }';
  HTML += '-->';
  HTML += '</style>';
  HTML += '</head>';

  HTML += '<body>';
  HTML += '<form action="' + parent.location.href + '" method="post">';
  HTML += '<table class="popup" border="0" cellspacing="0" cellpadding="0" width="100%">';
  HTML += '<tr><th class="popup">Your Name</th><th class="popupreq">Your Email Address</th></tr>';
  HTML += '<tr><td class="popup"><input type="text" name="fts_ref[sender]" size="25" maxlength="60" value="' + sender + '" /></td><td class="popup"><input type="text" name="fts_ref[from_email]" size="35" maxlength="60" value="' + from_email + '" /></td></tr>';
  HTML += '<tr><th class="popup">Recipient\'s Name</th><th class="popupreq">Recipient\'s Email Address</th></tr>';
  HTML += '<tr><td class="popup"><input type="text" name="fts_ref[recipient]" size="25" maxlength="60" /></td><td class="popup"><input type="text" name="fts_ref[to_email]" size="35" maxlength="60" /></td></tr>';
  HTML += '<tr><th class="popup" colspan="2">Additional Message</th></tr>';
  HTML += '<tr><td class="popup" colspan="2"><textarea name="fts_ref[message]" cols="55" rows="' + (document.layers ? 5 : 8) + '" wrap="virtual">I found this webpage and thought that you might be interested in visiting it.</textarea></td></tr>';
  HTML += '<tr><th class="popup" colspan="2">&nbsp;</th></tr>';
  HTML += '</table>';
  HTML += '<table class="copyright" border="0" cellspacing="0" cellpadding="0" width="100%">';
  HTML += '<tr>';
  HTML += '<td class="poweredby">';
  HTML += '<a class="poweredby" href="http://www.firsttimesoftware.com/?powered=' + parent.location.href + '" target="_blank">Powered by FTS</a>';
  HTML += '</td>';
  HTML += '<td class="copyright">';
  HTML += 'Copyright &copy; First Time Software 2001 - 2002';
  HTML += '</td>';
  HTML += '<td align="right"><input class="popup" type="submit" value="Send" /></td>';
  HTML += '</tr>';
  HTML += '</table></form>';
  HTML += '</body></html>';

  return HTML;
}


/////
//
// generate the feedback tool window
//
/////

function
openFeedbackTool(
  name,
  email
) {
  toolWin = new Object()                                                                                                          ;
  feedbackPage = feedbackTool(name, email);
  toolWin.document.location='javascript:parent.opener.feedbackPage;';
  toolWin.focus();
}

function
feedbackTool(
  name,
  email
) {
  var HTML;

  HTML  = '<?xml version="1.0" encoding="UTF-8" ?>';
  HTML += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/ftsdtd/xhtml1-transitional.dtd">';
  HTML += '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
HTML = '<html>';
  HTML += '<head>';
  HTML += '<title>Feedback Tool</title>';
  HTML += '<style type="text/css">';
  HTML += '<!--';
  HTML += 'body { font: 12px Arial,Verdana,Helvetica,sans-serif; color: #000000; background: #FFFFFF; margin: 0px;}';
  HTML += '.popup { font: 12px Arial,Verdana,Helvetica,sans-serif; }';
  HTML += 'table.popup { background: #DBDBDF; }';
  HTML += 'th.popup { font: bold 12px Arial,Verdana,Helvetica,sans-serif; background: #A19FAB; }';
  HTML += 'td.popupreq { font: bold 12px Arial,Verdana,Helvetica,sans-serif; text-align: center; color: #FF3333; background: #EDF1F3; }';
  HTML += 'td.popup { text-align: center; background: #EDF1F3; }';
  HTML += 'input.popup { background: #66CC99; }';
  HTML += 'td.poweredby { font: 9px Helvetica,Arial,Verdana,sans-serif; text-align: left; vertical-align: top; color: #AAAAAA; }';
  HTML += 'a.poweredby { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: none; color: #CCCCCC; }';
  HTML += 'a.poweredby:link { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: none; color: #CCCCCC; }';
  HTML += 'a.poweredby:visited { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: none; color: #CCCCCC; }';
  HTML += 'a.poweredby:hover { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: underline; color: #3333CC; }';
  HTML += 'a.poweredby:active { font: 9px Helvetica,Arial,Verdana,sans-serif; text-decoration: underline; color: #3333CC; }';
  HTML += 'td.copyright { font: italic 9px Helvetica,Arial,Verdana,sans-serif; text-align: right; vertical-align: top; color: #AAAAAA; }';
  HTML += '-->';
  HTML += '</style>';
  HTML += '</head>';

  HTML += '<body>';
  HTML += '<form action="' + parent.location.href + '" method="post">';
  HTML += '<table class="popup" border="0" cellspacing="0" cellpadding="0" width="100%">';
  HTML += '<tr><th class="popup">Your Name</th><th class="popup">Your Email Address</th></tr>';
  HTML += '<tr><td class="popup"><input type="text" name="fts_fb[author]" size="25" maxlength="60" value="' + name + '" /></td><td class="popup"><input type="text" name="fts_fb[email]" size="35" maxlength="60" value="' + email + '" /></td></tr>';
  HTML += '<tr><td colspan="2"><table class="popup" border="0" cellspacing="0" cellpadding="0" width="100%">';
  HTML += '<tr><th class="popup" colspan="4">Rate: Best (5) to Worst (1). "Overall" rating required.</th><th class="popup">&nbsp;</th></tr>';
  HTML += '<tr>';
  HTML += '<td class="popupreq">Overall<br />';
  HTML += '<select name="fts_fb[overall]">';
  HTML += '<option value="">Rate</option><option value="5">5 Best</option><option>4</option><option>3</option><option>2</option><option value="1">1 Worst</option>';
  HTML += '</select></td>';
  HTML += '<td class="popup">Content<br />';
  HTML += '<select name="fts_fb[content]">';
  HTML += '<option value="">Rate</option><option value="5">5 Best</option><option>4</option><option>3</option><option>2</option><option value="1">1 Worst</option>';
  HTML += '</select></td>';
  HTML += '<td class="popup">Design<br />';
  HTML += '<select name="fts_fb[design]">';
  HTML += '<option value="">Rate</option><option value="5">5 Best</option><option>4</option><option>3</option><option>2</option><option value="1">1 Worst</option>';
  HTML += '</select></td>';
  HTML += '<td class="popup">Usability<br />';
  HTML += '<select name="fts_fb[usability]">';
  HTML += '<option value="">Rate</option><option value="5">5 Best</option><option>4</option><option>3</option><option>2</option><option value="1">1 Worst</option>';
  HTML += '</select></td>';
  HTML += '<td class="popup">Visit how often?<br />';
  HTML += '<select name="fts_fb[visit_frequency]">';
  HTML += '<option value="">Select One</option>';
  HTML += '<option>First Time</option>';
  HTML += '<option>Visit Daily</option>';
  HTML += '<option>Visit Weekly</option>';
  HTML += '<option>Visit Monthly</option>';
  HTML += '<option>Visit Rarely</option>';
  HTML += '</select></td>';
  HTML += '</tr></table></td></tr>';
  HTML += '<tr><th class="popup" colspan="2">Additional Comments</th></tr>';
  HTML += '<tr><td class="popup" colspan="2"><textarea name="fts_fb[comments]" cols="55" rows="' + (document.layers ? 5 : 8) + '" wrap="virtual"></textarea></td></tr>';
  HTML += '<tr><th class="popup" colspan="2"><input type="checkbox" name="fts_fb[publish]" value="Y" checked="checked" />&nbsp;I grant permission to publish the above comments.</th></tr>';
  HTML += '</table>';
  HTML += '<table class="copyright" border="0" cellspacing="0" cellpadding="0" width="100%">';
  HTML += '<tr>';
  HTML += '<td class="poweredby">';
  HTML += '<a class="poweredby" href="http://www.firsttimesoftware.com/?powered=' + parent.location.href + '" target="_blank">Powered by FTS</a>';
  HTML += '</td>';
  HTML += '<td class="copyright">';
  HTML += 'Copyright &copy; First Time Software 2001 - 2002';
  HTML += '</td>';
  HTML += '<td align="right"><input class="popup" type="submit" value="Send" /></td>';
  HTML += '</tr>';
  HTML += '</table></form>';
  HTML += '</body></html>';

  return HTML;
}


/////
//
// htmlarea controls
//
/////

//  Tag Stack Functions

function
fts_HALastTag(
) {
  var i;
  for (i = fts_tags.length - 1; i >= -1; i--) {
    if (i == -1) { return 0; } else if (fts_tags[i] != 0) { return i; }
  }
}

function
fts_HAPushTag(
  tag
) {
  if (fts_tags[fts_HALastTag()]) { fts_tags[fts_HALastTag() + 1] = tag; } else { fts_tags[fts_HALastTag()] = tag; }
}

function
fts_HAPopTag(
) {
  var tag;

  tag = fts_tags[fts_HALastTag()];
  fts_tags[fts_HALastTag()] = 0;

  return tag;
}

function
fts_HACloseTag(
  ha
) {
  var tag;

  if (fts_ham) {
    alert('This operation is only available in expert mode.');
  } else {
    if (tag = fts_HAPopTag()) { ha.value += tag; }
  }

  ha.focus();
}

function
fts_HACloseAllTags(
  ha
) {
  var tag;

  if (fts_ham) {
    alert('This operation is only available in expert mode.');
  } else {
    while (tag = fts_HAPopTag()) { ha.value += tag; }
  }

  ha.focus();
}


//  Form Input Functions

function
fts_HALink(
  ha
) {
  var href;
  var title;

  if (href = prompt('Enter link URL', 'http://')) {
    if (title = prompt('Enter link text', href)) {
      ha.value +=  title.link(href) + ' ';
    }
  }

  ha.focus();
}

function
fts_HAEmail(
  ha
) {
  var href;
  var title;

  if (href = prompt('Enter email address', '')) {
    if (title = prompt('Enter email text', href)) {
      ha.value += title.link('mailto:' + href) + ' ';
    }
  }

  ha.focus();
}

function
fts_HAGraphic(
  e,
  ha
) {
  var href;
  var text;
  var input = e.options[e.selectedIndex].value;
  e.selectedIndex = 0;

  if (href = prompt('Enter graphic URL', 'http://')) {
    if (text = prompt('Enter graphic alternate text', '')) {
      ha.value += '<img src="' + href + '" align="' + input.toLowerCase() + '" alt="' + text + '" />';
    }
  }

  ha.focus();
}

function
fts_HASpan(
  e,
  ha
) {
  var text;

  if (e.type.match('select')) {
    var input = e.options[e.selectedIndex].value;
    e.selectedIndex = 0;
  } else {
    var input = e.value;
  }

  if (fts_ham) {
    if (text = prompt('Enter ' + input + ' text', '')) {
      ha.value += '<span class="' + input.toLowerCase() + '">' + text + '</span> ';
    }
  } else {
    ha.value += '<span class="' + input.toLowerCase() + '">';
    fts_HAPushTag('</span>');
  }

  ha.focus();
}

function
fts_HAPreview(
  ha
) {
  ha.focus();
  toolWin = new Object()                                                                       ;
  HAPage = fts_HATool(ha);
  toolWin.document.location='javascript:parent.opener.HAPage;';
  toolWin.focus();
}

function
fts_HATool(
  ha
) {
  var HTML;

  HTML  = '<?xml version="1.0" encoding="UTF-8" ?>';
  HTML += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/ftsdtd/xhtml1-transitional.dtd">';
  HTML += '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
HTML = '<html>';
  HTML += '<head>';
  HTML += '<title>Preview Tool</title>';
  HTML += '<style type="text/css">';
  HTML += '<!--';
  HTML += 'body { font: 12px Arial,Verdana,Helvetica,sans-serif; color: #000000; background: #FFFFFF; }';
  HTML += '.arial { font-family: Arial; }';
  HTML += '.century { font-family: Century; }';
  HTML += '.courier { font-family: Courier; }';
  HTML += '.helvetica { font-family: Helvetica; }';
  HTML += '.times { font-family: Times; }';
  HTML += '.verdana { font-family: Verdana; }';
  HTML += '.serif { font-family: serif; }';
  HTML += '.sansserif { font-family: sans-serif; }';
  HTML += '.smallest { font-size: 8px; }';
  HTML += '.small { font-size: 10px; }';
  HTML += '.normal { font-size: 12px; }';
  HTML += '.large { font-size: 14px; }';
  HTML += '.big { font-size: 16px; }';
  HTML += '.verybig { font-size: 18px; }';
  HTML += '.huge { font-size: 24px; }';
  HTML += '.bold { font-weight: bold; }';
  HTML += '.italic { font-weight: italic; }';
  HTML += '.underline { text-decoration: underline; }';
  HTML += '.blue { color: Blue; }';
  HTML += '.brown { color: Brown; }';
  HTML += '.green { color: Green; }';
  HTML += '.orange { color: Orange; }';
  HTML += '.purple { color: Purple; }';
  HTML += '.red { color: Red; }';
  HTML += '.yellow { color: Yellow; }';
  HTML += '-->';
  HTML += '</style>';
  HTML += '</head>';

  HTML += '<body>';
  HTML += '<hr>\n';
  HTML += ha.value.replace(/\n/g, '<br />');
  HTML += '\n<hr>';
  HTML += '<p><center><a href="javascript:window.close();">Close Window</a></center></p>';
  HTML += '</body></html>';

  return HTML;
}


/////
//
// generate the date tool
//
/////

function
buildCal(
) {
  buildCalParts();
  var calDoc = '<tr>';
  month = calDate.getMonth();
  year = calDate.getFullYear();
  day = calDay;
  var i = 0;
  var days = getDaysInMonth();

  if (day > days) {
    day = days;
  }

  var firstOfMonth = new Date (year, month, 1);
  var startingPos  = firstOfMonth.getDay();
  days += startingPos;
  var columnCount = 0;

  for (i = 0; i < startingPos; i++) {
    calDoc += blankCell;
    columnCount++;
  }

  var currentDay = 0;
  var dayType = 'weekday';

  for (i = startingPos; i < days; i++) {
    currentDay = i - startingPos + 1;

    if (currentDay == day) {
      dayType = 'focusDay';
    } else {
      dayType = 'weekDay';
    }

    if (columnCount % 7 == 0) { calDoc += '<tr>'; }
    calDoc += '<td align="center" bgcolor="#CCCCCC">';
    calDoc += '<a class="' + dayType + '" href="javascript:parent.opener.returnDate(';
    calDoc += "'" + year + "-" + makeTwoDigit(month+1) + "-" + makeTwoDigit(currentDay) + "'";
    calDoc += ')">&nbsp;' + currentDay + '&nbsp;</a></td>';
    if (columnCount % 7 == 6) { calDoc += '</tr>'; }

    columnCount++;
  }

  for (i=days; i<42; i++)  {
    if (columnCount % 7 == 0) { calDoc += '<tr>'; }
    calDoc += blankCell;
    if (columnCount % 7 == 6) { calDoc += '</tr>'; }

    columnCount++;
  }

  return calDoc;
}

function
dateToJSdate(
  date
) {
  var formatDate = date;
  var str_date = new String(date);
  var ary_date = new Array();

  if (str_date.indexOf('-') != -1) {
    ary_date = str_date.split('-');
    formatDate = makeTwoDigit(ary_date[1]) + '/' + makeTwoDigit(ary_date[2]) + '/' + ary_date[0];
  }

  return formatDate;
}

function
setDateField(
  dateField,
  dateSeed
) {

  if ((typeof dateField) != 'undefined') {
    calDateField = dateField;
    inDate = dateField.value;
  } else {
    inDate = setInitialDate;
  }

  if ((typeof dateSeed) != 'undefined') {
    inDate = dateSeed;
  }

  openDateToolWin(inDate);
}

function
setInitialDate(
  seedDate
) {
  calDate = new Date(seedDate);

  if (isNaN(calDate)) {
    calDate = new Date();
  }

  calDay  = calDate.getDate();

  calDate.setDate(1);
}

function
dateTool(
  that,
  dateField,
  dateSeed
) {
  setDateField(that.form.elements[dateField], dateSeed);

  return false;
}

function
openDateToolWin(
  dateSeed
) {
  toolWin = new Object()                                              ;
  fullCalendar = returnFullCalendar(dateSeed);
  toolWin.document.location='javascript:parent.opener.fullCalendar;';
  toolWin.focus();
}

function writeCalendar(
  dateSeed
) {
  fullCalendar = returnFullCalendar(dateSeed);
  toolWin.document.location='javascript:parent.opener.fullCalendar;';
}

function
returnFullCalendar(
  dateSeed
) {
  var HTML;
  var fdate = dateToJSdate(dateSeed);
  setInitialDate(fdate);

  HTML  = '<?xml version="1.0" encoding="UTF-8" ?>';
  HTML += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/ftsdtd/xhtml1-transitional.dtd">';
  HTML += '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
HTML = '<html>';
  HTML += '<title>Date Tool</title>';
  HTML += '<head>';
  HTML += '<style type="text/css">';
  HTML += '<!--';
  HTML += 'body { font: 12px Arial,Verdana,Helvetica,sans-serif; color: #000000; background: #FFFFFF; margin: 2px;}';
  HTML += 'td.heading { font: bold 12px arial,helvetica; text-decoration: none; color: #000000; }';
  HTML += 'a { font: 12px arial,helvetica; text-decoration: none; color:#000099; }';
  HTML += 'a:hover { font: 12px arial,helvetica; text-decoration: none; color:#0000FF; }';
  HTML += 'a.focusDay { font: 12px arial,helvetica; text-decoration: none; color:#990000; }';
  HTML += 'a.focusDay:hover { font: 12px arial,helvetica; text-decoration: none; color:#FF0000; }';
  HTML += '-->';
  HTML += '</style>';
  HTML += '</head>';

  HTML += '<body>';
  HTML += '<form name="calControl" onSubmit="return false;">';
  HTML += '<center><table cellpadding="0" cellspacing="2" border="0">';
  HTML += '<tr><td align="center">';
  HTML += getMonthSelect();
  HTML += '<input name="year" value="' + calDate.getFullYear() + '" type="text" size="4" maxlength="4" onChange="parent.opener.setYear();" />';
  HTML += '</td></tr><tr><td align="center">';
  HTML += '<input type="button" name="previousYear" value="&lt;&lt;" onClick="parent.opener.writeCalendar(\'' + getPreviousYear() + '\');" />';
  HTML += '<input type="button" name="previousMonth" value=" &lt; " onClick="parent.opener.writeCalendar(\'' + getPreviousMonth() + '\');" />';
  HTML += '<input type="button" name="today" value="Today" onClick="parent.opener.writeCalendar(\'' + getToday() + '\');" />';
  HTML += '<input type="button" name="nextMonth" value=" &gt; " onClick="parent.opener.writeCalendar(\'' + getNextMonth() + '\');" />';
  HTML += '<input type="button" name="nextYear" value="&gt;&gt;" onClick="parent.opener.writeCalendar(\'' + getNextYear() + '\');" />';
  HTML += '</td></tr></table>';
  HTML += '<br /><table cellpadding="0" cellspacing="1" border="1"><tr><td align="center"><table cellpadding="0" cellspacing="1" border="0">' + createWeekdayList() + buildCal() + '</table></td></tr></table>';
  HTML += '<br /><a href="javascript:parent.opener.returnDate(\'' +  getToday() + '\');">Use Today</a>&nbsp;|&nbsp;<a href="javascript:window.close();">Close Only</a></center>';
  HTML += '</body></html>';

  return HTML;
}

function
getPreviousYear(
) {
  var mymonth = calDate.getMonth()
  var myday   = calDay;
  var myyear  = calDate.getFullYear()
  if (myyear > 1000){
    myyear--;
  }

  f = myyear + '-' + makeTwoDigit(mymonth+1) + '-' + makeTwoDigit(myday);

  return f;
}

function
getPreviousMonth(
) {
  var mymonth = calDate.getMonth();
  var myday   = calDay;
  var myyear  = calDate.getFullYear()

  if (mymonth == 0) {
    mymonth = 11;
    if (myyear>1000) {
      myyear--;
    }
  } else {
    mymonth--;
  }

  f = myyear + '-' + makeTwoDigit(mymonth+1) + '-' + makeTwoDigit(myday);

  return f;
}

function
getToday(
) {
  var Today = new Date();
  var mymonth = Today.getMonth();
  var myday   = Today.getDate();
  var myyear  = Today.getFullYear()

  f = myyear + '-' + makeTwoDigit(mymonth+1) + '-' + makeTwoDigit(myday);

  return f;
}

function
getNextYear(
) {
  var mymonth = calDate.getMonth();
  var myday   = calDay;
  var myyear  = calDate.getFullYear()
  if (myyear < 9999) {
    myyear++;
  }

  f = myyear + '-' + makeTwoDigit(mymonth+1) + '-' + makeTwoDigit(myday);

  return f;
}

function
getNextMonth(
) {
  var mymonth = calDate.getMonth();
  var myday   = calDay;
  var myyear  = calDate.getFullYear()

  if(mymonth == 11) {
    mymonth = 0;
    if ( myyear < 9999 ) {
        myyear++;
    }
  } else {
    mymonth++;
  }

  f = myyear + '-' + makeTwoDigit(mymonth+1) + '-' + makeTwoDigit(myday);

  return f;
}

function
setYear(
) {
  var myyear  = toolWin.document.calControl.year.value;
  var mymonth = calDate.getMonth();
  var myday = calDay;

  if (isFourDigitYear(myyear)) {
    f = makeTwoDigit(mymonth+1) + '/'+ makeTwoDigit(myday) + '/' + myyear;
    writeCalendar(f);
  } else {
      toolWin.document.calControl.year.focus();
      toolWin.document.calControl.year.select();
  }
}

function
setCurrentMonth(
) {
  var mymonth = toolWin.document.calControl.month.selectedIndex;
  var myyear = calDate.getFullYear();
  var myday = calDay;

  f = myyear + '-' + makeTwoDigit(mymonth+1) + '-' + makeTwoDigit(myday);
  writeCalendar(f);
}

function
getDaysInMonth(
) {
  var days;
  var month = calDate.getMonth()+1;
  var year  = calDate.getFullYear();

  if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)  {
    days=31;
  } else if (month==4 || month==6 || month==9 || month==11) {
      days=30;
  } else if (month==2)  {
    if (isLeapYear(year)) {
      days=29;
    } else {
      days=28;
    }
  }

  return (days);
}

function
isLeapYear (
  Year
) {
  if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
    return true;
  } else {
    return false;
  }
}

function
isFourDigitYear(
  year
) {
  if (year.length != 4) {
    toolWin.document.calControl.year.value = calDate.getFullYear();
    toolWin.document.calControl.year.select();
    toolWin.document.calControl.year.focus();
  } else {
    return true;
  }
}

function
getMonthSelect(
) {
  if (navigator.language == 'fr') {
    monthArray = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
  } else if (navigator.language == 'de') {
    monthArray = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
  } else if (navigator.language == 'es') {
    monthArray = new Array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
  } else {
    monthArray = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
  }

  var activeMonth = calDate.getMonth();
  monthSelect = '<select name="month" onChange="parent.opener.setCurrentMonth()">';

  for (i in monthArray) {
    if (i == activeMonth) {
	monthSelect += '<option selected="selected">' + monthArray[i] + '</option>\n';
    }
    else {
	monthSelect += '<option>' + monthArray[i] + '</option>\n';
    }
  }

  return monthSelect + '</select>';
}

function
createWeekdayList(
) {
  if (navigator.language == 'fr') {
    weekdayList = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
    weekdayArray = new Array('Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa');
  } else if (navigator.language == 'de') {
    weekdayList = new Array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
    weekdayArray = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
  } else if (navigator.language == 'es') {
    weekdayList = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado')
    weekdayArray = new Array('Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa');
  } else {
    weekdayList = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    weekdayArray = new Array('Su','Mo','Tu','We','Th','Fr','Sa');
  }

  var weekdays = '<tr bgcolor="#FFFFFF">';

  for (i in weekdayArray) {
    weekdays += '<td class="heading" align="center">' + weekdayArray[i] + '</td>';
  }

  return weekdays + '</tr>';
}

function
buildCalParts(
) {
  weekdays = createWeekdayList();
  blankCell = '<td align="center" bgcolor="#CCCCCC">&nbsp;</td>';
}

function
jsReplace(
  inString,
  find,
  replace
) {
  var outString = '';

  if (!inString) {
    return '';
  }

  if (inString.indexOf(find) != -1) {
    t = inString.split(find);

    return (t.join(replace));
  } else {
    return inString;
  }
}

function
makeTwoDigit(
  inValue
) {
  var numVal = parseInt(inValue, 10);

  if (numVal < 10) {
      return('0' + numVal);
  } else {
      return numVal;
  }
}

function
returnDate(
  inDay
) {
  if ((typeof calDateField) != 'undefined') {
    calDateField.value = inDay;
    calDateField.focus();
  }

  toolWin.close()
}
