var FSaa, FSbb, FSb;
var FSc, FSd;
var FSintHposOffset, FSintVposOffset;
var FSe, FSf, FSg;
var FSh, FSi, FSj;
var FSk = 1;
var FSl = 60 * 1000;
var FSm = FSl * 60;
var FSn = FSm * 24;
var FSo = 0;
var FSp = 0;
var FSq = 0;
var FSr = 0;
var FSs = 0;
if (navigator.userAgent.indexOf ("Gecko") > 0) {
  FSstrBrowser = "Gecko";
document.onclick = FSfncHideDateSelector} else {
  FSstrBrowser = "IE";
  document.onclick = function () {
  FSfncHideDateSelector (event)}
}

if ((typeof (HTMLElement) != "undefined")
    && (!HTMLElement.prototype.insertAdjacentHTML)) {
  HTMLElement.prototype.insertAdjacentHTML = function (where, htmlStr) {
    var r = this.ownerDocument.createRange ();
    r.setStartBefore (this);
    var parsedHTML = r.createContextualFragment (htmlStr);
    this.appendChild (parsedHTML);
  }
}
function
FSfncShowDateSelector (DateRef, EventRef, DisableNone, LangID, ImagePath,
		       hposOffset, vposOffset)
{
  if (FSd) {
  return} else {
  FSd = true}
  FSintHposOffset = hposOffset;
  FSintVposOffset = vposOffset;
  if (document.getElementById) {
    if (!FSf) {
      FSh = new Date ();
      FSh.setHours (0, 0, 0, 0);
      FSfncWriteSelectorHTML ();
      FSf = document.getElementById ("FSdateSelector");
      FSg = document.getElementById ("FScalendarArea");
    }
    FSe = DateRef;
    FSc = DisableNone;
    FSbb = LangID;
    FSb = ImagePath;
    switch (FSbb) {
    case "FR":
      FSaa = 'Aucune';
      FSk = 1;
      break;
    case "DE":
      FSaa = 'Kein';
      FSk = 1;
      break;
    case "ES":
      FSaa = 'Ninguna';
      FSk = 1;
      break;
    case "ESUS":
      FSaa = 'Ninguna';
      FSk = 0;
      break;
    case "US":
      FSaa = 'None';
      FSk = 0;
      break;
    default:
      FSaa = 'None';
      FSk = 1;
    }
    FSi = new Date (1141788538453 - (70 * FSn));	// new Date(FSh.getTime()-(FSn*69));
    FSj = new Date (FSh.getTime () + (FSn * 0));
    FSo = 0;

    if (FSe.value == FSaa) {
      if (FSe.defaultValue == FSaa) {
	var arrCurrentDate = FSfncDateToString (FSh).split ("/");
	FSp = arrCurrentDate[0 + FSk] - 1;
      } else {
	var arrCurrentDate = FSe.defaultValue.split ("/");
	FSo = arrCurrentDate[1 - FSk];
	FSp = arrCurrentDate[0 + FSk] - 1;
      }
    } else {
      var arrCurrentDate = FSe.value.split ("/");
      FSo = arrCurrentDate[1 - FSk];
      FSp = arrCurrentDate[0 + FSk] - 1;
    }
    FSq = arrCurrentDate[2];
    FSr = parseInt (FSp, 10);
    FSs = parseInt (FSq, 10);
    FSg.innerHTML = FSfncCreateCalendarArea ();
    if (FSstrBrowser == "Gecko") {
      FSf.style.left = EventRef.clientX - 90 + hposOffset;
      FSf.style.top = EventRef.clientY + 8 + vposOffset;
    } else {
      FSf.style.left =
	EventRef.clientX - EventRef.offsetX - 82 +
	document.body.scrollLeft + document.documentElement.scrollLeft +
	hposOffset;
      FSf.style.top =
	EventRef.clientY - EventRef.offsetY + 16 +
	document.body.scrollTop + document.documentElement.scrollTop +
	vposOffset;
    }
    FSf.style.visibility = "visible";
  }
}

function
FSfncHideDateSelector (TheEvent)
{
  if (FSf) {
    if (FSstrBrowser == "Gecko") {
      if (TheEvent) {
	var ThisIcon = "FSdsIcon_" + FSe.name;
	var rel = TheEvent.target;
	while (rel) {
	  if ((rel.id == "FSdateSelector") || (rel.id == ThisIcon)) {
	  break} else {
	  rel = rel.parentNode}
	}
      }
      if (!rel) {
	FSf.style.visibility = "hidden";
      FSd = false}
      return;
    } else {
      if ((TheEvent)) {
	if ((TheEvent.clientX + document.body.scrollLeft +
	     document.documentElement.scrollLeft > FSf.style.posLeft + 1)
	    && (TheEvent.clientX + document.body.scrollLeft +
		document.documentElement.scrollLeft <
		FSf.style.posLeft + FSf.style.posWidth + 10)
	    && (TheEvent.clientY + document.body.scrollTop +
		document.documentElement.scrollTop > FSf.style.posTop + 1)
	    && (TheEvent.clientY + document.body.scrollTop +
		document.documentElement.scrollTop <
		FSf.style.posTop + FSf.offsetHeight + 2)) {
	return}
	if ((TheEvent.clientX + document.body.scrollLeft +
	     document.documentElement.scrollLeft >
	     FSf.style.posLeft + 81 - FSintHposOffset)
	    && (TheEvent.clientX + document.body.scrollLeft +
		document.documentElement.scrollLeft <
		FSf.style.posLeft + 99 - FSintHposOffset)
	    && (TheEvent.clientY + document.body.scrollTop +
		document.documentElement.scrollTop >
		FSf.style.posTop - 17 - FSintVposOffset)
	    && (TheEvent.clientY + document.body.scrollTop +
		document.documentElement.scrollTop <
		FSf.style.posTop - FSintVposOffset)) {
	return}
      }
      FSf.style.visibility = "hidden";
      FSd = false;
    }
  } else {
  FSf = false}
}

function
FSfncCreateCalendarArea ()
{
  switch (FSbb) {
  case "FR":
    var arrDayNames =
      new Array ("Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim");
    var arrMonthNames =
      new Array ("Janvier", "F&eacute;vrier", "Marche", "Avril", "Mai",
		 "Juin", "Juillet", "Ao&ucirc;t", "Septembre", "Octobre",
		 "Novembre", "D&eacute;cembre");
    var strTodayLabel = "Auj";
    var strNoValue = "Aucune";
    break;
  case "DE":
    var arrDayNames =
      new Array ("Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son");
    var arrMonthNames =
      new Array ("Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni",
		 "Juli", "August", "September", "Oktober", "November",
		 "Dezember");
    var strTodayLabel = "Heute";
    var strNoValue = "Kein";
    break;
  case "ES":
  case "ESUS":
    var arrDayNames =
      new Array ("Lun", "Mar", "Mi&eacute;", "Jue", "Vie", "S&aacute;b",
		 "Dom");
    var arrMonthNames =
      new Array ("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
		 "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
		 "Diciembre");
    var strTodayLabel = "Hoy";
    var strNoValue = "Ninguna";
    break;
  default:
    var arrDayNames =
      new Array ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
    var arrMonthNames =
      new Array ("January", "February", "March", "April", "May", "June",
		 "July", "August", "September", "October", "November",
		 "December");
    var strTodayLabel = "Today";
    var strNoValue = "None";
  }
  var dtFirstOfMonth = new Date (FSs, FSr, 1);
  var intTimeOffset = FSfncGetTimeOffset ();
  if (Math.abs (intTimeOffset) > 8) {
  dtFirstOfMonth.setHours (-intTimeOffset, 0, 0, 0)}
  switch (dtFirstOfMonth.getDay ()) {
  case 0:
    var OffsetDays = 6;
    break;
  case 1:
    var OffsetDays = 7;
    break;
  default:
    var OffsetDays = dtFirstOfMonth.getDay () - 1;
  }
  OffsetDays -= (FSk - 1);
  var dtCalendarStart =
    new Date (dtFirstOfMonth.getTime () - (FSn * OffsetDays));
  dtCalendarStart.setHours (12);
  var dtCalendarEnd = new Date (dtCalendarStart.getTime () + (FSn * 41));
  dtCalendarEnd.setHours (12);
  strCalendar =
    '<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="0" CLASS="FScalendar">';
  strCalendar += "<TR CLASS='FScalendarTitles' ALIGN='center'>";
  for (var i = 0; i <= 6; i++) {
    intArrayPointer = i + (FSk - 1);
    if (intArrayPointer < 0) {
    intArrayPointer = 6}
  strCalendar += "<TD WIDTH='22'>" + arrDayNames[intArrayPointer] + "</TD>"}
  strCalendar += "</TR>";
  for (var i = 0; i <= 41; i++) {
    if (i % 7 == 0) {
    strCalendar += "<TR ALIGN='center'>"}
    var StyleString = "";
    var dtTheDay = new Date (dtCalendarStart.getTime () + (FSn * i) );
    dtTheDay.setHours (4, 0, 0, 0);
    if (dtTheDay.getTime () == FSh.getTime ()) {
      if ((dtTheDay.getMonth () == FSp) && (dtTheDay.getDate () == FSo)
	  && (dtTheDay.getFullYear () == FSq)) {
      StyleString +=
	  "background-image: url(" + FSb +
	  "today_selected.gif); background-repeat:no-repeat; "} else {
      StyleString +=
	  "background-image: url(" + FSb +
	  "today.gif); background-repeat:no-repeat; "}
    } else if ((dtTheDay.getMonth () == FSp) && (dtTheDay.getDate () == FSo)
	       && (dtTheDay.getFullYear () == FSq)) {
    StyleString +=
	"background-image: url(" + FSb +
	"selected.gif); background-repeat:no-repeat; "}
    if (dtTheDay.getMonth () != FSr) {
      var LinkClass = "FSnotInMonth"}
      else
      {
	var LinkClass = "FSinMonth"
      }
      if (((FSi) && (FSj)) && ((dtTheDay < FSi) || (dtTheDay > FSj))) {
	strCalendar +=
	  "<TD CLASS='FSoutOfRange' STYLE='" + StyleString + "'>" +
	  dtTheDay.getDate () + "</TD>"
      } else {
    // XXX var c; if (c!=8) { alert(dtTheDay); c=8; }
	strCalendar +=
	  "<TD STYLE='" + StyleString +
	  "'><A HREF='Javascript: void FSfncSetDate(\"" +
	  FSfncDateToString (dtTheDay) + "\")' CLASS='" + LinkClass +
	  "'>" + dtTheDay.getDate () + "</A></TD>"
      }
      if (i % 7 == 6) {
	strCalendar += "</TR>"
      }
    }
    strCalendar += "</TABLE>";
    var strMonthOptions = "";
    var strSelected = "";
    for (var i = 0; i <= 11; i++) {
      if (i == FSr) {
      strSelected = " SELECTED"} else {
      strSelected = ""}
      strMonthOptions +=
	'<OPTION' + strSelected + '>' + arrMonthNames[i] + '</OPTION>';
    }
    if (FSc == true) {
    NoneButton =
	'<IMG SRC="' + FSb + FSbb +
	'/but_none_dis.gif" WIDTH="44" HEIGHT="18" HSPACE="1">'} else {
    NoneButton =
	'<INPUT TYPE="image" SRC="' + FSb + FSbb +
	'/but_none.gif" WIDTH="44" HEIGHT="18" HSPACE="1" onClick="FSfncSetDate(\''
	+ strNoValue + '\')">'}
    strCalendar =
      '<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" WIDTH="100%" HEIGHT="100%">'
      + '<TR HEIGHT="22" CLASS="FSbuttonsRow">' +
      '<TD WIDTH="30" ALIGN="left"><INPUT TYPE="image" SRC="' + FSb +
      'but_prev.gif" WIDTH="18" HEIGHT="18" HSPACE="1" onClick="FSfncAdvanceDate(-1)"></TD>'
      +
      '<TD><SELECT NAME="FScurrentMonth" CLASS="FSmonthRolldown" onChange="FSfncChangeMonth(this.selectedIndex + 1)">'
      + strMonthOptions + '</SELECT></TD>' +
      '<TD><INPUT TYPE="text" NAME="FScurrentYear" VALUE="' + FSs +
      '" READONLY CLASS="FSyearInput"></TD>' +
      '<TD><INPUT TYPE="image" SRC="' + FSb +
      'but_yeard.gif" WIDTH="18" HEIGHT="9" onClick="FSfncAdvanceDate(12)"><BR><INPUT TYPE="image" SRC="'
      + FSb +
      'but_yearu.gif" WIDTH="18" HEIGHT="9" onClick="FSfncAdvanceDate(-12)"></TD>'
      + '<TD WIDTH="30" ALIGN="right"><INPUT TYPE="image" SRC="' + FSb +
      'but_next.gif" WIDTH="18" HEIGHT="18" HSPACE="1" onClick="FSfncAdvanceDate(1)"></TD>'
      + '</TR>' +
      '<TR HEIGHT="133" BGCOLOR="#FFFFFF"><TD COLSPAN="5" ALIGN="center">' +
      strCalendar + '</TD></TR>' + '<TR HEIGHT="22" CLASS="FSbuttonsRow">' +
      '<TD COLSPAN="5">' +
      '<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%">' +
      '<TR>' + '<TD ALIGN="left"><INPUT TYPE="image" SRC="' + FSb + FSbb +
      '/but_today.gif" WIDTH="44" HEIGHT="18" HSPACE="1" onClick="FSfncSetDate(FSfncDateToString(FSh))"></TD>'
      + '<TD ALIGN="center" ID="FSdateToday">' + strTodayLabel + ': ' +
      FSfncDateToString (FSh) + '</TD>' + '<TD ALIGN="right">' +
      NoneButton + '</TD>' + '</TR>' + '</TABLE>' + '</TD>' + '</TR>';
    return strCalendar;
  }
  function FSfncGetTimeOffset ()
  {
    var rightNow = new Date ();
    var date1 = new Date (rightNow.getFullYear (), 0, 1, 0, 0, 0, 0);
    var temp = date1.toGMTString ();
    var date3 = new Date (temp.substring (0, temp.lastIndexOf (" ") - 1));
    return (date1 - date3) / FSm;
  }
  function FSfncSetDate (TheDate)
  {
    var tempArray = TheDate.split ("/");
    var resultingDate =
      new Date (tempArray[2], tempArray[0 + FSk] - 1, tempArray[1 - FSk]);
    if (((FSi) && (FSj)) && ((resultingDate < FSi) || (resultingDate > FSj))) {
      switch (FSbb) {
      case "FR":
	alert ("Veuillez choisir une dacte dans la gamme specifice");
	break;
      case "DE":
	alert ("Bitte ein Datum innerhalb des angegebenen Zeitraums wählen");
	break;
      case "ES":
      case "ESUS":
	alert ("Por favor, elija una fecha dentro del periodo especificado");
	break;
      default:
	alert ("Please select a date in the range specified");
      }
      return false;
    }
    FSo = 0;
    FSe.value = TheDate;
    FSfncHideDateSelector ();
  }
  function FSfncAdvanceDate (Adjuster)
  {
    if ((Adjuster == 12) || (Adjuster == -12)) {
    FSs = FSs + (Adjuster / 12)} else {
      FSr = FSr + Adjuster;
      if (FSr == -1) {
	FSr = 11;
      FSs--}
      if (FSr == 12) {
	FSr = 0;
      FSs++}
    }
    FSg.innerHTML = FSfncCreateCalendarArea ();
  }
  function FSfncChangeMonth (Adjuster)
  {
    FSr = Adjuster - 1;
    FSg.innerHTML = FSfncCreateCalendarArea ();
  }
  function FSfncDateToString (TheDate)
  {
    if (!TheDate) {
    return ""} else {
      if (FSk == 1) {
      return (TheDate.getDate () <
		10 ? "0" + TheDate.getDate () : TheDate.getDate ()) +
	  "/" + (TheDate.getMonth () <
		   9 ? "0" + (TheDate.getMonth () +
				1) : (TheDate.getMonth () + 1)) + "/" +
	  TheDate.getFullYear ()} else {
      return (TheDate.getMonth () <
		9 ? "0" + (TheDate.getMonth () +
			     1) : (TheDate.getMonth () + 1)) + "/" +
	  (TheDate.getDate () <
	     10 ? "0" + TheDate.getDate () : TheDate.getDate ()) + "/" +
	  TheDate.getFullYear ()}
    }
  }
  function FSfncMakeDate (TheDay, TheMonth, TheYear)
  {
  return new Date (TheYear, TheMonth - 1, TheDay)}
  function FSfncCheckDate (thisDateField, LangID)
  {
    if (!LangID) {
    LangID = FSbb}
    switch (LangID) {
    case "FR":
      FSaa = 'Aucune';
      FSk = 1;
      var strFailText = "Cette date n'est pas valable";
      break;
    case "DE":
      FSaa = 'Keine';
      FSk = 1;
      var strFailText = "Dieses Datum ist ungaltig";
      break;
    case "ES":
      FSaa = 'Ninguna';
      FSk = 1;
      var strFailText = "Esta fecha no es válida";
      break;
    case "ESUS":
      FSaa = 'Ninguna';
      FSk = 0;
      var strFailText = "Esta fecha no es válida";
      break;
    case "US":
      FSaa = 'None';
      FSk = 0;
      var strFailText = "Date is not valid";
      break;
    default:
      FSaa = 'None';
      FSk = 1;
      var strFailText = "Date is not valid";
    }
    if (thisDateField.value == "") {
    thisDateField.value = FSaa}
    if ((thisDateField.value != FSaa)
	&& (!FSfncCheckDateFormat (thisDateField.value))) {
      alert (strFailText);
    thisDateField.value = thisDateField.defaultValue}
  }
  function FSfncCheckDateFormat (thisDate)
  {
    if (thisDate.indexOf ("/") == -1) {
    return false}
    var ArrayDate = thisDate.split ("/");
    if (ArrayDate.length != 3) {
    return false}
    if ((isNaN (ArrayDate[0])) || (ArrayDate[0] == "")) {
    return false}
    if ((isNaN (ArrayDate[1])) || (ArrayDate[1] == "")) {
    return false}
    if ((isNaN (ArrayDate[2])) || (ArrayDate[2] == "")) {
    return false}
    var daysInMonth =
      new Array (0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    if ((parseInt (ArrayDate[1 - FSk], 10) < 1)
	|| (parseInt (ArrayDate[1 - FSk], 10) >
	    daysInMonth[parseInt (ArrayDate[0 + FSk], 10)])) {
    return false}
    if ((parseInt (ArrayDate[0 + FSk], 10) == 2)
	&& (parseInt (ArrayDate[1 - FSk], 10) >
	    FSfncDaysInFebruary (parseInt (ArrayDate[2], 10)))) {
    return false}
    if ((parseInt (ArrayDate[0 + FSk], 10) < 1)
	|| (parseInt (ArrayDate[0 + FSk], 10) > 12)) {
    return false}
    return true;
  }
  function FSfncDaysInFebruary (year)
  {
    return (((year % 4 == 0)
	     && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28)}
  function FSfncWriteSelectorHTML ()
  {
    var selectorHTML =
      '' +
      '<FORM ACTION="#" METHOD="GET" NAME="FSdateSelectorForm" onSubmit="return false">'
      +
      '<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="188" HEIGHT="194" ID="FSdateSelector" STYLE="width:190px; height:196px">'
      + '<TR><TD ID="FScalendarArea"></TD></TR>' + '</TABLE>' + '</FORM>';
  document.body.insertAdjacentHTML ("BeforeEnd", selectorHTML)}
  function FSfncWriteFieldHTML (FormName, FieldName, FieldValue, FieldWidth,
				ImagePath, LangID, DisableNone, UseOnClick,
				HposOffset, VposOffset)
  {
    if (!LangID) {
    LangID = "EN"}
    if (!DisableNone) {
    DisableNone = false}
    if (ImagePath.charAt (ImagePath.length - 1) != "/") {
    ImagePath = ImagePath + "/"}
    if (!HposOffset) {
    HposOffset = 0}
    if (!VposOffset) {
    VposOffset = 0}
    if (document.getElementById) {
      var FSimg1 = new Image ();
      FSimg1.src = ImagePath + "today_selected.gif";
      var FSimg2 = new Image ();
      FSimg2.src = ImagePath + "today.gif";
      var FSimg3 = new Image ();
      FSimg3.src = ImagePath + "selected.gif";
      var FSimg4 = new Image ();
      FSimg4.src = ImagePath + "but_prev.gif";
      var FSimg5 = new Image ();
      FSimg5.src = ImagePath + "but_yearu.gif";
      var FSimg6 = new Image ();
      FSimg6.src = ImagePath + "but_yeard.gif";
      var FSimg7 = new Image ();
      FSimg7.src = ImagePath + "but_next.gif";
      var FSimg8 = new Image ();
      FSimg8.src = ImagePath + LangID + "/but_today.gif";
      var FSimg9 = new Image ();
      FSimg9.src = ImagePath + LangID + "/but_none.gif";
      var ActionString =
	'FSfncShowDateSelector(document.' + FormName + '.' + FieldName +
	',event,' + DisableNone + ',\'' + LangID + '\',\'' + ImagePath +
	'\',' + HposOffset + ',' + VposOffset + ')';
      if (UseOnClick == true) {
	var ActionEvent = "onMouseDown=" + ActionString;
	switch (LangID) {
	case "FR":
	  var IconAltText = "Cliquez ici pour choisir une date";
	  break;
	case "DE":
	  var IconAltText = "Hier klicken, um ein Datum auszuwählen";
	  break;
	case "ES":
	case "ESUS":
	  var IconAltText = "Haga clic aquí para seleccionar una fecha";
	  break;
	default:
	  var IconAltText = "Click here to select a date";
	}
      } else {
	var ActionEvent =
	  "onMouseOver=" + ActionString + " onMouseDown=" + ActionString;
	var IconAltText = "";
      }
      var formFieldHTML =
	'' +
	'<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" BGCOLOR="#FFFFFF" CLASS="FSdateSelect" ID="'
	+ FieldName + 'FStable" WIDTH="' + FieldWidth +
	'" HEIGHT="22" STYLE="width:' + FieldWidth + 'px">' + '<TR>' +
	'<TD><INPUT TYPE="text" NAME="' + FieldName + '" VALUE="' +
	FieldValue +
	'" CLASS="FSdateField" SIZE="9" MAXLENGTH="10" onChange="FSfncCheckDate(this,\''
	+ LangID + '\')" READONLY></TD>' +
	'<TD ALIGN="right"><A HREF="JavaScript: void 0" ' + ActionEvent +
	'><IMG SRC="' + ImagePath +
	'calendar.gif" HEIGHT="16" WIDTH="16" HSPACE="3" BORDER="0" ALT="' +
	IconAltText + '" ID="FSdsIcon_' + FieldName + '"></A></TD>' +
	'</TR>' + '</TABLE>';
      document.write (formFieldHTML);
    } else {
      var formFieldHTML =
	'<INPUT TYPE="text" NAME="' + FieldName + '" VALUE="' + FieldValue +
	'" SIZE="10" MAXLENGTH="10" onChange="FSfncCheckDate(this,\'' +
	LangID + '\')" STYLE="width:' + FieldWidth + 'px; height:22px">';
      document.write (formFieldHTML);
    }
  }

