// Copyright 2003, 2004 Peter L. Blum, All Rights Reserved, www.PeterBlum.com
// Peter's Date Package Release 1.1.7

function MYP_MonthOnClick(pMYPId, pMonthCellId){var vMonthCellField = PDP_GetById(pMonthCellId);var vInRange = vMonthCellField.getAttribute("InRange");if (eval(vInRange)){MYP_MonthChange(pMYPId, pMonthCellId)MYP_OnSelectionChanged(PDP_GetById(pMYPId), false);}} 

function MYP_MonthChange(pMYPId, pMonthCellId){var vMYPFld = PDP_GetById(pMYPId);if (!MYP_MonthNoSelection(pMYPId, pMonthCellId))return;var vMonthCellField = PDP_GetById(pMonthCellId);var vSelectedCssStyle = vMYPFld.getAttribute("SelMCSS");vMonthCellField.className = vSelectedCssStyle;if (vSelectedCssStyle == "")PDP_SetBkColor(vMonthCellField, "gold");var vMonthInputField = PDP_GetById(pMYPId + "_Month");vMonthInputField.value = vMonthCellField.getAttribute("MonthNumber");vMYPFld.setAttribute("MSelCId", pMonthCellId, 0);} 

function MYP_MonthNoSelection(pMYPId, pNextSelectionCellId){var vMYPFld = PDP_GetById(pMYPId);var vSelCId = vMYPFld.getAttribute("MSelCId");if (vSelCId != ""){if (vSelCId == pNextSelectionCellId)return false;var vCssStyle = vMYPFld.getAttribute("MCSS");var vOldCell = PDP_GetById(vSelCId);vOldCell.className = vCssStyle;PDP_SetBkColor(vOldCell, "");}return true;} 

function MYP_MoveMonthSelection(pMYPId, pChangeCount){var vMYPFld = PDP_GetById(pMYPId);var vSelCId = vMYPFld.getAttribute("MSelCId");if (vSelCId == "") 
{for (var vI = 0; vI < 12; vI++){var vCellNumber = 0;if (pChangeCount > 0) 
vCellNumber = vI;else 
vCellNumber = 11 - vI;var vNewCellId = pMYPId + "_MC_" + vCellNumber;var vInRange = eval(PDP_GetById(vNewCellId).getAttribute("InRange"));if (vInRange){MYP_MonthChange(pMYPId, vNewCellId);MYP_OnSelectionChanged(vMYPFld, false);return; }} 
}else 
{var vMonthNumber = parseInt(PDP_GetById(vSelCId).getAttribute("MonthNumber")); vMonthNumber = (vMonthNumber + pChangeCount - 1) % 12;if (vMonthNumber < 0)vMonthNumber = vMonthNumber + 12;var vNewCellId = pMYPId + "_MC_" + vMonthNumber;var vInRange = eval(PDP_GetById(vNewCellId).getAttribute("InRange"));if (vInRange){MYP_MonthChange(pMYPId, vNewCellId);MYP_OnSelectionChanged(vMYPFld, false);}}} 

function MYP_YearOnClick(pMYPId, pYearCellId){var vYearCellField = PDP_GetById(pYearCellId);var vInRange = vYearCellField.getAttribute("InRange");if (eval(vInRange)){MYP_YearChange(pMYPId, pYearCellId)MYP_OnSelectionChanged(PDP_GetById(pMYPId), false);}} 

function MYP_YearChange(pMYPId, pYearCellId){var vMYPFld = PDP_GetById(pMYPId);if (!MYP_YearNoSelection(pMYPId, pYearCellId))return;var vYearCellField = PDP_GetById(pYearCellId);var vSelectedCssStyle = vMYPFld.getAttribute("SelYCSS");vYearCellField.className = vSelectedCssStyle;if (vSelectedCssStyle == "")PDP_SetBkColor(vYearCellField, "gold");var vYearInputField = PDP_GetById(pMYPId + "_Year");vYearInputField.value = vYearCellField.getAttribute("Year");vMYPFld.setAttribute("YSelCId", vYearCellField.id, 0);MYP_ApplyMinMaxToMonths(vMYPFld, parseInt(vYearInputField.value));} 

function MYP_YearNoSelection(pMYPId, pNextSelectedCellId){var vMYPFld = PDP_GetById(pMYPId);var vSelCId = vMYPFld.getAttribute("YSelCId");if (vSelCId != ""){if (vSelCId == pNextSelectedCellId)return false;var vCssStyle = vMYPFld.getAttribute("YCSS");var vOldCell = PDP_GetById(vSelCId);vOldCell.className = vCssStyle;PDP_SetBkColor(vOldCell, "");}return true;} 

function MYP_ApplyMinMaxToMonths(pMYPFld, pYear){var vMinMonth = parseInt(pMYPFld.getAttribute("MinMonth"));var vMaxMonth = parseInt(pMYPFld.getAttribute("MaxMonth"));if ((vMinMonth > 0) && (vMaxMonth > 0)){var vMinYear = parseInt(pMYPFld.getAttribute("MinYear"));var vMaxYear = parseInt(pMYPFld.getAttribute("MaxYear"));var vMonthSelectedCellId = pMYPFld.getAttribute("MSelCId");var vOORCssClass = pMYPFld.getAttribute("OORCSS");var vMonthCssClass = pMYPFld.getAttribute("MCSS");var vMonthTable = PDP_GetById(pMYPFld.id + "_MonthTable");for (var vRowCount = 0; vRowCount < vMonthTable.rows.length; vRowCount++){var vRow = vMonthTable.rows[vRowCount];for (var vCellCount = 0; vCellCount < vRow.cells.length; vCellCount++){var vCell = vRow.cells[vCellCount];var vMonth = parseInt(vCell.getAttribute("MonthNumber"));var vInRange = true;if (pYear > 0){if (vMinMonth > 0)vInRange = (vMinYear < pYear) || ((vMinYear == pYear) && (vMinMonth <= vMonth));if (vInRange && (vMaxMonth > 0))vInRange = (vMaxYear > pYear) || ((vMaxYear == pYear) && (vMaxMonth >= vMonth));}vCell.style.color = '';if (vInRange){if (vCell.id != vMonthSelectedCellId) 
{vCell.className = vMonthCssClass;}}else 
{vCell.className = vOORCssClass;if (vOORCssClass == "")vCell.style.color = "gray";PDP_SetBkColor(vCell, "");if (vCell.id == vMonthSelectedCellId) 
{var vMonthInputField = PDP_GetById(pMYPFld.id + "_Month");vMonthInputField.value = "0";pMYPFld.setAttribute("MSelCId", "", 0);}}vCell.setAttribute("InRange", vInRange, 0);} 
} }} 
function MYP_OnMouseOver(pMonthCellId, pForeColor, pBorderColor){var vMonthCellField = PDP_GetById(pMonthCellId);if (eval(vMonthCellField.getAttribute("InRange"))){vMonthCellField.style.borderLeftColor = pBorderColor;vMonthCellField.style.borderRightColor = pBorderColor;vMonthCellField.style.borderTopColor = pBorderColor;vMonthCellField.style.borderBottomColor = pBorderColor;vMonthCellField.style.color = pForeColor;}} 
function MYP_OnMouseOut(pMonthCellId){var vMonthCellField = PDP_GetById(pMonthCellId);if (eval(vMonthCellField.getAttribute("InRange"))){vMonthCellField.style.borderLeftColor = '';vMonthCellField.style.borderRightColor = '';vMonthCellField.style.borderTopColor = '';vMonthCellField.style.borderBottomColor = '';vMonthCellField.style.color = '';}} 

function MYP_FillInYearTable(pMYPId, pMode){var vMYPFld = PDP_GetById(pMYPId);var vStartYear = 0;var vSelectedYear = 0;var vFirstYear = parseInt(PDP_GetById(pMYPId + "_YC_0").getAttribute("Year"));var vYearInputField = PDP_GetById(pMYPId + "_Year");if (pMode == 0){var vInitialYearOffset = parseInt(vMYPFld.getAttribute("InitYO"));vSelectedYear = parseInt(vYearInputField.value);if (vSelectedYear == 0) 
{var vDate = new Date();vSelectedYear = vDate.getFullYear();}var vStartYear = vSelectedYear - vInitialYearOffset;}else{vStartYear = vFirstYear + pMode;if (pMode > 0)vSelectedYear = vStartYear;elsevSelectedYear = vFirstYear - 1;}
var vMinYear = parseInt(vMYPFld.getAttribute("MinYear"));var vMaxYear = parseInt(vMYPFld.getAttribute("MaxYear"));if ((vMaxYear > 0) && (vStartYear > vMaxYear))vStartYear = vMaxYear - 10; if (vStartYear < vMinYear)vStartYear = vMinYear;if ((vMaxYear > 0) && (vSelectedYear > vMaxYear))vSelectedYear = vMaxYear - 10; if (vStartYear < vMinYear)vSelectedYear = vMinYear;var vOORCssClass = vMYPFld.getAttribute("OORCSS");var vYearCssClass = vMYPFld.getAttribute("YCSS");var vSelectedCssClass = vMYPFld.getAttribute("SelYCSS");var vYearTable = PDP_GetById(pMYPId + "_YearTable");for (var vRowCount = 0; vRowCount < 5; vRowCount++){
var vRow = null;if (vYearTable.rows && !gIsSafari) 
vRow = vYearTable.rows[vRowCount];else 
{var vRows = PDPUtil_GetChildNodes(vYearTable, "TBODY", 1);vRow = PDPUtil_GetChildNodes(vRows, "TR", vRowCount + 1);}for (var vCellCount = 0; vCellCount < 2; vCellCount++){
var vCell = null;if (vRow.cells && !gIsSafari) 
vCell = vRow.cells[vCellCount]; else 
vCell = PDPUtil_GetChildNodes(vRow, "TD", vCellCount + 1); var vOffset = vRowCount + vCellCount * 5; var vYearToShow = vStartYear + vOffset;PDP_SetInnerHTML(vCell, vYearToShow);var vInRange = true;if (vMinYear > 0)vInRange = vYearToShow >= vMinYear;if (vMaxYear > 0)vInRange = vYearToShow <= vMaxYear;PDP_SetBkColor(vCell, "");vCell.style.color = '';if (vInRange){if (vYearToShow == vSelectedYear){vCell.className = vSelectedCssClass;if (vSelectedCssClass == "")PDP_SetBkColor(vCell, 'gold');vYearInputField.value = vYearToShow;vMYPFld.setAttribute("YSelCId", vCell.id, 0);}elsevCell.className = vYearCssClass;}else{vCell.className = vOORCssClass;if (vOORCssClass == "")vCell.style.color = "gray";}vCell.setAttribute("InRange", vInRange, 0);vCell.setAttribute("Year", vYearToShow, 0);} 
} MYP_ApplyMinMaxToMonths(vMYPFld, vSelectedYear);if (vMinYear > 0){var vPrevYearsCmd = PDP_GetById(pMYPId + "_PrevYears");vPrevYearsCmd.style.visibility = (vMinYear < vStartYear) ? "inherit" : "hidden";}if (vMaxYear > 0){var vNextYearsCmd = PDP_GetById(pMYPId + "_NextYears");vNextYearsCmd.style.visibility = (vMaxYear >= vStartYear + 10) ? "inherit" : "hidden";}MYP_OnSelectionChanged(vMYPFld, false);} 

function MYP_Initialize(pMYPId){if (!gSupportsInnerHTML)return;var vMYPFld = PDP_GetById(pMYPId);var vIsPopup = eval(PDP_GetAtt(vMYPFld, "IsPopup", false));if (vIsPopup){PDP_RelocatePopup(vMYPFld);vMYPFld = PDP_GetById(pMYPId); }var vPopupFnc = PDP_GetAtt(vMYPFld, "onpopup", '');var vPopdnFnc = PDP_GetAtt(vMYPFld, "onpopdown", '');if (gSupportsFocusOnTable && 
(vMYPFld.attachEvent != null)) 
{vMYPFld.attachEvent("onkeydown", new Function("return MYP_OnKeyDownIE('" + pMYPId + "');"));vMYPFld.attachEvent("onkeypress", new Function("return MYP_OnKeyPressIE('" + pMYPId + "');"));}else if (vMYPFld.addEventListener != null) 
{vPopupFnc = vPopupFnc + "MYP_AttachKeyboardNS();";vPopdnFnc = vPopdnFnc + "MYP_DetachKeyboardNS();";}if (gIsIEMac || (vMYPFld.offsetWidth == 0)) 
{vPopupFnc = vPopupFnc + "MYP_InitSize('" + pMYPId + "');";}vMYPFld.setAttribute("onpopup", vPopupFnc, 0);vMYPFld.setAttribute("onpopdown", vPopdnFnc, 0);if (!gIsIEMac && (vMYPFld.offsetWidth != 0)) 
MYP_InitSize(pMYPId);} 
function MYP_InitSize(pMYPId){var vMYPField = PDP_GetById(pMYPId);var vInit = eval(PDP_GetAtt(vMYPField, "Inited", false));if (vInit)return;var vOuterTable = PDP_GetById(pMYPId + "_OuterTable");var vCommonWidth = vOuterTable.offsetWidth;vMYPField.style.width = vCommonWidth;var vMYClientWidth = 0;if (vMYPField.clientWidth)vMYClientWidth = vMYPField.clientWidth;elsevMYClientWidth = vMYPField.width;if (vMYClientWidth > vCommonWidth)vCommonWidth = vMYClientWidth;vOuterTable.style.width = vCommonWidth;PDP_SetAtt(vMYPField, "Inited", true);} 
function MYP_AttachKeyboardNS(){document.addEventListener("keydown", MYP_OnKeyDownDOM, false);document.addEventListener("keypress", MYP_OnKeyPressDOM, false);} 
function MYP_DetachKeyboardNS(){document.removeEventListener("keydown", MYP_OnKeyDownDOM, false);document.removeEventListener("keypress", MYP_OnKeyPressDOM, false);} 

function MYP_ClosePopup(pMYPFld){var vIsPopup = pMYPFld.getAttribute("IsPopup");if ((vIsPopup != null) && (vIsPopup != "")){PDP_ClosePopup();return true;}elsereturn false;} 

function MYP_OnKeyDownIE(pMYPId){return MYP_OnKeyDownBody(window.event, pMYPId);} 

function MYP_OnKeyDownDOM(pE){if ((gPUNPos == -1) || (gPopupCId[gPUNPos] == ""))return false;var vId = gPopupCId[gPUNPos];var vOT = document.getElementById(vId + "_OuterTable"); if (vOT != null)return MYP_OnKeyDownBody(pE, vId);elsereturn false;}function MYP_OnKeyDownBody(pE, pMYPId){var vKeyCode = PDP_GetKeyCode(pE);var vShift = PDP_IsShift(pE);var vCtrl = PDP_IsCtrl(pE);if (((vKeyCode >= 33) && (vKeyCode <= 47)) || (vKeyCode == 27)){
var vMYPFld = PDP_GetById(pMYPId);if (MYP_ArrowKeyProcessing(vMYPFld, vKeyCode))PDP_StopEvent(pE);else if (MYP_CommandKeyProcessing(vMYPFld, vKeyCode, vShift, vCtrl))PDP_StopEvent(pE);return false; }else if (vKeyCode == 9) 
{var vMYPFld = PDP_GetById(pMYPId);var vIsPopup = PDP_GetAtt(vMYPFld, "IsPopup", "");if (vIsPopup != ""){PDP_CloseAllPopups();PDP_StopEvent(pE);return false; }}return true; } 
function MYP_OnKeyPressIE(pMYPId){return MYP_OnKeyPressBody(window.event, pMYPId);} 
function MYP_OnKeyPressDOM(pE){if ((gPUNPos == -1) || (gPopupCId[gPUNPos] == ""))return false;var vId = gPopupCId[gPUNPos];var vOT = document.getElementById(vId + "_OuterTable"); if (vOT != null)return MYP_OnKeyPressBody(pE, vId);elsereturn false;}function MYP_OnKeyPressBody(pE, pMYPId){var vKeyCode = PDP_GetKeyCode(pE);var vShift = PDP_IsShift(pE);var vCtrl = PDP_IsCtrl(pE);if (((vKeyCode < 33) || (vKeyCode > 47)) && (vKeyCode != 27)){var vMYPFld = PDP_GetById(pMYPId);var vTemp = (MYP_DigitKeyProcessing(vMYPFld, vKeyCode) ||MYP_AlphaKeyProcessing(vMYPFld, vKeyCode) ||MYP_CommandKeyProcessing(vMYPFld, vKeyCode, vShift, vCtrl));}PDP_StopEvent(pE);return false; } 
function MYP_ArrowKeyProcessing(pMYPFld, pKeyCode){
switch (pKeyCode){case 38: 
MYP_MoveMonthSelection(pMYPFld.id, -1);break;case 40: 
MYP_MoveMonthSelection(pMYPFld.id, 1);break;case 37: 
MYP_MoveMonthSelection(pMYPFld.id, -6);break;case 39: 
MYP_MoveMonthSelection(pMYPFld.id, 6);break;default:return false;} 
return true;} 
function MYP_DigitKeyProcessing(pMYPFld, pKeyCode){
if ((pKeyCode >= 48) && (pKeyCode <= 57)){var vKeyCodeStr = String.fromCharCode(pKeyCode);MYP_TypeToCell(pMYPFld, vKeyCodeStr, true);return true;}elsereturn false;} 
function MYP_AlphaKeyProcessing(pMYPFld, pKeyCode){
if (((pKeyCode >= 65) && (pKeyCode <= 90)) || ((pKeyCode >= 97) && (pKeyCode <= 122))){var vKeyCodeStr = String.fromCharCode(pKeyCode).toUpperCase();MYP_TypeToCell(pMYPFld, vKeyCodeStr, false);return true;}elsereturn false;} 
function MYP_CommandKeyProcessing(pMYPFld, pKeyCode, pShiftKey, pCtrlKey){var vResult = true;switch (pKeyCode){case 33: 
if (PDP_GetById(pMYPFld.id + "_PrevYears").style.visibility != "hidden"){var vChangeCount = 0 - parseInt(pMYPFld.getAttribute("MYBy"));MYP_FillInYearTable(pMYPFld.id, vChangeCount);MYP_OnSelectionChanged(pMYPFld, false);}break;case 34: 
if (PDP_GetById(pMYPFld.id + "_NextYears").style.visibility != "hidden"){var vChangeCount = parseInt(pMYPFld.getAttribute("MYBy"));MYP_FillInYearTable(pMYPFld.id, vChangeCount);MYP_OnSelectionChanged(pMYPFld, false);}break;case 13: 
MYP_Apply(pMYPFld.id);break;case 27: 
MYP_ClosePopup(pMYPFld);break;default:vResult = false;break;} 
return vResult;} 

var gTypeToCell = "";var gTypeToCellTimer = 0;var gTypeToDigitMode = true;function MYP_TypeToCell(pMYPFld, pKeyCodeStr, pDigit){if (gTypeToCellTimer != 0){window.clearInterval(gTypeToCellTimer);gTypeToCellTimer = 0;}if (gTypeToDigitMode != pDigit){gTypeToCell = "";gTypeToDigitMode = pDigit;}if (pDigit) 
{if (gTypeToCell.length == 4)gTypeToCell = pKeyCodeStr;elsegTypeToCell = gTypeToCell + pKeyCodeStr;for (var vI = 0; vI < 10; vI++){var vNewCellId = pMYPFld.id + "_YC_" + vI;var vValue = PDP_GetById(vNewCellId).getAttribute("Year").toString();if (gTypeToCell.length == 1){if (vValue.lastIndexOf(gTypeToCell) == vValue.length - gTypeToCell.length){MYP_YearOnClick(pMYPFld.id, vNewCellId);break;}}elseif (vValue.indexOf(gTypeToCell) == 0){MYP_YearOnClick(pMYPFld.id, vNewCellId);break;}} }else 
{if (gTypeToCell.length == 3)gTypeToCell = pKeyCodeStr;elsegTypeToCell = gTypeToCell + pKeyCodeStr;var vRE = new RegExp(">\D*<");for (var vI = 0; vI < 12; vI++){var vNewCellId = pMYPFld.id + "_MC_" + vI;var vValue = PDP_GetById(vNewCellId).innerHTML;if (vValue.charAt(0) == "<")return; vValue = vValue.toUpperCase();if (vValue.indexOf(gTypeToCell) == 0){MYP_MonthOnClick(pMYPFld.id, vNewCellId);break;}} 
}gTypeToCellTimer = window.setInterval("gTypeToCell = '';", 1500);} 

function MYP_Apply(pMYPId){var vMYPFld = PDP_GetById(pMYPId);MYP_OnSelectionChanged(vMYPFld, true);MYP_ClosePopup(vMYPFld);} 

function MYP_OnSelectionChanged(pMYPFld, pApply){if (!pApply) 
{if (eval(pMYPFld.getAttribute("AChgN")))pApply = true;}if (pApply){var vOSCFnc = pMYPFld.getAttribute("OnSelChg");if (vOSCFnc)eval(vOSCFnc);} } 

function MYP_SelectMonthYear(pMYPId, pMonth, pYear){var vMYPFld = PDP_GetById(pMYPId);var vYearInputField = PDP_GetById(pMYPId + "_Year");var vToday = new Date();if (pYear == 0)pYear = vToday.getFullYear();vYearInputField.value = pYear;MYP_FillInYearTable(pMYPId, 0);MYP_ApplyMinMaxToMonths(vMYPFld, pYear);if (pMonth == 0){
pMonth = vToday.getMonth(); }else 
pMonth--;var vSelectedMonthCellId = pMYPId + "_MC_" + pMonth;var vMonthCellField = PDP_GetById(vSelectedMonthCellId);var vInRange = vMonthCellField.getAttribute("InRange");if (eval(vInRange))MYP_MonthChange(pMYPId, vMonthCellField.id)elseMYP_MonthNoSelection(pMYPId, vMonthCellField.id);} 

function MYP_GetMonth(pMYPId){var vInputField = PDP_GetById(pMYPId + "_Month");return parseInt(vInputField.value);} 

function MYP_GetYear(pMYPId){var vInputField = PDP_GetById(pMYPId + "_Year");return parseInt(vInputField.value);} 
