var bolBrowserOK = false; version=0; if(navigator.appVersion.indexOf("MSIE")!=-1){ temp = navigator.appVersion.split("MSIE"); version = parseFloat(temp[1]); if (version>=5.5){ bolBrowserOK = true; } }else{ if(navigator.userAgent.indexOf("Firefox")!=-1){ var versionindex = navigator.userAgent.indexOf("Firefox") + 8; if(parseInt(navigator.userAgent.charAt(versionindex))>=1){ bolBrowserOK = true; } } } var CALCalendarstylesheet = "/bookingform/calendar/stylesheet/Calendar.css" var strMonthsOfYear = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); var datBookingStartDate = new Date('2008/7/12'); var datBookingEndDate = new Date('2008/9/3'); var objParentPageObj = ""; var datCurrentWorkingDate = ""; var datCurrentHoverDate = ""; function DayExtension(xDay){ val = ""; switch (parseInt(xDay)){ case 1: case 21: case 31: val = "st"; break; case 2: case 22: val = "nd"; break; case 3: case 23: val = "rd"; break; default: val = "th"; break; } return val; } function ChangeDate(dayOver){ datCurrentHoverDate = new Date(datCurrentWorkingDate.getFullYear() + "/" + (datCurrentWorkingDate.getMonth() + 1) + "/" + dayOver); document.getElementById("CALCurrentMonth").innerHTML = datCurrentHoverDate.getDate() + DayExtension(datCurrentHoverDate.getDate()) + " " + strMonthsOfYear[datCurrentHoverDate.getMonth()] + " " + datCurrentHoverDate.getFullYear(); } function KillCalendar(){ document.getElementById("CALPopUpCalendarAreaHoldingDIV").innerHTML = ""; document.body.removeChild(document.getElementById("CALOUTArea")); } function SelectDate(dayOver){ datCurrentHoverDate = new Date(datCurrentWorkingDate.getFullYear() + "/" + (datCurrentWorkingDate.getMonth() + 1) + "/" + dayOver); datCurrentWorkingDate = new Date(datCurrentHoverDate); objParentPageObj.value = datCurrentWorkingDate.getDate() + "/" + (datCurrentWorkingDate.getMonth() + 1) + "/" + datCurrentWorkingDate.getFullYear(); KillCalendar(); } function ChangeMonth(intMonthsToAdd){ datCurrentHoverDate = new Date(datCurrentWorkingDate.getFullYear() + "/" + (datCurrentWorkingDate.getMonth() + intMonthsToAdd) + "/01"); datCurrentWorkingDate = new Date(datCurrentHoverDate); BuildCalendar(); } function BuildCalendar(){ var newCalDiv = document.createElement('div'); newCalDiv.id = "CALOUTArea"; document.getElementsByTagName("body")[0].appendChild(newCalDiv); if(window.addEventListener){ document.getElementById("CALOUTArea").addEventListener('click', KillCalendar, false); }else{ newCalDiv.attachEvent('onclick', KillCalendar); } // Get current month of working date var intCurrentMonth = datCurrentWorkingDate.getMonth(); // Get current last day of working date var tmpdatNumDaysInMonth = new Date(datCurrentWorkingDate.getFullYear() + "/" + (datCurrentWorkingDate.getMonth() + 2) + "/" + "00"); // Get number of days in month var tmpdatNumDaysofWeek = new Date(datCurrentWorkingDate.getFullYear() + "/" + (datCurrentWorkingDate.getMonth() + 1) + "/" + "01"); // if first day Sunday then set first day to 6 else set to 0 if(tmpdatNumDaysofWeek.getDay() == 0) {intResetDaysOfWeekForMonday = 6;}else{intResetDaysOfWeekForMonday = tmpdatNumDaysofWeek.getDay() -1;} var intNumDaysInMonth = tmpdatNumDaysInMonth.getDate(); var strStringOfCalendar = ""; // Start building calendar strStringOfCalendar = "
"; strStringOfCalendar += "
Raileurope.co.uk
\"Close
"; strStringOfCalendar += "
"; strStringOfCalendar += "
\"Select
" strStringOfCalendar += "
" + datCurrentHoverDate.getDate() + DayExtension(datCurrentHoverDate.getDate()) + " " + strMonthsOfYear[datCurrentHoverDate.getMonth()] + " " + datCurrentHoverDate.getFullYear() + "
"; strStringOfCalendar += "
\"Select
" strStringOfCalendar += "
"; strStringOfCalendar += "
"; strStringOfCalendar += "
M
"; strStringOfCalendar += "
T
"; strStringOfCalendar += "
W
"; strStringOfCalendar += "
T
"; strStringOfCalendar += "
F
"; strStringOfCalendar += "
S
"; strStringOfCalendar += "
S
"; strStringOfCalendar += "
"; strStringOfCalendar += "
"; for(var tmpDaysInMonthCount = 1; tmpDaysInMonthCount <= intResetDaysOfWeekForMonday; tmpDaysInMonthCount++){ strStringOfCalendar += "
 
"; } for(var tmpDaysInMonthCount = 1; tmpDaysInMonthCount <= intNumDaysInMonth; tmpDaysInMonthCount++){ var tmpBuildingDate = new Date(datCurrentWorkingDate.getFullYear() + "/" + (datCurrentWorkingDate.getMonth() + 1) + "/" + tmpDaysInMonthCount); if(intDaysToBook > 0){ if((tmpBuildingDate >= datBookingStartDate) && (tmpBuildingDate <= datBookingEndDate)){ strStringOfCalendar += "
"; }else{ strStringOfCalendar += "
"; } }else{ if(arrOfDateToUse != "undefined"){ if(arrOfDateToUse.length > 0){ intfound = 0; for(var tmpC = 0; tmpC < arrOfDateToUse.length; tmpC ++){ var tmpD = new Date(arrOfDateToUse[tmpC]); if(tmpD.toString() == tmpBuildingDate.toString()){ intfound = 1; strStringOfCalendar += "
"; } } if(intfound==0){strStringOfCalendar += "
"; } }else{ strStringOfCalendar += "
"; } }else{ strStringOfCalendar += "
"; } } strStringOfCalendar += tmpDaysInMonthCount ; strStringOfCalendar += "
"; intResetDaysOfWeekForMonday ++; if(intResetDaysOfWeekForMonday == 7){ intResetDaysOfWeekForMonday = 0; strStringOfCalendar += "
"; strStringOfCalendar += "
"; } } for(var tmpDaysInMonthCount = intResetDaysOfWeekForMonday; tmpDaysInMonthCount <= 6; tmpDaysInMonthCount++){ strStringOfCalendar += "
 
"; } strStringOfCalendar += "
"; strStringOfCalendar += "
Travelling within 7 days? Call 08448 484 051
"; document.getElementById("CALPopUpCalendarAreaHoldingDIV").innerHTML = strStringOfCalendar; } function findObjectsPosX(obj){ var tmpLeft = 0; tmpLeft = obj.offsetLeft; while(obj.tagName != "BODY" && obj.tagName != "HTML"){ var obj = obj.offsetParent; tmpLeft += obj.offsetLeft +7.5; } return(tmpLeft); } function findObjectsPosY(obj){ var tmpLeft = 0; tmpLeft = obj.offsetTop; while(obj.tagName != "BODY" && obj.tagName != "HTML"){ var obj = obj.offsetParent; tmpLeft += obj.offsetTop -15 ; } return(tmpLeft); } function TestForParentDate(objToUpdate){ var tmpValue = objToUpdate.value.split("/"); if(tmpValue.length == 3){ if((isNaN(tmpValue[0]) == false) && (isNaN(tmpValue[1]) == false) && (isNaN(tmpValue[2]) == false) && (tmpValue[0] != "") && (tmpValue[1] != "") && (tmpValue[2] != "")){ if(tmpValue[2].length > 4){ var tmpYear = datBookingStartDate.getFullYear(); }else{ if(tmpValue[2].length == 4){ var tmpYear = tmpValue[2]; }else{ if(tmpValue[2].length == 3) { tmpValue[2] = tmpValue[2].substr(1,2); } if(tmpValue[2].length == 1) { tmpValue[2] = "0" + tmpValue[2]; } var tmpYear = (datBookingStartDate.getFullYear() + "").substr(0,2) + tmpValue[2]; } } if(tmpValue[1] > 12) {tmpValue[1] = 12;} if(tmpValue[0] > 31) {tmpValue[0] = 31;} datCurrentSelectedDate = new Date(parseInt(tmpYear) + "/" + parseInt(tmpValue[1]) + "/" + parseInt(tmpValue[0])); }else{ datCurrentSelectedDate = new Date(datBookingStartDate); } }else{ datCurrentSelectedDate = new Date(datBookingStartDate); } return(datCurrentSelectedDate); } function StartCalendar(objToUpdate, objCalledFrom, objParent){ if(bolBrowserOK == true){ try{ arrOfDateToUse = arrAllowedDates; }catch(err){ arrOfDateToUse = "undefined"; } if(arrOfDateToUse != "undefined"){ if(arrOfDateToUse.length > 0){ intDaysToBook = 0; datCurrentWorkingDate = new Date(arrOfDateToUse[0]); datCurrentHoverDate = new Date(datCurrentWorkingDate); objParentPageObj = objToUpdate; } }else{ CalDays(); datBookingEndDate = new Date(datBookingStartDate.getFullYear() + "/" + (datBookingStartDate.getMonth() + 1) + "/" + (datBookingStartDate.getDate() + intDaysToBook)); objParentPageObj = objToUpdate; var tmpValue = objToUpdate.value.split("/"); if(tmpValue.length == 3){ if((isNaN(tmpValue[0]) == false) && (isNaN(tmpValue[1]) == false) && (isNaN(tmpValue[2]) == false) && (tmpValue[0] != "") && (tmpValue[1] != "") && (tmpValue[2] != "")){ if(tmpValue[2].length > 4){ var tmpYear = datBookingStartDate.getFullYear(); }else{ if(tmpValue[2].length == 4){ var tmpYear = tmpValue[2]; }else{ if(tmpValue[2].length == 3) { tmpValue[2] = tmpValue[2].substr(1,2); } if(tmpValue[2].length == 1) { tmpValue[2] = "0" + tmpValue[2]; } var tmpYear = (datBookingStartDate.getFullYear() + "").substr(0,2) + tmpValue[2]; } } if(tmpValue[1] > 12) {tmpValue[1] = 12;} if(tmpValue[0] > 31) {tmpValue[0] = 31;} datCurrentSelectedDate = new Date(parseInt(tmpYear) + "/" + parseInt(tmpValue[1]) + "/" + parseInt(tmpValue[0])); }else{ if(objParent){ datCurrentSelectedDate = new Date(TestForParentDate(objParent)); }else{ datCurrentSelectedDate = new Date(datBookingStartDate); } } }else{ if(objParent){ datCurrentSelectedDate = new Date(TestForParentDate(objParent)); }else{ datCurrentSelectedDate = new Date(datBookingStartDate); } } // Makes sure passed date is within bounds of start/end dates if(datCurrentSelectedDate < datBookingStartDate){ datCurrentSelectedDate = datBookingStartDate;} if(datCurrentSelectedDate > datBookingEndDate){ datCurrentSelectedDate = datBookingEndDate;} datCurrentWorkingDate = new Date(datCurrentSelectedDate); datCurrentHoverDate = new Date(datCurrentSelectedDate); } BuildCalendar(); document.getElementById("CALPopUpCalendarAreaHoldingDIV").style.left = findObjectsPosX(objCalledFrom) + "px"; document.getElementById("CALPopUpCalendarAreaHoldingDIV").style.top = ((findObjectsPosY(objCalledFrom) + objCalledFrom.offsetHeight) + 3) + "px"; return false; }else{ alert("Please enter the date in the following format dd/mm/yyyy."); } } function LoadCalendarParameters(){ var newCalDiv = document.createElement('div'); newCalDiv.id = "CALPopUpCalendarAreaHoldingDIV"; document.getElementsByTagName("body")[0].appendChild(newCalDiv); var newSS=document.createElement('link'); newSS.rel='stylesheet'; newSS.type='text/css'; newSS.href=escape(CALCalendarstylesheet); document.getElementsByTagName("head")[0].appendChild(newSS); } if(bolBrowserOK == true){ onload = LoadCalendarParameters; }