Resulta que tengo una pagina con 2 calendarios, uno para registrar la fecha de ida y el otro calendario para registrar la fecha de regreso. Después de tango googlear encontré uno que corre a la perfección pero solo en firefox ya que cuando selecciono la imagen del calendario se me abre un popup. La diferencia es en IE ya que no se me abre un popup sino que en una pagina nueva y no es una ventana emergente.
este es el codigo de la pagina de los calendarios
Código:
y este es el codigo del javascript<html> <head> <title>calendario</title> <link rel="stylesheet" type="text/css" href="screen.css" media="all" /> <script language="JavaScript" src="calendar1.js"></script> </head> <body> <form name="cal"> <input type="Text" name="fechaida" value=""> <a href="javascript:cal1.popup();"> <img src="img/cal.gif" width="16" height="16" border="0"></a> <br> <input type="Text" name="fecharegreso" value=""> <a href="javascript:cal2.popup();"> <img src="img/cal.gif" width="16" height="16" border="0"></a> </form> <script language="JavaScript"> var cal1 = new calendar1(document.forms['cal'].elements['fechaida']); cal1.year_scroll = true; cal1.time_comp = false; var cal2 = new calendar1(document.forms['cal'].elements['fecharegreso']); cal2.year_scroll = true; cal2.time_comp = false; </script> </body> </html>
Código:
EL ARCHIVO DEL CALENDARIO LO TENDRE Q COLOCAR DESPUES PORQUE NO ME DEJA COLOCAR MAS CODIGO.var NUM_CENTYEAR = 30; // is time input control required by default var BUL_TIMECOMPONENT = false; // are year scrolling buttons required by default var BUL_YEARSCROLL = true; var calendars = []; var RE_NUM = /^\-?\d+$/; function calendar1(obj_target) { // assigning methods this.gen_date = cal_gen_date1; this.gen_time = cal_gen_time1; this.gen_tsmp = cal_gen_tsmp1; this.prs_date = cal_prs_date1; this.prs_time = cal_prs_time1; this.prs_tsmp = cal_prs_tsmp1; this.popup = cal_popup1; // validate input parameters if (!obj_target) return cal_error("Error calling the calendar: no target control specified"); if (obj_target.value == null) return cal_error("Error calling the calendar: parameter specified is not valid target control"); this.target = obj_target; this.time_comp = BUL_TIMECOMPONENT; this.year_scroll = BUL_YEARSCROLL; // register in global collections this.id = calendars.length; calendars[this.id] = this; } function cal_popup1 (str_datetime) { if (str_datetime) this.dt_current = this.prs_tsmp(str_datetime); else this.dt_selected = this.dt_current = this.prs_tsmp(this.target.value); if (!this.dt_current) return; var obj_calwindow = window.open( 'calendar.html?id=' + this.id + '&s=' + this.dt_selected.valueOf() + '&c=' + this.dt_current.valueOf(), 'Calendar', 'width=200,height=' + (this.time_comp ? 215 : 190) + ',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes' ); obj_calwindow.opener = window; obj_calwindow.focus(); } // timestamp generating function function cal_gen_tsmp1 (dt_datetime) { return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime)); } // date generating function function cal_gen_date1 (dt_datetime) { return ( (dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "-" + (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "-" + dt_datetime.getFullYear() ); } // time generating function function cal_gen_time1 (dt_datetime) { return ( (dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":" + (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":" + (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds()) ); } // timestamp parsing function function cal_prs_tsmp1 (str_datetime) { // if no parameter specified return current timestamp if (!str_datetime) return (new Date()); // if positive integer treat as milliseconds from epoch if (RE_NUM.exec(str_datetime)) return new Date(str_datetime); // else treat as date in string format var arr_datetime = str_datetime.split(' '); return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0])); } // date parsing function function cal_prs_date1 (str_date) { var arr_date = str_date.split('-'); if (arr_date.length != 3) return cal_error ("Invalid date format: '" + str_date + "'.\nFormat accepted is dd-mm-yyyy."); if (!arr_date[0]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found."); if (!RE_NUM.exec(arr_date[0])) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers."); if (!arr_date[1]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo month value can be found."); if (!RE_NUM.exec(arr_date[1])) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers."); if (!arr_date[2]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo year value can be found."); if (!RE_NUM.exec(arr_date[2])) return cal_error ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers."); var dt_date = new Date(); dt_date.setDate(1); if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed range is 01-12."); dt_date.setMonth(arr_date[1]-1); if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900); dt_date.setFullYear(arr_date[2]); var dt_numdays = new Date(arr_date[2], arr_date[1], 0); dt_date.setDate(arr_date[0]); if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+"."); return (dt_date) } // time parsing function function cal_prs_time1 (str_time, dt_date) { if (!dt_date) return null; var arr_time = String(str_time ? str_time : '').split(':'); if (!arr_time[0]) dt_date.setHours(0); else if (RE_NUM.exec(arr_time[0])) if (arr_time[0] < 24) dt_date.setHours(arr_time[0]); else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23."); else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers."); if (!arr_time[1]) dt_date.setMinutes(0); else if (RE_NUM.exec(arr_time[1])) if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]); else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59."); else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers."); if (!arr_time[2]) dt_date.setSeconds(0); else if (RE_NUM.exec(arr_time[2])) if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]); else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59."); else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers."); dt_date.setMilliseconds(0); return dt_date; } function cal_error (str_message) { alert (str_message); return null; }
Ojalá que me puedan ayudar.