function get_calendar() { try { return (document.getElementById("calendar")) || document.all["calendar"]; } catch(e){return null;} } function findPos_calendar(obj) { var coords = {x: 0, y: 0}; if (obj.offsetParent) { coords.x = obj.offsetLeft; coords.y = obj.offsetTop; while (obj = obj.offsetParent) { coords.x += obj.offsetLeft; coords.y += obj.offsetTop; } } return coords; } function hide_calendar() { var winbox = get_calendar(); if(winbox == null) return; winbox.style.visibility = "hidden"; testDurataNoleggio(); return; } function show_calendar(str_target, str_dateobj, lingua) { var winbox = get_calendar(); if(winbox != null){ if(winbox.style.visibility == "visible") { hide_calendar(); return; } var str_datetime = str_dateobj.value; var coo = findPosCalendar(str_dateobj); if (lingua == ''){ lingua = 'it'; } gen_calendar(str_target, str_datetime, coo.x, coo.y,lingua); } } function gen_calendarMounth(str_target,dt_month,x,y,lingua) { var s = "\"javascript:gen_calendar('" + str_target + "', '" + dt2dtstr(dt_month) + "'," + x + "," + y + ",'"+lingua+"');\""; return s; } function gen_calendar(str_target, str_datetime, x, y, lingua) { if (lingua == 'it'){ var arr_months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno","Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]; var week_days = ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"]; var mese_next = 'mese successivo'; var mese_prev = 'mese precedente'; }else{ var arr_months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; var mese_next = 'next month'; var mese_prev = 'previous month'; } var n_weekstart = 1; // day week starts from (normally 0 or 1) var dt_datetime = (str_datetime == null || str_datetime =="" ? new Date() : str2dt(str_datetime)); var dt_prev_month = new Date(dt_datetime); dt_prev_month.setMonth(dt_datetime.getMonth()-1); var dt_next_month = new Date(dt_datetime); dt_next_month.setMonth(dt_datetime.getMonth()+1); var dt_firstday = new Date(dt_datetime); dt_firstday.setDate(1); dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7); var dt_lastday = new Date(dt_next_month); dt_lastday.setDate(0); var winbox = get_calendar(); if(winbox == null){ alert("help"); } var dt_to_day = new Date(); // html generation (feel free to tune it for your particular application) // print calendar header if ((dt_to_day.getMonth()<=dt_prev_month.getMonth())|| (dt_to_day.getYear()\n"+ "\n"+ "\n"+ "\n" + "\n" + "\n" + "\n" + "\n" ); //----------------------------------------------------------- var dt_current_day = new Date(dt_firstday); // print weekdays titles str_buffer += "\n"; for (var n=0; n<7; n++) str_buffer += " \n"; // print calendar table str_buffer += "\n"; while (dt_current_day.getMonth() == dt_datetime.getMonth() || dt_current_day.getMonth() == dt_firstday.getMonth()) { // print row heder str_buffer += "\n"; for (var n_current_wday=0; n_current_wday<7; n_current_wday++) { //if (dt_current_day.getDate() == dt_datetime.getDate() && // dt_current_day.getMonth() == dt_datetime.getMonth()){ //alert(dt_current_day.getDate()+"-"+dt_current_day.getMonth()+"/"+dt_datetime.getDate()+"-"+dt_datetime.getMonth()+"/"+dt_to_day.getDate()+"-"+dt_to_day.getMonth()); if ((dt_current_day.getDate() == dt_to_day.getDate()) && (dt_current_day.getMonth() == dt_to_day.getMonth()) && (dt_current_day.getYear() == dt_to_day.getYear())){ // print current date str_buffer += " \n"; dt_current_day.setDate(dt_current_day.getDate()+1); } // print row footer str_buffer += "\n"; } // print calendar footer str_buffer += "
" + "" + arr_months[dt_datetime.getMonth()] + " " + dt_datetime.getFullYear() + "" + "\""+mese_next+"\"
"+ week_days[(n_weekstart+n)%7]+"
"; }else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6){ // weekend days str_buffer += " "; }else{ // print working days of current month str_buffer += " "; } //if (dt_current_day.getDate() >= dt_to_day.getDate() && dt_current_day.getMonth() == dt_to_day.getMonth()) // print days of current month // str_buffer += "" + dt_current_day.getDate()+""; //else if (dt_current_day > dt_to_day) if (dt_current_day.getMonth() < dt_to_day.getMonth() && dt_current_day.getYear() <= dt_to_day.getYear()) str_buffer += dt_current_day.getDate(); else if (dt_current_day.getMonth() == dt_to_day.getMonth() && dt_current_day.getDate() < dt_to_day.getDate() && dt_current_day.getYear() <= dt_to_day.getYear() ) str_buffer += dt_current_day.getDate(); else if (dt_current_day.getMonth() == dt_datetime.getMonth()) // print days of other months str_buffer += "" + dt_current_day.getDate()+""; else //str_buffer += dt_current_day.getDate(); str_buffer += ""; str_buffer += "
"; winbox.style.left = x;//str_dateobj.offsetLeft + 10; winbox.style.top = y + 25;;//str_dateobj.offsetTop + 37; winbox.innerHTML = str_buffer; winbox.style.visibility = "visible"; /* var vWinCal = window.open("", "Calendar", "width=200,height=250,status=no,resizable=yes,top=200,left=200"); vWinCal.opener = self; var calc_doc = vWinCal.document; calc_doc.write (str_buffer); calc_doc.close(); */ } // datetime parsing and formatting routimes. modify them if you wish other datetime format function str2dt (str_datetime) { var re_date = /^(\d+)\-(\d+)\-(\d+)$/; if (!re_date.exec(str_datetime)) return alert("Invalid Datetime format: "+ str_datetime); return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1)); } function dt2dtstr (dt_datetime) { var month = dt_datetime.getMonth()+1; var day = dt_datetime.getDate(); if(day<10) day = "0" + day; if(month<10) month= "0" + month; return (new String (day + "-" + month + "-" + dt_datetime.getFullYear())); } function dt2tmstr (dt_datetime) { return (new String ( dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds())); } function findPosCalendar(obj) { var coords = {x: 0, y: 0}; if (obj.offsetParent) { coords.x = obj.offsetLeft; coords.y = obj.offsetTop; while (obj = obj.offsetParent) { coords.x += obj.offsetLeft; coords.y += obj.offsetTop; } } return coords; } function testDurataNoleggio() { var e = getElement("parid"); if (e.value == "1") { var wbx = getElement("ctrl_supkm"); wbx.style.visibility = "hidden"; var kmill = getElement("KMILLIMITATO"); kmill.checked=true; } else calcoloDurataNoleggio(); } function calcoloDurataNoleggio() { var e = null; var kmill = null; e = getElement("tp_data_inizio"); var nol_i = str2dt(e.value); e = getElement("tp_data_fine"); var nol_f = str2dt(e.value); kmill = getElement("KMILLIMITATO"); var ng = (nol_f-nol_i)/86400000; e = getElement("tp_km"); var wbx = getElement("ctrl_km"); if(ng >= 1) { wbx.style.visibility = "visible"; wbx.style.visibility = "visible"; e.value=""; //e.disabled=false; } else if(ng < 1) { wbx.style.visibility = "hidden"; kmill.checked=false; //e.value=ng*100; e.value=""; //e.disabled=true; } else { wbx.style.visibility = "hidden"; e.value=""; //e.disabled=true; } }