/*http://www.nsftools.com/tips/NotesTips.htm#datepicker  http://www.nsftools.com*/

var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";
var dayArrayShort = new Array('Mo','Tu','We','Th','Fr','Sa','Su');
var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
var today = new Date();
var _selectedDate;
var _which
function displayDatePicker(dateFieldName,which){
  var targetDateField = document.getElementsByName(dateFieldName).item(0); 
  var displayBelowThisObject = targetDateField;
  var x = displayBelowThisObject.offsetLeft;
  var y = displayBelowThisObject.offsetTop+displayBelowThisObject.offsetHeight;
  var parent = displayBelowThisObject;
  while (parent.offsetParent) {
    parent = parent.offsetParent;
    x += parent.offsetLeft;
    y += parent.offsetTop ;
  } 
  _which = (which==0) ? "st":"en";
  drawDatePicker(targetDateField, x, y);
}


function drawDatePicker(targetDateField, x, y){
  eval("var dd = document.search.day"+_which+".value;");
  eval("var my = (document.search.mnth"+_which+".value).split('/');");
  dt = new Date(my[1]+"/"+my[0]+"/"+dd);
    
  if(!document.getElementById(datePickerDivID)) {
    var newNode = document.createElement("div");
    newNode.setAttribute("id", datePickerDivID);
    newNode.setAttribute("class", "dpDiv");
    newNode.setAttribute("style", "visibility: hidden;");
    document.body.appendChild(newNode);
  } 
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.position = "absolute";
  pickerDiv.style.left = x + "px";
  pickerDiv.style.top = y + "px";
  pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
  pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
  pickerDiv.style.zIndex = 10000;
  _selectedDate = dt;
  refreshDatePicker(targetDateField.name,dt.getFullYear(),dt.getMonth(),dt.getDate());
  // refreshDatePicker(dateFieldName,year,month,day,which);
}


function daysInMonth(month,year){var dd=new Date(year,month,0);return dd.getDate();}

function refreshDatePicker(dateFieldName,year,month,day){
  var thisDay = new Date();

  if((month>=0)&&(year>0)) {
    day = new Date(year,month,day).getDate();
    thisDay = new Date(year,month,1);    
  }else{
    day = thisDay.getDate();
    thisDay.setDate(1);
  }

  var prevDay = new Date(thisDay.getFullYear(),thisDay.getMonth(),1);  
  var crlf = "\r\n";
  var TABLE = "<table cols=7 class='dpTable'>" + crlf;
  var xTABLE = "</table>" + crlf;
  var TR = "<tr class='dpTR'>";
  var TR_title = "<tr class='dpTitleTR'>";
  var TR_days = "<tr class='dpDayTR'>";
  var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
  var xTR = "</tr>" + crlf;
  var TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' ";
  var TDwknd = "<td class='dpTD weekend' onMouseOut='this.className=\"dpTD weekend\";' onMouseOver=' this.className=\"dpTDHover\";' ";
  var TDLeadTrailWknd = "<td class='leadTrail weekend' onMouseOut='this.className=\"leadTrail weekend\";' onMouseOver=' this.className=\"dpTDHover\";' ";
  var TDLeadTrail = "<td class='leadTrail' onMouseOut='this.className=\"leadTrail\";' onMouseOver=' this.className=\"dpTDHover\";' ";
  var TD_title = "<td colspan=5 class='dpTitleTD'>";
  var TD_buttons = "<td class='dpButtonTD'>";
  var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD'>";
  var TD_days = "<td class='dpDayTD'>";
  var TD_selected = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' ";
  var xTD = "</td>" + crlf;
  var DIV_title = "<div class='dpTitleText'>";
  var DIV_selected = "<div class='dpDayHighlight'>";
  var xDIV = "</div>";
  var html = TABLE;
 
  html += TR_title;
  if(thisDay.getFullYear()==today.getFullYear()){
    if(thisDay.getMonth() > today.getMonth()) html += TD_buttons+getButtonCode(dateFieldName,thisDay,-1,"&laquo;")+xTD;
    else html += TD_buttons+"&#xa0;"+xTD;
  }else{
    html += TD_buttons+getButtonCode(dateFieldName,thisDay,-1,"&laquo;")+xTD;
  }
  
  //else if(thisDay.getFullYear()==today.getFullYear()) ;
  //else html += TD_buttons+"&#xa0;"+xTD;
  
  html += TD_title+DIV_title+monthArrayLong[ thisDay.getMonth()]+" "+thisDay.getFullYear()+xDIV+xTD;
  html += TD_buttons+getButtonCode(dateFieldName,thisDay,1,"&raquo;")+xTD;
  html += xTR;
  html += TR_days;
  
  for(i=0;i<dayArrayShort.length;i++) html += TD_days+dayArrayShort[i]+xTD;
  
  html += xTR;
  html += TR;
 
  // leading blanks
  var top = daysInMonth(prevDay.getMonth(),prevDay.getFullYear());  
  var blanken;
  if((thisDay.getDay()-1)<0) blanken=6;
  else blanken = thisDay.getDay()-1; 
  var prevst = top-(blanken-1);
  var blankst = 0;
  prevDay = new Date(thisDay.getFullYear(),thisDay.getMonth()-1,prevst);
  for(i=prevst;i<=top;i++){
    TD_onclick = " onclick=\"updateDateField('"+dateFieldName+"','"+getDateString(prevDay)+"');\">";
    if((prevDay.getMonth()==today.getMonth()-1) && (prevDay.getFullYear()==today.getFullYear())){
      if(prevDay.getDay()==0 || prevDay.getDay()==6) html += "<td class='leadTrail weekend'><s>"+i+"</s>"+xTD;
      else html += "<td class='leadTrail'><s>"+i+"</s>"+xTD;
    }else if(prevDay.getDay()==0 || prevDay.getDay()==6){
      html += TDLeadTrailWknd+TD_onclick+i+xTD;
    }else html += TDLeadTrail+TD_onclick+i+xTD;
    prevDay.setDate(prevDay.getDate()+1);
  }

  // days of the month
  do{    
    dayNum = thisDay.getDate();
    TD_onclick = " onclick=\"updateDateField('"+dateFieldName+"', '"+getDateString(thisDay)+"');\">";    
    if((thisDay.getMonth()==today.getMonth()) && (thisDay.getDate()<today.getDate()) && (thisDay.getFullYear()==today.getFullYear())){      
      if(thisDay.getDay()==0 || thisDay.getDay()==6) html += "<td class='leadTrail weekend'><s>"+dayNum+"</s>"+xTD;
      else html += "<td class='leadTrail'><s>"+dayNum+"</s>"+xTD;      
    }else if((thisDay.getMonth()==_selectedDate.getMonth()) && (thisDay.getDate()==_selectedDate.getDate()) && (thisDay.getFullYear()==_selectedDate.getFullYear())){               
      html += TD_selected+TD_onclick+DIV_selected+dayNum+xDIV+xTD;      
    }else if(thisDay.getDay()==0 || thisDay.getDay()==6){    
      html += TDwknd+TD_onclick+dayNum+xTD;      
    }else{    
      html += TD+TD_onclick+dayNum+xTD;      
    }
    
    if(thisDay.getDay()==0) html += xTR+TR;    
    thisDay.setDate(thisDay.getDate()+1);
    
  }while(thisDay.getDate()>1);
 
  // trailing blanks
  var bottom = thisDay.getDay();
  top = 7;
  if(bottom!=1 && bottom !=0){
    count=1;
    for(i=bottom;i<=top;i++){
      TD_onclick = " onclick=\"updateDateField('"+dateFieldName+"', '"+getDateString(thisDay)+"');\">";    
      if(thisDay.getDay()==0 || thisDay.getDay()==6){
        html += TDLeadTrailWknd+TD_onclick+count+xTD;
      }else html += TDLeadTrail+TD_onclick+count+xTD;
      thisDay.setDate(thisDay.getDate()+1);
      count++;
    }
  }else if(bottom==0){
    TD_onclick = " onclick=\"updateDateField('"+dateFieldName+"', '"+getDateString(thisDay)+"');\">";
    thisDay.setDate(thisDay.getDate()+1);
    html += TDLeadTrailWknd+TD_onclick+"1"+xTD; 
  }
  html += xTR;
  html += TR_todaybutton + TD_todaybutton;
  html +=  "<button class='dpTodayButton' onClick=\"updateDateField('"+dateFieldName+"','');\">x</button>";
  html += xTD + xTR;
  html += xTABLE;
  
  document.getElementById(datePickerDivID).innerHTML = html;
  adjustiFrame();
}


function getButtonCode(dateFieldName,dateVal,adjust,label){
  var newMonth = (dateVal.getMonth()+adjust)%12;
  var newYear = dateVal.getFullYear()+parseInt((dateVal.getMonth()+adjust)/12);
  if (newMonth < 0) {
    newMonth += 12;
    newYear += -1;
  }
  return("<button class='dpButton' onClick='refreshDatePicker(\""+dateFieldName+"\", "+newYear+", "+newMonth+",\"\");'>" + label + "</button>");
}


function getDateString(dateVal){
  var dayString = "00" + dateVal.getDate();
  var monthString = "00" + (dateVal.getMonth()+1);
  dayString = dayString.substring(dayString.length - 2);
  monthString = monthString.substring(monthString.length - 2); 
  return(monthString+"/"+dayString+"/"+dateVal.getFullYear());
}


function updateDateField(dateFieldName, dateString){
  if(dateString!=""){
    var targetDateField = document.getElementsByName(dateFieldName).item(0);
    var dd = dateString.split("/");
    eval("document.search.day"+_which+".selectedIndex=(parseInt(dd[1],10)-1);");
    eval("var tmp = document.search.mnth"+_which+";");
    var i = tmp.length-1;
    do{if(tmp[i].value==(dd[0]+"/"+dd[2])) tmp.selectedIndex=i;}while(--i);
    
    
    var stDay = document.search.dayst.selectedIndex;
    var enDay = document.search.dayen.selectedIndex;
    var stMnth = document.search.mnthst.selectedIndex;
    var enMnth = document.search.mnthen.selectedIndex;  
    
    //if(which=="st")
    //if(document.search.mnthen.selectedIndex<=document.search.mnthst.selectedIndex){
    //  document.search.mnthen.selectedIndex=(document.search.mnthst.selectedIndex);
    //  if(document.search.dayen.selectedIndex<=document.search.dayst.selectedIndex){
    //    document.search.dayen.selectedIndex=(document.search.dayst.selectedIndex+1);
    //  }
    //}
  }
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.visibility = "hidden";
  pickerDiv.style.display = "none";
  adjustiFrame();
}


function adjustiFrame(pickerDiv, iFrameDiv){
  var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
  if(is_opera) return;  
  try {
    if (!document.getElementById(iFrameDivID)) {
      var newNode = document.createElement("iFrame");
      newNode.setAttribute("id", iFrameDivID);
      newNode.setAttribute("src", "javascript:false;");
      newNode.setAttribute("scrolling", "no");
      newNode.setAttribute ("frameborder", "0");
      document.body.appendChild(newNode);
    }
    if(!pickerDiv) pickerDiv = document.getElementById(datePickerDivID);
    if(!iFrameDiv) iFrameDiv = document.getElementById(iFrameDivID);    
    try {
      iFrameDiv.style.position = "absolute";
      iFrameDiv.style.width = pickerDiv.offsetWidth;
      iFrameDiv.style.height = pickerDiv.offsetHeight ;
      iFrameDiv.style.top = pickerDiv.style.top;
      iFrameDiv.style.left = pickerDiv.style.left;
      iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
      iFrameDiv.style.visibility = pickerDiv.style.visibility ;
      iFrameDiv.style.display = pickerDiv.style.display;
    } catch(e) {
    } 
  } catch (ee) {
  } 
}

function catchUp(){
  document.search.mnthen.selectedIndex = document.search.mnthst.selectedIndex;
}