// $Id: //depot/wizard2/webdocs/localhost/common/calendar.js#7 $
// $DateTime: 2002/01/14 16:30:08 $

var calDoc;
var calWin;
var today = new Date();
var dateNow = today.getDate();
var monthNow = today.getMonth();
var yearNow = today.getFullYear();
var monthName = new Array("January","February","March","April","May","June","July","August","September","October","November","December")

var btnMargin =
  navigator.userAgent.indexOf("Firefox") > 0 ? "8" :
    (navigator.userAgent.indexOf("Opera") > 0 ? "12" : "0");
    
function setUpCalendar(textCtrl, format, past) 
{
    calWin.ctlToPlaceValue    = textCtrl
    calWin.dateFormat = format;
    if (calWin.dateFormat == null)
    {
        calWin.dateFormat = "m/d/yyyy";
    }

    formatChar = " "
    aFormat = calWin.dateFormat.split(formatChar)
    if (aFormat.length<3)
    {
        formatChar = "/"
        aFormat = calWin.dateFormat.split(formatChar)
        if (aFormat.length<3)
        {
            formatChar = "-"
            aFormat = calWin.dateFormat.split(formatChar)
            if (aFormat.length<3)
            {
                // invalid date    format
                formatChar=""
            }
        }
    }

    tokensChanged = 0
    if ( formatChar != "" )
    {
        // use user's date
        aData = textCtrl.value.split(formatChar)
        for (i=0;i<3;i++)
        {
            if ((aFormat[i]=="d") || (aFormat[i]=="dd"))
            {
                calWin.dateSelected = parseInt(aData[i], 10);
                tokensChanged ++;
            }
            else if ((aFormat[i]=="m") || (aFormat[i]=="mm"))
            {
                calWin.monthSelected =    parseInt(aData[i], 10) - 1;
                tokensChanged ++;
            }
            else if (aFormat[i]=="yyyy")
            {
                calWin.yearSelected = parseInt(aData[i], 10);
                if (calWin.yearSelected <= 20)
                {
                    calWin.yearSelected += 2000;
                }
                else if (calWin.yearSelected < 100)
                {
                    calWin.yearSelected += 1900;
                }
                tokensChanged ++;
            }
            else if (aFormat[i]=="mmm")
            {
                for (j=0; j<12; j++)
                {
                    if (aData[i]==monthName[j])
                    {
                        calWin.monthSelected=j;
                        tokensChanged ++;
                    }
                }
            }
        }
    }

    if ((tokensChanged!=3)||isNaN(calWin.dateSelected)||isNaN(calWin.monthSelected)||isNaN(calWin.yearSelected))
    {
        // field has no date, default to now
        calWin.dateSelected = dateNow;
        calWin.monthSelected = monthNow;
        calWin.yearSelected = yearNow;
    }
    else
    {
        // field has a date, select it
        calWin.odateSelected=calWin.dateSelected;
    }
    
    // set the initial month and year
    calWin.omonthSelected=calWin.monthSelected;
    calWin.oyearSelected=calWin.yearSelected;
}

function showCalendar(textCtrl, format, past, alignCtrl)
{
  var leftpos;
  var toppos;
  var alignOn = textCtrl;
  calDoc = document.getElementById("calendarFrame");
  calWin = window.frames.calendarFrame;
  calWin.allowPast = past;

  // check if calendar loaded
  if(null==calWin.pageLoaded || false==calWin.pageLoaded)
  {
    alert("Unable to load popup calendar.\r\nPlease reload the page.");
    return;
  }
  
  // set position
  if (alignCtrl != null)
  {
      alignOn = alignCtrl;
  }
  leftpos = alignOn.offsetLeft;
  toppos = alignOn.offsetTop;

  // frame visibility
  if ("block" == calDoc.style.display)
  {
    // hide it
    calDoc.style.display = "none";
  }
  else
  {
    // set up the calendar
    setUpCalendar(textCtrl, format, past);
    
    // construct the calendar
    calWin.constructCalendar();

    // make it visible
    aTag = alignOn;
    do {
        aTag = aTag.offsetParent;
        leftpos    += aTag.offsetLeft;
        toppos += aTag.offsetTop;
    } while(aTag.tagName!="BODY");

    var calHeight = 165;
    var docHeight;
    var st;
    if (document.compatMode=="CSS1Compat")
    {
        docHeight = document.documentElement.clientHeight + document.documentElement.scrollTop;
        st = document.documentElement.scrollTop;
    }
    else
    {
        docHeight = document.body.clientHeight + document.body.scrollTop;
        st = document.body.scrollTop;
    }
    
    if (toppos-calHeight >= st && toppos+alignOn.offsetHeight+calHeight > docHeight)
    {
        toppos -= calHeight + 2;
    }
    else
    {        
        toppos += alignOn.offsetHeight + 2;
    }
    calDoc.style.left = leftpos + "px";
    calDoc.style.top = toppos + "px";
    calDoc.style.display = "block"
  }
}

function calendarButton(parentDoc, textCtrl, showPast, dateFormat)
{
    var format = "m/d/yyyy";
    var past = "false";
     
    if (dateFormat != null)
    {
        format = dateFormat;
    }
    if (showPast)
    {
        past = "true";
    }
    parentDoc.write("<a href='javascript:showCalendar(" + 
                    textCtrl + ", \"" + format + "\", " + past + 
                    ")'><img src='/webshare/images/calButton.gif' width='36' height='21' border='0' align='absmiddle' alt='Pop Up Calendar' style='margin-bottom: " + btnMargin + "px;'></a>");
}
