
// Start of popup calendar script *********************************************
var ppcDF = "m/D/Y";
var ppcMN = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var ppcWN = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var ppcER = new Array(4);
ppcER[0] = "Required DHTML functions are not supported in this browser.";
ppcER[1] = "Target form field is not assigned or not accessible.";
ppcER[2] = "Sorry, the chosen date is not acceptable. Please read instructions on the page.";
ppcER[3] = "Unknown error occured while executing this script.";
var ppcUC = false;
var ppcUX = 4;
var ppcUY = 4;

var ppcIE=(navigator.appName == "Microsoft Internet Explorer");
var ppcFF=((ppcIE == false) && (!document.layers) && (navigator.appName == "Netscape"));//FF
var ppcNN=((navigator.appName == "Netscape")&&(document.layers));
var ppcDom = document.getElementById;
var ppcTT="<table align=\"center\" cellspacing=\"1\" cellpadding=\"2\">\n";
var ppcCD=ppcTT;
var ppcFT="<font face=\"MS Sans Serif, sans-serif\" size=\"1\" color=\"#000000\">";
var ppcTI=false;var ppcOpen=false;var ppcDateSelect=null;var ppcDateControl=null;var ppcRL=null;var ppcXC=null;var ppcYC=null;
var ppcML=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var ppcDays=new Array("Su","Mo","Tu","We","Th","Fr","Sa");
var ppcMonths=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var ppcEnd=[2030,12,31];  // calendar date range end at [Year,Month,Date]
var ppcNow=new Date();
var ppcPtr=new Date();
if (ppcNN)
{
  window.captureEvents(Event.RESIZE);
  window.onresize = restoreLayers;
  document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
  document.onmousedown = recordXY;
  document.onmouseup = confirmXY;
}
/*
else if (ppcIE)
{
  document.onmousedown=function(e){ var n = self.event.srcElement.name; if (n!="popcal") hideCalendar(); }
}
*/

function restoreLayers(e) {
 if (ppcNN) {
  with (window.document) {
   open("text/html");
   write("<html><head><title>Restoring the layer structure...</title></head>");
   write("<body bgcolor=\"#FFFFFF\" onLoad=\"history.go(-1)\">");
   write("</body></html>");
   close();}}}

function recordXY(e)
{
 if (ppcNN)
 {
  ppcXC = e.x;
  ppcYC = e.y;
  hideCal(e);
  document.routeEvent(e);}
}

function hideCal(e)
{
  var n=!e?self.event.srcElement.name:e.target.name;
  if (document.layers)
  {
    if (n!="popcal") hideCalendar();
  }
  else if (n!="popcal") hideCalendar();
  yesSelects();
}

function parseDate(ds)
{
  if (ds)
  {
    var pd=ds.split('/');
    if (pd.length==3)
    {
      var td=new Date(pd[2],pd[0]-1,pd[1]);
      if (isNaN(td)||td.getMonth()!=pd[0]-1) return null;
      else return pd;
    }
    else return null;
  }
  else return null;
}

function confirmXY(e)
{
  if (ppcNN)
  {
    ppcXC = (ppcXC == e.x) ? e.x : null;
    ppcYC = (ppcYC == e.y) ? e.y : null;
    document.routeEvent(e);
  }
}
//document.onmousedown = hideCalendar;
var ppfnReturn;
function getCalendarFor(target,rules,fnReturn)
{
var obj;
  ppcDateControl = target;
  ppcRL = rules;
  ppfnReturn = fnReturn;

  if (!ppcOpen)
  {
    noSelects();
    if ((ppcDateControl != null)&&(ppcDateControl))
    {
      //see if we have a date in the target
      ppcDateSelect = parseDate(ppcDateControl.value);
      if (ppcDateSelect == null)
      {
        ppcDateControl.value="";
        ppcDateSelect = [0,0,0];
        setCalendar();
      }
      else
      {
        ppcDateControl.value=dateFormat(ppcDateSelect[2],ppcDateSelect[0],ppcDateSelect[1]);
        setCalendar(ppcDateSelect[2],(ppcDateSelect[0]-1));
      }

      //Postition and show the caledar
      if (ppcIE)
      {
        var ieCSS = (document.compatMode) ? document.compatMode ==  "CSS1Compat" : false;
        var canvas = ieCSS ? document.documentElement : document.body;

        obj = document.getElementById('PopUpCalendar');
        var p = fGetXY(ppcDateControl);
        obj.style.left = p[0] + 'px'; // document.body.scrollLeft+event.clientX;

        if (obj.offsetHeight + p[1] > (canvas.clientHeight + canvas.scrollTop - 5))
        	obj.style.top = p[1] - obj.offsetHeight + 'px';
        else
        	obj.style.top = p[1] + ppcDateControl.offsetHeight + 'px'; //document.body.scrollTop+event.clientY;

        obj.style.visibility = "visible";
        ppcOpen = true;
      }
      //FF
      else if (ppcFF)
      {
        obj = document.getElementById('PopUpCalendar');

        var p = fGetXY(ppcDateControl);
        obj.style.left = p[0] + 'px';
        if (obj.offsetHeight + p[1] > (document.body.clientHeight + document.body.scrollTop - 5))
        	obj.style.top = p[1] - obj.offsetHeight + 'px';
        else
        	obj.style.top = p[1] + ppcDateControl.offsetHeight + 'px';

        obj.style.visibility = "visible";
        ppcOpen = true;
      }
      else if (ppcNN)
      {
        obj = document.layers['PopUpCalendar'];
        obj.left = ppcXC
        obj.top  = ppcYC
        obj.visibility = "show";
        ppcOpen = true;
      }

      else {showError(ppcER[0]);}
    }
    else {showError(ppcER[1]);}
  }
  else {hideCalendar();}
}

function fGetXY(obj)
{
  var p=[2,0];
  while(obj)
  {
    tn=obj.tagName.toUpperCase();
    p[0]+=obj.offsetLeft-(tn=="DIV"&&obj.scrollLeft?obj.scrollLeft:0);
    p[1]+=obj.offsetTop-(tn=="DIV"&&obj.scrollTop?obj.scrollTop:0);
    if (tn=="BODY") break;
    obj=obj.offsetParent;
  }
  return p;
}

function switchMonth(param)
{
  var tmp = param.split("|");
  setCalendar(tmp[1],tmp[0]);
}

function moveMonth(dir)
{
var selMonth = null;
var selYear = null;
var limit = false;
var tmp, dptrYear, dptrMonth;

  if (ppcFF || document.getElementById)
  {
    selMonth = document.getElementById("popCalMonth");
    selYear = document.getElementById("popCalYear");
  }
  else if (ppcIE)
  {
    selMonth = document.ppcMonthList.sItem;
    selYear = document.ppcMonthList.sYear;
  }
  else if (ppcNN)
  {
    selMonth = document.layers['PopUpCalendar'].document.layers['monthSelector'].document.ppcMonthList.sItem;
    selYear = document.layers['PopUpCalendar'].document.layers['monthSelector'].document.ppcMonthList.sYear;
  }
  else {showError(ppcER[0]);}
  
  if (selMonth != null)
  {
    if (dir.toLowerCase() == "back")
    {
      if (selMonth.selectedIndex > 0) {setCalendar(selYear[selYear.selectedIndex].value, (selMonth.selectedIndex -1));}
      else {setCalendar(selYear[selYear.selectedIndex - 1].value, 11);}
    }
    else
    {
      if (selMonth.selectedIndex > 10) { setCalendar(selYear[selYear.selectedIndex + 1].value, 0);}
      else {setCalendar(selYear[selYear.selectedIndex].value, (selMonth.selectedIndex + 1));}
    }
  }
}

function selectDate(param)
{
  var arr   = param.split("|");
  var year  = arr[0];
  var month = arr[1];
  var date  = arr[2];
  var ptr = parseInt(date);
  ppcPtr.setDate(ptr);
  if ((ppcDateControl != null)&&(ppcDateControl))
  {
    if (validDate(date))
    {
      ppcDateControl.value = dateFormat(year,(parseInt(month) + 1),date);
      ppcDateControl.focus();
      hideCalendar();
      if (ppfnReturn) eval(ppfnReturn);
    }
    else
    {
      showError(ppcER[2]);
      if (ppcTI) {clearTimeout(ppcTI);ppcTI = false;}
    }
  }
  else
  {
    showError(ppcER[1]);
    hideCalendar();
  }
}

function setCalendar(year,month) {
  if (year  == null) {year = ppcNow.getFullYear();}
  if (year < 1900)  { year += 1900; }//FF
  if (month == null) {month = ppcNow.getMonth();}
  if (month == 1) {ppcML[1]  = (isLeap(year)) ? 29 : 28;}
  setSelectList(year,month);
  ppcPtr.setYear(year);
  ppcPtr.setMonth(month);
  ppcPtr.setDate(1);
  updateContent();
}

function updateContent() {
  generateContent();
  if (ppcIE) {document.getElementById('monthDays').innerHTML = ppcCD;}
  //FF
  else if (ppcFF)
  {
    document.getElementById("monthDays").innerHTML = ppcCD;
  }
  else if (ppcNN)
  {
    with (document.layers['PopUpCalendar'].document.layers['monthDays'].document)
    {
      open("text/html");
      write("<html>\n<head>\n<title>DynDoc</title>\n</head>\n<body bgcolor=\"#FFFFFF\">\n");
      write(ppcCD);
      write("</body>\n</html>");
      close();
    }
  }
 else {showError(ppcER[0]);}
 ppcCD = ppcTT;
}

function generateContent()
{
  var year  = getFullYear(ppcPtr);
  if (year < 1900)  { year += 1900; }//FF
  var month = ppcPtr.getMonth();
  var date  = 1;
  var day   = ppcPtr.getDay();
  var len   = ppcML[month];
  var bgr,cnt,tmp = "";
  var j,i = 0;

  //Week header
  ppcCD += "<tr><td>";
  ppcCD += "<div unselectable='on' style='overflow: visible; visibility:inherit; background-color: #778899; border: 2px ridge #FFFFFF; width:161px;'>";
  ppcCD += ppcTT + "<tr>";

  for (i = 0; i < 7; i++)
  {
    ppcCD += "<td align='center'><div unselectable='on' style='position:relative; height:10px; width:18px; background: #778899; font: bold 7pt Verdana; cursor: default; color: white; text-align: center'>" + ppcDays[i] + "</div</td>";
  }
  ppcCD += "</tr>";

  for (j = 0; j < 7; ++j)
  {
    if (date > len) {break;}
    for (i = 0; i < 7; ++i)
    {
      bgr = ((i == 0)||(i == 6)) ? "#99ccff" : "#e5e5e5";
      if (((j == 0)&&(i < day))||(date > len)) {tmp  += makeCell(bgr,year,month,0);}
      else {tmp  += makeCell(bgr,year,month,date);++date;}
    }
    ppcCD += "<tr>\n" + tmp + "</tr>\n";tmp = "";
  }
  ppcCD += "</table></div>" + ppcTT;
  ppcCD += "<tr><td colspan=\"7\"><img src=\"../images/1ptrans.gif\" height=\"1\" width=\"10\"></td></tr></table>\n";
}

function makeCell(bgr,year,month,date)
{
  var param = "\'"+year+"|"+month+"|"+date+"\'";
  var bIsSelected = ((ppcDateSelect[2] == year) && ((parseInt(ppcDateSelect[0])) == (parseInt(month)+1)) && (ppcDateSelect[1] == date));
  var bIsToday = ((ppcNow.getDate() == date)&&(ppcNow.getMonth() == month)&&(getFullYear(ppcNow) == year));
  var bgr = (bIsToday) ? "#FFFFFF" : bgr;
  var td1 = "<td align=\"center\" bgcolor=\"" + ((bIsSelected) ? "#FF0000" : bgr) + "\">";
  //var td2 = (ppcIE) ? "</font></div></td>\n" : "</font></a></td>\n";
  var td2 = (ppcIE || ppcFF) ? "</font></div></td>\n" : "</font></a></td>\n";//FF
  var evt = "onmouseover=\"this.style.backgroundColor='yellow'\" onmouseout=\"this.style.backgroundColor=\'"+bgr+"\'\" onmouseup=\"selectDate("+param+")\" ";
  var ext = "<div unselectable='on' class=\"CalCell\" bgcolor=\""+bgr+"\" Style=\"cursor:hand;position:relative;height:14px;width:18px;background-color:" + bgr + "\" ";
  var lck = "<div unselectable='on' class=\"CalCell\" bgcolor=\""+bgr+"\" Style=\"cursor:default;position:relative;height:14px;width:18px;background-color:" + bgr + "\">";

  var lnk = "<a href=\"javascript:selectDate("+param+")\" onMouseOver=\"window.status=\' \';return true;\">";
  var cellValue = (date != 0) ? date+"" : "&nbsp;";
  if (bIsToday) {cellValue = "<b>"+cellValue+"</b>";}

  var cellCode = "";
  if (date == 0)
  {
    //if (ppcIE) {cellCode = td1 + lck + ppcFT + cellValue + td2;}
    if (ppcIE || ppcFF) {cellCode = td1 + lck + ppcFT + cellValue + td2;}//FF
    else {cellCode = td1 + ppcFT + cellValue + td2;}
  }
  else
  {
    //if (ppcIE) {cellCode = td1 + ext + evt + ">" + ppcFT + cellValue + td2;}
    if (ppcIE || ppcFF) {cellCode = td1 + ext + evt + ">" + ppcFT + cellValue + td2;}//FF
    else
    {
      if (date < 10) {cellValue = "&nbsp;" + cellValue + "&nbsp;";}
      cellCode = td1+">"+lnk+ppcFT+cellValue+td2;
    }
  }
 return cellCode;
}

function setSelectList(year,month)
{
 var i = 0;
 var no;
 var selMonth, selYear;

  if (ppcFF || document.getElementById)
  {
    selMonth = document.getElementById("popCalMonth");
    selYear = document.getElementById("popCalYear");
  }
  else if (ppcIE)
  {
    selMonth = document.ppcMonthList.sItem;
    selYear = document.ppcMonthList.sYear;
  }
  else if (ppcNN)
  {
    selMonth = document.layers['PopUpCalendar'].document.layers['monthSelector'].document.ppcMonthList.sItem;
    selYear = document.layers['PopUpCalendar'].document.layers['monthSelector'].document.ppcMonthList.sYear;
  }

  selMonth.length = 0;
  selYear.length = 0;

  while (i < 12)
  {
    no = new Option();
    no.value = i;
    no.text  = ppcMN[i];
    selMonth[i] = no;
    if (i== month) {selMonth.options[i].selected = true;}
    i++;
  }

  i = 0;
  year = year-5;
  while (i < 20)
  {
    no = new Option();
    no.value = year;
    no.text  = year;
    selYear[i] = no;
    if (i == 5) {selYear.options[i].selected = true;}
    i++;
    year++;
  }
}

function hideCalendar()
{
  if (ppcIE) {document.getElementById('PopUpCalendar').style.visibility = "hidden";}
  else if (ppcFF) { document.getElementById("PopUpCalendar").style.visibility = "hidden"; }//FF
  else if (ppcNN) {document.layers['PopUpCalendar'].visibility = "hide";window.status = " ";}
  else {/* NOP */}

  ppcTI = false;
  ppcDateControl = null;
  ppcOpen = false;

  yesSelects();
}

function showError(message) { window.alert("[ PopUp Calendar ]\n\n" + message); }

function isLeap(year) {
 if ((year%400==0)||((year%4==0)&&(year%100!=0))) {return true;}
 else {return false;}}

function getFullYear(obj) {
 if (ppcNN) {return obj.getYear() + 1900;}
 else {return obj.getYear();}}

function validDate(date)
{
  var reply = true;
  if (ppcRL == null) {/* NOP */}
  else
  {
    var arr = ppcRL.split(":");
    var mode = arr[0];
    var arg  = arr[1];
    var key  = arr[2].charAt(0).toLowerCase();
    if (key != "d")
    {
      var day = ppcPtr.getDay();
      var orn = isEvenOrOdd(date);
      reply = (mode == "[^]") ? !((day == arg)&&((orn == key)||(key == "a"))) : ((day == arg)&&((orn == key)||(key == "a")));
    }
    else {reply = (mode == "[^]") ? (date != arg) : (date == arg);}
  }
 return reply;
}

function isEvenOrOdd(date)
{
  if (date - 21 > 0) {return "e";}
  else if (date - 14 > 0) {return "o";}
  else if (date - 7 > 0) {return "e";}
  else {return "o";}
}

function dateFormat(year,month,date)
{
  if (ppcDF == null) {ppcDF = "m/d/Y";}
  var day = ppcPtr.getDay();
  var crt = "";
  var str = "";
  var chars = ppcDF.length;
  for (var i = 0; i < chars; i++)
  {
    crt = ppcDF.charAt(i);
    switch (crt)
    {
      case "M": str += ppcMN[month]; break;
      case "m": str += month; break;
      case "Y": str += year; break;
      case "y": str += year.substring(2); break;
      case "D": str += date; break;
      case "d": str += ((ppcDF.indexOf("m")!=-1)&&(date<10)) ? ("0"+date) : date; break;
      case "W": str += ppcWN[day]; break;
      default: str += crt;
    }
  }
 return unescape(str);
}

/* Begin Writing popCal */
//if (document.all || document.getElementById)
//FF
if (document.all || document.getElementById || ppcFF)
{
  document.writeln("<div id=\"PopUpCalendar\" style=\"position:absolute; left:0px; top:0px; z-index:100; width:174px; overflow: visible; visibility: hidden; background-color: #6699cc; border: 2px ridge #ffffff;\" onMouseOver=\"if(ppcTI){clearTimeout(ppcTI);ppcTI=false;}\" onMouseOut=\"ppcTI=setTimeout(\'hideCalendar()\',500)\">");
  document.writeln("<div id=\"monthSelector\" style=\"overflow: visible; visibility:inherit\">");
}
else if (document.layers)
{
  document.writeln("<layer id=\"PopUpCalendar\" pagex=\"0\" pagey=\"0\" width=\"176\" height=\"200\" z-index=\"100\" visibility=\"hide\" bgcolor=\"#FFFFFF\" onMouseOver=\"if(ppcTI){clearTimeout(ppcTI);ppcTI=false;}\" onMouseOut=\"ppcTI=setTimeout('hideCalendar()',500)\">");
  document.writeln("<layer id=\"monthSelector\" left=\"0\" top=\"0\" width=\"170\" height=\"27\" z-index=\"9\" visibility=\"inherit\">");
}
else
{
 document.writeln("<p><font color=\"#FF0000\"><b>Error ! The current browser is either too old or too modern (using DOM document structure).</b></font></p>");
}

var ppcarCal = new Array(16);
ppcarCal[0] = '<table cellspacing="1" cellpadding="1" align="center" width="100%" id="Table1">';
ppcarCal[1] = '<form name="ppcMonthList" id="ppcMonthList">';
ppcarCal[2] = '<tr>';
ppcarCal[3] = '<td unselectable="on" align="right">';
ppcarCal[4] = '&nbsp;<input type="button" value="<" onclick="moveMonth(\'Back\');" style="width: 20px; height: 22px" id="Button1" name="Button1"/>';
ppcarCal[5] = '</td>';
ppcarCal[6] = '<td unselectable="on" align="center" width="100%">';

if (ppcFF || document.getElementById) { ppcarCal[7] = '<select id="popCalMonth" name="sItem" onmouseout="if(ppcIE){window.event.cancelBubble = true;}" onchange="switchMonth(this.options[this.selectedIndex].value + \'|\' + document.getElementById(\'popCalYear\')[document.getElementById(\'popCalYear\').selectedIndex].value)"'; }
else { ppcarCal[7] = '<select id="popCalMonth" name="sItem" onmouseout="if(ppcIE){window.event.cancelBubble = true;}" onchange="switchMonth(this.options[this.selectedIndex].value + \'|\' + document.ppcMonthList.sYear[document.ppcMonthList.sYear.selectedIndex].value)"'; }

ppcarCal[8] = 'style="font-family: MS Sans Serif, sans-serif; font-size: 9pt" id="sItem"></select>';

if (ppcFF || document.getElementById) { ppcarCal[9] = '<select id="popCalYear" name="sYear" onmouseout="if(ppcIE){window.event.cancelBubble = true;}" onchange="switchMonth(document.getElementById(\'popCalMonth\')[document.getElementById(\'popCalMonth\').selectedIndex].value + \'|\' + this.options[this.selectedIndex].value)"'; }
else { ppcarCal[9] = '<select id="popCalYear" name="sYear" onmouseout="if(ppcIE){window.event.cancelBubble = true;}" onchange="switchMonth(document.ppcMonthList.sItem[document.ppcMonthList.sItem.selectedIndex].value + \'|\' + this.options[this.selectedIndex].value)"'; }

ppcarCal[10] = 'style="font-family: MS Sans Serif, sans-serif; font-size: 9pt" id="sYear"/>';
ppcarCal[11] = '</td>';
ppcarCal[12] = '<td unselectable="on" align="right">';
ppcarCal[13] = '<input type="button" value=">" onclick="moveMonth(\'Forward\');" style="width: 20px; height: 22px" id="Button2" name="Button1"/>&nbsp;';
ppcarCal[14] = '</td>';
ppcarCal[15] = '</tr>';
ppcarCal[16] = '</form>';
ppcarCal[17] = '</table>';

document.writeln(ppcarCal.join(""));

if (document.all || document.getElementById)
{
  document.writeln("</div>");
  document.writeln("<div id=\"monthDays\" style=\"overflow: visible; visibility:inherit; background-color: #6699cc;\"> </div></div>");
}
else if (document.layers)
{
 document.writeln("</layer>");
 document.writeln("<layer id=\"monthDays\" left=\"0\" top=\"52\" width=\"170\" height=\"17\" z-index=\"8\" bgcolor=\"#FFFFFF\" visibility=\"inherit\"> </layer></layer>");
}
else {/*NOP*/}
