var dp_datePickerDivID = "datepicker"; var dp_iFrameDivID = "datepickeriframe"; var dp_minMonth = ""; var dp_maxMonth = ""; var gDaySelected = ""; var dp_defaultDateSeparator = "."; var dp_defaultDateFormat = "ymd"; var dp_dateSeparator = dp_defaultDateSeparator; var dp_dateFormat = dp_defaultDateFormat; function PickDate(theMonthField, theDayField, theBelowObject, theFirstMonth, theLastMonth) { // Function to run the dp_displayDatePicker but copying the selected date from the selection boxes first // MonthField (string holding fieldname) // is the field that holds the month (have to have a selected value) // DayField (string holding fieldname) // is the field that holds the day (have to have a selected value) // BelowObject (string holding fieldname) // if the object to where to display the calendar. // Set it to false if MonthField shall be used. // FirstMonth (string) // A month value (format: MMYYYY) // OR // Select Field name to get the value from (the selected option value - format: MMYYYY) // LastMonth (string) // A month value (format: MMYYYY) // OR // Select Field name to get the value from (the last option value - format: MMYYYY) var MonthField = document.getElementsByName(theMonthField).item(0); var DayField = document.getElementsByName(theDayField).item(0); gDaySelected = DayField[DayField.selectedIndex].value; if (theBelowObject) var BelowObject = document.getElementsByName(theBelowObject).item(0) else var BelowObject = MonthField; var tmpField; var FirstMonth; if (isNaN(theFirstMonth)) { tmpField = document.getElementsByName(theFirstMonth).item(0); FirstMonth = tmpField.options[tmpField.selectedIndex].value; } else FirstMonth = new String(theFirstMonth); var LastMonth; if (isNaN(theLastMonth)) { tmpField = document.getElementsByName(theLastMonth).item(0); LastMonth = tmpField.options[tmpField.options.length-1].value; } else LastMonth = new String(theLastMonth); dp_minMonth = FirstMonth.substring(2,6) + FirstMonth.substring(0,2); dp_maxMonth = LastMonth.substring(2,6) + LastMonth.substring(0,2); // Closing the calendar if it is open already dp_updateDateField(theDayField, theMonthField); // Hook en dokument event til at lukke: document.onmousedown = dp_CloseIfClickOutsideDatepicker; dp_displayDatePicker(DayField, MonthField, BelowObject); } function dp_CloseIfClickOutsideDatepicker(e) { //var myevent = (navigator.appName == "Netscape") ? e : event; //var eventbutton = (navigator.appName == "Netscape") ? myevent.which : myevent.button; var eventbutton = (navigator.appName == "Netscape") ? e.which : event.button; if (eventbutton>0) { // check to see if the div exists var pickerDiv = document.getElementById(dp_datePickerDivID); if (pickerDiv) { var dp_mouseX = 0; var dp_mouseY = 0; if (e != '') //if (document.layers) if (navigator.appName == "Netscape") { dp_mouseX = e.pageX; dp_mouseY = e.pageY; } else { dp_mouseX = event.x; dp_mouseY = event.y + document.body.scrollTop; } var dp_posX = 0; var dp_posY = 0; var dp_Height = 0; var dp_Width = 0; dp_posX = parseInt(pickerDiv.style.left); dp_posY = parseInt(pickerDiv.style.top); dp_Width = parseInt(pickerDiv.offsetWidth); dp_Height = parseInt(pickerDiv.offsetHeight); // Checking that the clik is if ( (dp_mouseX < dp_posX || dp_mouseX > (dp_posX + dp_Width)) ||(dp_mouseY < dp_posY || dp_mouseY > (dp_posY + dp_Height)) ) dp_CloseDatePicker(); } } } function dp_DateAdd( AddType, Number, StartDate ) { // Function to add some to a date // AddType can be of the following values: // 'yy', 'yyyy' : Year // 'mm', 'm' : Month // 'dd', 'd' : Day // 'wk', 'ww' : Week // 'hh', 'h : Hour // 'mi', 'n' : Minute // 'ss', 's' : Second // 'ms' : Millisecond // If anything else is use, the StartDate is returned. var tmpType = new String(AddType); tmpType = tmpType.toLowerCase(); if (tmpType=='yy' || tmpType=='yyyy') return new Date(StartDate.getYear() + Number, StartDate.getMonth(), StartDate.getDate(), StartDate.getHours(), StartDate.getMinutes(), StartDate.getSeconds()) if (tmpType=='mm' || tmpType=='m') return new Date(StartDate.getYear(), StartDate.getMonth() + Number, StartDate.getDate(), StartDate.getHours(), StartDate.getMinutes(), StartDate.getSeconds()) else if (tmpType=='ww' || tmpType=='wk') return new Date(StartDate.getTime() + (Number*7)*24*60*60*1000); else if (tmpType=='dd' || tmpType=='d') return new Date(StartDate.getTime() + Number*24*60*60*1000); else if (tmpType=='hh' || tmpType=='h') return new Date(StartDate.getTime() + Number*60*60*1000); else if (tmpType=='mi' || tmpType=='n') return new Date(StartDate.getTime() + Number*60*1000); else if (tmpType=='ss' || tmpType=='s') return new Date(StartDate.getTime() + Number*1000); else if (tmpType=='ms') return new Date(StartDate.getTime() + Number) else return StartDate; } function dp_SetSelectedWithValue(SelectionField, WithValue) { // Function to select a specific value in a selectionbxo. var SelectionBox = document.getElementsByName(SelectionField).item(0); for (var i=0;(i= 0) && (year > 0)) { thisDay = new Date(year, month, 1, 12, 0, 0); } else { day = thisDay.getDate(); thisDay.setDate(1); } thisDay = dp_DateAdd( "dd", -1, thisDay); // date selected by user var daySelectedInField = document.getElementById(dataDayFieldName).value; var monthSelectedInField = document.getElementById(dataMonthFieldName).value; var dateSelectedInFields = parseInt(daySelectedInField, 10) + "." + parseInt(monthSelectedInField.substr(0,2), 10) + "." + monthSelectedInField.substr(2,4); var crlf = "\r\n"; var TABLE_main1 = ""; var TABLE_main2 = "
"; var TABLE_title = "
"; var TABLE_calender = "
"; var TABLE_button = "
"; var xTABLE = "
" + crlf; var TR = ""; var TR_title = ""; var TR_days = ""; var TR_todaybutton = ""; var xTR = "" + crlf; var TD = "" var TD_title = ""; var TD_buttonsLeft = ""; var TD_buttonsRight = ""; var TD_todaybutton = ""; var TD_todaybuttonLeft = ""; var TD_todaybuttonRight = ""; var TD_unselectedPast = ""; var TD_daysBusiness = ""; var TD_days = ""; var TD_unselectedBusiness = ""; // compare today with one date from calender picker and set it to active , if the values match var CurrentCPDate = dayNum + "." + month + "." + year; if( '5.1.2012' == CurrentCPDate ) html += TD_selected_today + TD_onclick + dayNum + xTD; else { // compare date selected by user with a date from calendar picker and mark it as selected, it the values match if (dateSelectedInFields == dayNum + "." + (monthSelected + 1) + "." + yearNum) html += TD_selected + TD_onclick + dayNum + xTD; else { if( (dayNum < 5 ) && (monthSelected + 1) == 2) { html += TD_unselectedPast + dayNum + xTD; } else { if (thisDay.getDay() == 5 || thisDay.getDay() == 6 ) html += TD_unselectedBusiness + TD_onclick + dayNum + xTD; else html += TD_unselected + TD_onclick + dayNum + xTD; } } } // if this is a Saturday, start a new row if (thisDay.getDay() == 6) html += xTR + TR; // increment the day thisDay.setDate(thisDay.getDate() + 1); } while (dp_DateAdd( "dd", 1, thisDay).getDate() > 1) // fill in any trailing blanks if (thisDay.getDay() > 0) { for (i = 6; i > thisDay.getDay(); i--) html += TD + " " + xTD; } html += xTR; html += xTABLE; html += xTD; html += xTR; html += TR; html += TD // add a button to allow the user to easily return to today, or close the calendar html += TABLE_button; html += TR_todaybutton; html += TD_todaybuttonLeft; // html += "
" + dp_ThisMonthText + "
"; html += xTD; html += TD_todaybuttonRight; html += "
" + dp_CloseText + "
"; html += xTD; html += xTR; html += xTABLE; // and finally, close the table html += xTD; html += xTR; html += xTABLE; html += xTD; html += xTR; html += xTABLE; document.getElementById(dp_datePickerDivID).innerHTML = html; dp_adjustiFrame(); } function dp_getButtonCode(dataFieldDayName, dataFieldMonthName, dateVal, adjust, label) { var newDate = new Date(dp_DateAdd( "mm", adjust, dateVal)); var newMonth = dp_PadLeft(newDate.getMonth(), 2); var newYear = ("20" + dp_Right(newDate.getFullYear(),2)); var ButtonDate = new String( "" + newYear + dp_PadLeft(newDate.getMonth()+1, 2)); if ( (adjust==1 && ButtonDate > dp_maxMonth) || (adjust==-1 && ButtonDate < dp_minMonth) ) return '' else return "
" + label + "
"; } function dp_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 (dp_dateFormat) { case "dmy" : return dayString + dp_dateSeparator + monthString + dp_dateSeparator + ("20" + dp_Right(dateVal.getFullYear(),2)); case "ymd" : return ("20" + dp_Right(dateVal.getFullYear(),2)) + dp_dateSeparator + monthString + dp_dateSeparator + dayString; case "mdy" : default : return monthString + dp_dateSeparator + dayString + dp_dateSeparator + ("20" + dp_Right(dateVal.getFullYear(),2)); } } function dp_getFieldDate(dateString) { var dateVal; var dArray; var d, m, y; try { dArray = dp_splitDateString(dateString); if (dArray) { switch (dp_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 dp_CloseDatePicker() { var pickerDiv = document.getElementById(dp_datePickerDivID); if (pickerDiv) { document.onmousedown = null; pickerDiv.style.visibility = "hidden"; pickerDiv.style.display = "none"; var iFrameDiv = document.getElementById(dp_iFrameDivID); if (iFrameDiv) try { iFrameDiv.style.visibility = pickerDiv.style.visibility ; iFrameDiv.style.display = pickerDiv.style.display; } catch(e) { } } } function dp_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 dp_updateDateField(dataDayFieldName, dataMonthFieldName, dateString) { if (dateString) { var tmpValues = dateString.split(dp_defaultDateSeparator); dp_SetSelectedWithValue(dataDayFieldName, "" + tmpValues[2]); dp_SetSelectedWithValue(dataMonthFieldName, "" + tmpValues[1] + tmpValues[0]); if (dataMonthFieldName == "ETAMonth"){ gETADay = '' + tmpValues[2]; gETAMonth = '' + tmpValues[1] + tmpValues[0]; } else{ gETTDay = '' + tmpValues[2]; gETTMonth = '' + tmpValues[1] + tmpValues[0]; } } var pickerDiv = document.getElementById(dp_datePickerDivID); if (pickerDiv) { document.onmousedown = null; pickerDiv.style.visibility = "hidden"; pickerDiv.style.display = "none"; } // alert( dataDayFieldName ); // set opening hours for Pickup OR Return date setOpeningHours(dataDayFieldName.substr(0,3)) //defined in Dropdown.js dp_adjustiFrame(); if (dataMonthFieldName == "ETAMonth"); setETTDay(); // if (dataMonthFieldName == "ETTMonth") CheckOutMonth(); } function dp_adjustiFrame(pickerDiv, iFrameDiv) { // Using an "iFrame shim" to make sure the datepicker is in front of list elements // Opera doesn't like this, so if we're using Opera, don't even try var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1); if (is_opera) return; try { if (!document.getElementById(dp_iFrameDivID)) { var newNode = document.createElement('IFRAME'); newNode.setAttribute("id", dp_iFrameDivID); newNode.setAttribute("src", "javascript:false;"); newNode.setAttribute("scrolling", "no"); newNode.setAttribute("frameborder", "0"); document.body.appendChild(newNode); } if (!pickerDiv) pickerDiv = document.getElementById(dp_datePickerDivID); if (!iFrameDiv) iFrameDiv = document.getElementById(dp_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) { } }