/* automatically generated from calendar.js, do not edit ! */
@"var monthArray = getMonthSelect();\n"
@"var calDateField;\n"
@"var calDate;\n"
@"// innerHTML IS ONLY SUPPORTED BY MSIE...\n"
@"function rewriteLayerWithData(obj,data) {\n"
@"  if (isNav) {\n"
@"    obj.document.clear();\n"
@"    obj.document.write(data);\n"
@"    obj.document.close();\n"
@"  }\n"
@"  if (isIE) {\n"
@"    obj.innerHTML = data;\n"
@"  }\n"
@"  if (usesNavImages) {\n"
@"    document.images['dateFieldFirstImg'].src = dateFieldFirst.src;\n"
@"    document.images['dateFieldPreviousImg'].src = dateFieldPrevious.src;\n"
@"    document.images['dateFieldTodayImg'].src = dateFieldToday.src;\n"
@"    document.images['dateFieldNextImg'].src = dateFieldNext.src;\n"
@"    document.images['dateFieldLastImg'].src = dateFieldLast.src;\n"
@"    document.images['dateFieldCloseImg'].src = dateFieldClose.src;\n"
@"  }\n"
@"}\n"
@"// DETERMINE BROWSER BRAND\n"
@"var isNav = false;\n"
@"var isIE  = false;\n"
@"if (navigator.appName == \"Netscape\") {\n"
@"    isNav = true;\n"
@"}\n"
@"else {\n"
@"    isIE = true;\n"
@"}\n"
@"// PRE-BUILD PORTIONS OF THE CALENDAR WHEN THIS JS LIBRARY LOADS INTO THE BROWSER\n"
@"buildCalParts();\n"
@"// CALENDAR FUNCTIONS BEGIN HERE ---------------------------------------------------\n"
@"// SET THE INITIAL VALUE OF THE GLOBAL DATE FIELD\n"
@"function setDateField(dateField) {\n"
@"    // ASSIGN THE INCOMING FIELD OBJECT TO A GLOBAL VARIABLE\n"
@"    calDateField = dateField;    \n"
@"    // GET THE VALUE OF THE INCOMING FIELD\n"
@"    inDate = dateField.value;\n"
@"    // SET calDate TO THE DATE IN THE INCOMING FIELD OR DEFAULT TO TODAY'S DATE\n"
@"    setInitialDate();\n"
@"}\n"
@"// SET THE INITIAL CALENDAR DATE TO TODAY OR TO THE EXISTING VALUE IN dateField\n"
@"function setInitialDate() {\n"
@"   \n"
@"    // CREATE A NEW DATE OBJECT (WILL GENERALLY PARSE CORRECT DATE EXCEPT WHEN \".\" IS USED AS A DELIMITER)\n"
@"    // (THIS ROUTINE DOES *NOT* CATCH ALL DATE FORMATS, IF YOU NEED TO PARSE A CUSTOM DATE FORMAT, DO IT HERE)\n"
@"    // ADD CUSTOM DATE PARSING HERE\n"
@"    ypos = dateFormat.indexOf('%Y');\n"
@"    inYear = parseInt(inDate.substr(ypos,4));\n"
@"    mpos = dateFormat.indexOf('%m');\n"
@"    if (ypos < mpos) mpos+=2;  // because %Y stands for yyyy, add 2\n"
@"    inMonth = inDate.substr(mpos,2);\n"
@"    if (inMonth.charAt(0) == \"0\") \n"
@"      inMonth = inMonth.substr(1,inMonth.length-1);\n"
@"    inMonth = parseInt(inMonth);\n"
@"    \n"
@"    dpos = dateFormat.indexOf('%d');\n"
@"    if (ypos < dpos) dpos+=2;  // same as mpos\n"
@"    inDay = inDate.substr(dpos,2);\n"
@"    if (inDay.charAt(0) == \"0\") \n"
@"      inDay = inDay.substr(1,inDay.length-1);\n"
@"    inDay = parseInt(inDay);\n"
@"    if ((inYear) && (inMonth) && (inDay)) {\n"
@"        calDate = new Date(inYear,inMonth-1,inDay);\n"
@"    }\n"
@"    else {\n"
@"	calDate = new Date();\n"
@"    }\n"
@"    // KEEP TRACK OF THE CURRENT DAY VALUE\n"
@"    calDay  = calDate.getDate();\n"
@"    // SET DAY VALUE TO 1... TO AVOID JAVASCRIPT DATE CALCULATION ANOMALIES\n"
@"    // (IF THE MONTH CHANGES TO FEB AND THE DAY IS 30, THE MONTH WOULD CHANGE TO MARCH\n"
@"    //  AND THE DAY WOULD CHANGE TO 2.  SETTING THE DAY TO 1 WILL PREVENT THAT)\n"
@"    calDate.setDate(1);\n"
@"}\n"
@"// ENABLE MULTIPLE CALENDAR-USING OBJECTS BY USING VARIABLE calendarDiv;\n"
@"var calendarDiv = false;\n"
@"function toggleCalendar(dateFieldEl,calObj,calFormat) {\n"
@"  if ((calendarDiv) &&  (calendarDiv.id != calObj.id)) {\n"
@"    hideCalendar();\n"
@"  }\n"
@"  calendarDiv = calObj;\n"
@"  \n"
@"  if (isNav) condition = (calendarDiv.visibility == 'show');\n"
@"  if (isIE)  condition = (calendarDiv.style.visibility    == 'visible');\n"
@"  if (condition) {\n"
@"    hideCalendar();\n"
@"  }\n"
@"  else {\n"
@"    var i,j;\n"
@"    var dateField;\n"
@"    for (i = 0; i < document.forms.length; i++) {\n"
@"      for (j = 0; j < document.forms[i].elements.length; j++) {\n"
@"        if (document.forms[i].elements[j].name == dateFieldEl) {\n"
@"          dateField = document.forms[i].elements[j];\n"
@"        }\n"
@"      }\n"
@"    }\n"
@"    dateFormat = calFormat;\n"
@"    showCalendar(dateField);\n"
@"  }\n"
@"}\n"
@"// CAPTURE onMouseMove EVENT IF NETSCAPE FOR POSITIONING calendarDiv\n"
@"if (isNav) {\n"
@"  document.captureEvents( Event.MOUSEMOVE );\n"
@"  document.onmousemove = actPos;\n"
@"}\n"
@"var curScreenPosX;\n"
@"var curScreenPosY;\n"
@"function actPos(e) {\n"
@"  \n"
@"  curScreenPosX = e.pageX + 10;\n"
@"  curScreenPosY = e.pageY;\n"
@"  return true;\n"
@"}\n"
@"function showCalendar(dateField) {\n"
@"    // SET INITIAL VALUE OF THE DATE FIELD AND CREATE TOP AND BOTTOM FRAMES\n"
@"    setDateField(dateField);\n"
@"    writeCalendar();\n"
@"    if (isNav) {\n"
@"      calendarDiv.visibility   = 'show';\n"
@"      calendarDiv.left = curScreenPosX;\n"
@"      calendarDiv.top  = curScreenPosY;\n"
@"    }\n"
@"    if (isIE) {\n"
@"      calendarDiv.style.visibility      = 'visible';\n"
@"    }\n"
@"    return true;\n"
@"}\n"
@"function hideCalendar() {\n"
@"    if (isNav) {\n"
@"      calendarDiv.visibility = 'hide';\n"
@"    }\n"
@"    if (isIE) {\n"
@"      calendarDiv.style.visibility = 'hidden';\n"
@"    }\n"
@"    calendarDiv = false;\n"
@"}\n"
@"// NEW: NO FRAMES ANYMORE, ONE <DIV> INSTEAD\n"
@"function writeCalendar() {\n"
@"  data = buildTopCalFrame() + buildBottomCalFrame();\n"
@"  if (isNav) rewriteLayerWithData(calendarDiv, data);\n"
@"  if (isIE)  rewriteLayerWithData(calendarDiv, data);\n"
@"}\n"
@"// CREATE month/year DISPLAY\n"
@"function buildCalControlMonthYear() {\n"
@"  month = calDate.getMonth();\n"
@"  year  = calDate.getFullYear();\n"
@"  return String(monthArray[month])+\" \"+String(year);\n"
@"}\n"
@"var obj=false;\n"
@"var X,Y;\n"
@"function MD() {\n"
@"  if (isIE) {\n"
@"    ob = true;\n"
@"    X=event.offsetX;\n"
@"    Y=event.offsetY;\n"
@"    document.onmousemove = MM;\n"
@"    document.onmouseup   = MU;\n"
@"  }\n"
@"}\n"
@"function MM() {\n"
@"  if (ob) {\n"
@"    calendarDiv.style.pixelLeft = event.clientX-X + document.body.scrollLeft;\n"
@"    calendarDiv.style.pixelTop = event.clientY-Y + document.body.scrollTop;\n"
@"    return false;\n"
@"  }\n"
@"}\n"
@"function MU() {\n"
@"  ob = false;\n"
@"//  document.onmousemove = null;\n"
@"//  document.onmouseup   = null;\n"
@"}\n"
@"// CREATE THE TOP CALENDAR PART\n"
@"function buildTopCalFrame() {\n"
@"     var calDoc =\n"
@"       \"<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD BGCOLOR=black>\" +\n"
@"       \"<TABLE CELLPADDING=0 CELLSPACING=1 BORDER=0>\" +\n"
@"       \"<TR><TD COLSPAN=6 ALIGN=left CLASS=topCal onMouseDown='MD()'>\" +\n"
@"       buildCalControlMonthYear() +\n"
@"       \"</TD>\" +\n"
@"       \"<TD ALIGN=right CLASS=topCal>\"+\n"
@"       \"<A CLASS=navMonYear HREF='javascript:hideCalendar()'>\" +\n"
@"       dateFieldCloseSRC+\"</A>&nbsp;</TD></TR>\" +\n"
@"       \"<TR>\" +\n"
@"       \"<TD COLSPAN=7 CLASS=topCal ALIGN=center><FONT SIZE=1 FACE='Arial'>\"+\n"
@"       \"<A CLASS=navMonYear HREF='javascript:setPreviousYear()'>\"+\n"
@"       dateFieldFirstSRC+\"</A>\" +\n"
@"       \" <A CLASS=navMonYear HREF='javascript:setPreviousMonth()'>\"+\n"
@"       dateFieldPreviousSRC+\"</A>\" +\n"
@"       \" <A CLASS=navMonYear HREF='javascript:setToday()'>\"+\n"
@"       dateFieldTodaySRC+\"</A>\" +\n"
@"       \" <A CLASS=navMonYear HREF='javascript:setNextMonth()'>\"+\n"
@"       dateFieldNextSRC+\"</A>\"+\n"
@"       \" <A CLASS=navMonYear HREF='javascript:setNextYear()'>\"+\n"
@"       dateFieldLastSRC+\"</A>\" +\n"
@"       \"</FONT></TD>\" +\n"
@"       \"</TR>\";\n"
@"   return calDoc;\n"
@"}\n"
@"// CREATE THE BOTTOM CALENDAR PART\n"
@"function buildBottomCalFrame() {       \n"
@"    // START CALENDAR DOCUMENT\n"
@"    var calDoc = calendarBegin;\n"
@"    // GET MONTH, AND YEAR FROM GLOBAL CALENDAR DATE\n"
@"    month   = calDate.getMonth();\n"
@"    year    = calDate.getFullYear();\n"
@"    // GET GLOBALLY-TRACKED DAY VALUE (PREVENTS JAVASCRIPT DATE ANOMALIES)\n"
@"    day     = calDay;\n"
@"    var i   = 0;\n"
@"    // DETERMINE THE NUMBER OF DAYS IN THE CURRENT MONTH\n"
@"    var days = getDaysInMonth();\n"
@"    // IF GLOBAL DAY VALUE IS > THAN DAYS IN MONTH, HIGHLIGHT LAST DAY IN MONTH\n"
@"    if (day > days) {\n"
@"        day = days;\n"
@"    }\n"
@"    // DETERMINE WHAT DAY OF THE WEEK THE CALENDAR STARTS ON\n"
@"    var firstOfMonth = new Date (year, month, 1);\n"
@"    // GET THE DAY OF THE WEEK THE FIRST DAY OF THE MONTH FALLS ON\n"
@"    var startingPos  = firstOfMonth.getDay();\n"
@"    days += startingPos;\n"
@"    // KEEP TRACK OF THE COLUMNS, START A NEW ROW AFTER EVERY 7 COLUMNS\n"
@"    var columnCount = 0;\n"
@"    // MAKE BEGINNING NON-DATE CELLS BLANK\n"
@"    for (i = 0; i < startingPos; i++) {\n"
@"        calDoc += blankCell;\n"
@"	columnCount++;\n"
@"    }\n"
@"    // SET VALUES FOR DAYS OF THE MONTH\n"
@"    var currentDay = 0;\n"
@"    var dayType    = \"weekday\";\n"
@"    // DATE CELLS CONTAIN A NUMBER\n"
@"    for (i = startingPos; i < days; i++) {\n"
@"	var paddingChar = \"&nbsp;\";\n"
@"        // ADJUST SPACING SO THAT ALL LINKS HAVE RELATIVELY EQUAL WIDTHS\n"
@"        if (i-startingPos+1 < 10) {\n"
@"            padding = \"&nbsp;&nbsp;\";\n"
@"        }\n"
@"        else {\n"
@"            padding = \"&nbsp;\";\n"
@"        }\n"
@"        // GET THE DAY CURRENTLY BEING WRITTEN\n"
@"        currentDay = i-startingPos+1;\n"
@"        // SET THE TYPE OF DAY, THE focusDay GENERALLY APPEARS AS A DIFFERENT COLOR\n"
@"        if (currentDay == day) {\n"
@"            dayType = \"focusDay\";\n"
@"        }\n"
@"        else {\n"
@"            dayType = \"weekDay\";\n"
@"        }\n"
@"        // ADD THE DAY TO THE CALENDAR STRING\n"
@"        calDoc += \"<TD align=center bgcolor='lightgrey'>\" +\n"
@"                  \"<a class='\" + dayType + \"' href='javascript:returnDate(\" + \n"
@"                  currentDay + \")'>\" + padding + currentDay + paddingChar + \"</a></TD>\";\n"
@"        columnCount++;\n"
@"        // START A NEW ROW WHEN NECESSARY\n"
@"        if (columnCount % 7 == 0) {\n"
@"            calDoc += \"</TR><TR>\";\n"
@"        }\n"
@"    }\n"
@"    // MAKE REMAINING NON-DATE CELLS BLANK\n"
@"    for (i=days; i<42; i++)  {\n"
@"        calDoc += blankCell;\n"
@"	columnCount++;\n"
@"        // START A NEW ROW WHEN NECESSARY\n"
@"        if (columnCount % 7 == 0) {\n"
@"            calDoc += \"</TR>\";\n"
@"            if (i<41) {\n"
@"                calDoc += \"<TR>\";\n"
@"            }\n"
@"        }\n"
@"    }\n"
@"    // FINISH THE NEW CALENDAR PAGE\n"
@"    calDoc += calendarEnd;\n"
@"    // RETURN THE COMPLETED CALENDAR PAGE\n"
@"    return calDoc;\n"
@"}\n"
@"// SET THE CALENDAR TO TODAY'S DATE AND DISPLAY THE NEW CALENDAR\n"
@"function setToday() {\n"
@"    // SET GLOBAL DATE TO TODAY'S DATE\n"
@"    calDate = new Date();\n"
@"    // DISPLAY THE NEW CALENDAR\n"
@"    writeCalendar();\n"
@"}\n"
@"// SET THE GLOBAL DATE TO THE PREVIOUS YEAR AND REDRAW THE CALENDAR\n"
@"function setPreviousYear() {\n"
@"    var year  = calDate.getFullYear();\n"
@"    if (year > 1000) {\n"
@"        year--;\n"
@"        calDate.setFullYear(year);\n"
@"        writeCalendar();\n"
@"    }\n"
@"}\n"
@"// SET THE GLOBAL DATE TO THE PREVIOUS MONTH AND REDRAW THE CALENDAR\n"
@"function setPreviousMonth() {\n"
@"    var year  = calDate.getFullYear();\n"
@"    var month = calDate.getMonth();\n"
@"   \n"
@"    // IF MONTH IS JANUARY, SET MONTH TO DECEMBER AND DECREMENT THE YEAR\n"
@"    if (month == 0) {\n"
@"        month = 11;\n"
@"        if (year > 1000) {\n"
@"            year--;\n"
@"            calDate.setFullYear(year);\n"
@"        }\n"
@"    }\n"
@"    else {\n"
@"        month--;\n"
@"    }\n"
@"    calDate.setMonth(month);\n"
@"    writeCalendar();\n"
@"}\n"
@"// SET THE GLOBAL DATE TO THE NEXT MONTH AND REDRAW THE CALENDAR\n"
@"function setNextMonth() {\n"
@"    var year = calDate.getFullYear();\n"
@"        var month = calDate.getMonth();\n"
@"        // IF MONTH IS DECEMBER, SET MONTH TO JANUARY AND INCREMENT THE YEAR\n"
@"        if (month == 11) {\n"
@"            month = 0;\n"
@"            year++;\n"
@"            calDate.setFullYear(year);\n"
@"        }\n"
@"        else {\n"
@"            month++;\n"
@"        }\n"
@"        calDate.setMonth(month);\n"
@"        writeCalendar();\n"
@"}\n"
@"// SET THE GLOBAL DATE TO THE NEXT YEAR AND REDRAW THE CALENDAR\n"
@"function setNextYear() {\n"
@"    var year  = calDate.getFullYear();\n"
@"        year++;\n"
@"        calDate.setFullYear(year);\n"
@"        writeCalendar();\n"
@"}\n"
@"// GET NUMBER OF DAYS IN MONTH\n"
@"function getDaysInMonth()  {\n"
@"    var days;\n"
@"    var month = calDate.getMonth()+1;\n"
@"    var year  = calDate.getFullYear();\n"
@"    // RETURN 31 DAYS\n"
@"    if (month==1 || month==3 || month==5 || month==7 || month==8 ||\n"
@"        month==10 || month==12)  {\n"
@"        days=31;\n"
@"    }\n"
@"    // RETURN 30 DAYS\n"
@"    else if (month==4 || month==6 || month==9 || month==11) {\n"
@"        days=30;\n"
@"    }\n"
@"    // RETURN 29 DAYS\n"
@"    else if (month==2)  {\n"
@"        if (isLeapYear(year)) {\n"
@"            days=29;\n"
@"        }\n"
@"        // RETURN 28 DAYS\n"
@"        else {\n"
@"            days=28;\n"
@"        }\n"
@"    }\n"
@"    return (days);\n"
@"}\n"
@"// CHECK TO SEE IF YEAR IS A LEAP YEAR\n"
@"function isLeapYear (Year) {\n"
@"    if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {\n"
@"        return (true);\n"
@"    }\n"
@"    else {\n"
@"        return (false);\n"
@"    }\n"
@"}\n"
@"// BUILD THE MONTH SELECT LIST\n"
@"function getMonthSelect() {\n"
@"    // IF SET BY A PARAMETER (WRITTEN AT THE BEGINNING BY WOCalendar)\n"
@"    if (externMonths) {\n"
@"      monthArray = externMonths;\n"
@"    }\n"
@"    else {\n"
@"        monthArray = new Array('January', 'February', 'March', 'April', \n"
@"           'May', 'June', 'July', 'August', \n"
@"           'September', 'October', 'November', 'December');\n"
@"    }\n"
@"    return monthArray;\n"
@"}\n"
@"// SET DAYS OF THE WEEK DEPENDING ON LANGUAGE\n"
@"function createWeekdayList() {\n"
@"    // IF SET BY A PARAMETER (WRITTEN AT THE BEGINNING BY WODateFieldScript)\n"
@"    if (externWeekdays) {\n"
@"      weekdayArray = externWeekdays;\n"
@"    }\n"
@"    else {\n"
@"        weekdayArray = new Array('Su','Mo','Tu','We','Th','Fr','Sa');\n"
@"    }\n"
@"    var weekdays = \"<TR BGCOLOR='white'>\";\n"
@"    for (i in weekdayArray) {\n"
@"        weekdays += \"<TD class='heading' align=center>\"\n"
@"                 + weekdayArray[i] + \"</TD>\";\n"
@"    }\n"
@"    weekdays += \"</TR>\";\n"
@"    return weekdays;\n"
@"}\n"
@"// PRE-BUILD PORTIONS OF THE CALENDAR (FOR PERFORMANCE REASONS)\n"
@"function buildCalParts() {\n"
@"    // BUILD THE BLANK CELL ROWS\n"
@"    blankCell = \"<TD align=center bgcolor='lightGrey'>&nbsp;&nbsp;&nbsp;</TD>\";\n"
@"    // BUILD THE TOP PORTION OF THE CALENDAR PAGE USING CSS TO CONTROL SOME DISPLAY ELEMENTS\n"
@"    calendarBegin = createWeekdayList() + \"<TR>\";\n"
@"    // BUILD THE BOTTOM PORTION OF THE CALENDAR PAGE\n"
@"    calendarEnd = \"\";\n"
@"        // END THE TABLE AND HTML DOCUMENT\n"
@"        calendarEnd +=\n"
@"            \"</TABLE></TD></TR></TABLE>\";\n"
@"}\n"
@"// REPLACE ALL INSTANCES OF find WITH replace\n"
@"// inString: the string you want to convert\n"
@"// find:     the value to search for\n"
@"// replace:  the value to substitute\n"
@"//\n"
@"// usage:    jsReplace(inString, find, replace);\n"
@"// example:  jsReplace(\"To be or not to be\", \"be\", \"ski\");\n"
@"//           result: \"To ski or not to ski\"\n"
@"//\n"
@"function jsReplace(inString, find, replace) {\n"
@"    var outString = \"\";\n"
@"    if (!inString) {\n"
@"        return \"\";\n"
@"    }\n"
@"    // REPLACE ALL INSTANCES OF find WITH replace\n"
@"    if (inString.indexOf(find) != -1) {\n"
@"        // SEPARATE THE STRING INTO AN ARRAY OF STRINGS USING THE VALUE IN find\n"
@"        t = inString.split(find);\n"
@"        // JOIN ALL ELEMENTS OF THE ARRAY, SEPARATED BY THE VALUE IN replace\n"
@"        return (t.join(replace));\n"
@"    }\n"
@"    else {\n"
@"        return inString;\n"
@"    }\n"
@"}\n"
@"// JAVASCRIPT FUNCTION -- DOES NOTHING (USED FOR THE HREF IN THE CALENDAR CALL)\n"
@"function doNothing() {\n"
@"}\n"
@"// ENSURE THAT VALUE IS TWO DIGITS IN LENGTH\n"
@"function makeTwoDigit(inValue) {\n"
@"    var numVal = parseInt(inValue, 10);\n"
@"    // VALUE IS LESS THAN TWO DIGITS IN LENGTH\n"
@"    if (numVal < 10) {\n"
@"        // ADD A LEADING ZERO TO THE VALUE AND RETURN IT\n"
@"        return(\"0\" + numVal);\n"
@"    }\n"
@"    else {\n"
@"        return numVal;\n"
@"    }\n"
@"}\n"
@"// SET FIELD VALUE TO THE DATE SELECTED AND CLOSE THE CALENDAR WINDOW\n"
@"function returnDate(inDay)\n"
@"{\n"
@"    // inDay = THE DAY THE USER CLICKED ON\n"
@"    calDate.setDate(inDay);\n"
@"    // SET THE DATE RETURNED TO THE USER\n"
@"    var day           = calDate.getDate();\n"
@"    var month         = calDate.getMonth()+1;\n"
@"    var year          = calDate.getFullYear();\n"
@"    outDate = dateFormat;\n"
@"    outDate = jsReplace(outDate,'%Y',String(year));\n"
@"    outDate = jsReplace(outDate,'%m',makeTwoDigit(month));\n"
@"    outDate = jsReplace(outDate,'%d',makeTwoDigit(day));\n"
@"    // SET THE VALUE OF THE FIELD THAT WAS PASSED TO THE CALENDAR\n"
@"    calDateField.value = outDate;\n"
@"    // CLOSE THE CALENDAR WINDOW\n"
@"    hideCalendar();\n"
@"}\n"
