﻿var datePickerDivID = "datepicker"; var iFrameDivID = "datepickeriframe"; var dayArrayShort = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'); var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'); var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); var defaultDateSeparator = "/"; var defaultDateFormat = "mdy"
var dateSeparator = defaultDateSeparator; var dateFormat = defaultDateFormat; function displayDatePicker(dateFieldName, displayBelowThisObject, dtFormat, dtSep,dateTxt)
{ var targetDateField = document.getElementById(dateFieldName); if (!displayBelowThisObject)
displayBelowThisObject = targetDateField; if (dtSep)
dateSeparator = dtSep; else
dateSeparator = defaultDateSeparator; if (dtFormat)
dateFormat = dtFormat; else
dateFormat = defaultDateFormat; 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 ;}
drawDatePicker(targetDateField, x, y, dateTxt);}
function drawDatePicker(targetDateField, x, y, dateTxt)
{ var dt = getFieldDate(targetDateField.value ); 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 = 100000; refreshDatePicker(dateTxt,targetDateField.id, dt.getFullYear(), dt.getMonth(), dt.getDate());}
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); switch (dateFormat) { case "dmy" :
return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear(); case "ymd" :
return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString; case "mdy" :
default :
return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();}
}
function getFieldDate(dateString)
{ var dateVal; var dArray; var d, m, y; try { dArray = splitDateString(dateString); if (dArray) { switch (dateFormat) { case "dmy" :
d = parseInt(dArray[0], 10); m = parseInt(dArray[1], 10) - 1; y = parseInt(dArray[2], 10); break; case "ymd" :
d = parseInt(dArray[2], 10); m = parseInt(dArray[1], 10) - 1; y = parseInt(dArray[0], 10); break; case "mdy" :
default :
d = parseInt(dArray[1], 10); m = parseInt(dArray[0], 10) - 1; y = parseInt(dArray[2], 10); break;}
dateVal = new Date(y, m, d);} else if (dateString) { dateVal = new Date(dateString);} else { dateVal = new Date();}
} catch(e) { dateVal = new Date();}
return dateVal;}
function splitDateString(dateString)
{ var dArray; if (dateString.indexOf("/") >= 0)
dArray = dateString.split("/"); else if (dateString.indexOf(".") >= 0)
dArray = dateString.split("."); else if (dateString.indexOf("-") >= 0)
dArray = dateString.split("-"); else if (dateString.indexOf("\\") >= 0)
dArray = dateString.split("\\"); else
dArray = false; return dArray;}
function updateDateField(dateFieldName, dateString)
{ var targetDateField = document.getElementById(dateFieldName); if (dateString)
{ targetDateField.value = dateString;}
var pickerDiv = document.getElementById(datePickerDivID); pickerDiv.style.visibility = "hidden"; pickerDiv.style.display = "none"; targetDateField.focus(); if ((dateString) && (typeof(datePickerClosed) == "function"))
datePickerClosed(targetDateField);}
var minYear=1900; var maxYear=2100; function isInteger(s){ var i; for (i = 0; i < s.length; i++){ var c = s.charAt(i); if (((c < "0") || (c > "9"))) return false;}
return true;}
function stripCharsInBag(s, bag){ var i; var returnString = ""; for (i = 0; i < s.length; i++){ var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c;}
return returnString;}
function daysInFebruary (year){ return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );}
function DaysArray(n) { for (var i = 1; i <= n; i++) { this[i] = 31
if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
if (i==2) {this[i] = 29}
}
return this
}
function isDate(dtStr,errorControlId,separator){ var dtCh = separator; var daysInMonth = DaysArray(12)
var pos1=dtStr.indexOf(dtCh)
var pos2=dtStr.indexOf(dtCh,pos1+1)
var strDay=dtStr.substring(0,pos1)
var strMonth=dtStr.substring(pos1+1,pos2)
var strYear=dtStr.substring(pos2+1)
var idPart = errorControlId.split(","); strYr=strYear
if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
for (var i = 1; i <= 3; i++) { if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
}
month=parseInt(strMonth)
day=parseInt(strDay)
year=parseInt(strYr)
if (pos1==-1 || pos2==-1){ for(var i = 0; i< idPart.length; i++)
{ if(idPart[i] != "")
{ document.getElementById(idPart[i]).innerHTML = "The date format should be : mm/dd/yyyy";}
}
return false
}
if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){ for(var i = 0; i< idPart.length; i++)
{ if(idPart[i] != "")
{ document.getElementById(idPart[i]).innerHTML = "Please enter a valid day";}
}
return false
}
if (strMonth.length<1 || month<1 || month>12){ for(var i = 0; i< idPart.length; i++)
{ if(idPart[i] != "")
{ document.getElementById(idPart[i]).innerHTML = "Please enter a valid month";}
}
return false
}
if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){ for(var i = 0; i< idPart.length; i++)
{ if(idPart[i] != "")
{ document.getElementById(idPart[i]).innerHTML = "Please enter a valid 4 digit year between " + minYear + " and " + maxYear;}
}
return false
}
if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){ for(var i = 0; i< idPart.length; i++)
{ if(idPart[i] != "")
{ document.getElementById(idPart[i]).innerHTML = "Please enter a valid date";}
}
return false
}
return true
}
function calendarScript(e,separator,controlId)
{ if (navigator.userAgent.indexOf("Firefox")!=-1 || navigator.userAgent.indexOf("Safari")!=-1)
{ if(e.keyCode == 37 || e.keyCode == 39 || e.keyCode == 8 || e.keyCode == 46 || e.keyCode == 36 || e.keyCode == 35)
{ return true;}
}
var dateText = document.getElementById(controlId).value; if(dateText.length>9)
{ return false;}
else
{ if(dateText.length == 2 || dateText.length == 5)
{ document.getElementById(controlId).value += separator;}
if(dateText.length!=2 && dateText.length!=5)
{ return numbercheck(e);}
}
}
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 
