morciuch 2002/09/09 11:45:38 Added: webapp/javascript PopupCalendar.js Log: Initial check in Revision Changes Path 1.1 jakarta-jetspeed/webapp/javascript/PopupCalendar.js Index: PopupCalendar.js =================================================================== // Title: Timestamp picker // Description: See the demo at url // URL: http://us.geocities.com/tspicker/ // Script featured on: http://javascriptkit.com/script/script2/timestamp.shtml // Version: 1.0 // Date: 12-05-2001 (mm-dd-yyyy) // Author: Denis Gritcyuk ; // Notes: Permission given to use this script in any kind of applications if // header lines are left unchanged. Feel free to contact the author // for feature requests and/or donations var arr_months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; function show_calendar(str_target, str_datetime, str_format) { var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; 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, str_format)); 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); // html generation (feel free to tune it for your particular application) // print calendar header var str_buffer = new String ( "\n"+ "\n"+ " Calendar\n"+ "\n"+ "\n"+ "\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()) // print current date str_buffer += " \n"; dt_current_day.setDate(dt_current_day.getDate()+1); } // print row footer str_buffer += "\n"; } var vWinCal = window.open("", "Calendar", "width=200,height=220,status=no,resizable=no,top=200,left=200"); vWinCal.opener = self; var calc_doc = vWinCal.document; calc_doc.write (str_buffer); calc_doc.close(); } // Creates a date from string using regular expressions 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.$1-1, RegExp.$2)); } // Creates a date from string using parsing function str2dt(str_datetime, format) { dateFormat=format; formatChar = " "; aFormat = dateFormat.split(formatChar); if (aFormat.length<3) { formatChar = "/"; aFormat = dateFormat.split(formatChar); if (aFormat.length<3) { formatChar = "."; aFormat = dateFormat.split(formatChar); if (aFormat.length<3) { formatChar = "-"; aFormat = dateFormat.split(formatChar); if (aFormat.length<3) { // invalid date format formatChar=""; } } } } tokensChanged = 0; if ( formatChar != "" ); { // use user's date aData = str_datetime.split(formatChar); for (i=0;i<3;i++) { if ((aFormat[i]=="d") || (aFormat[i]=="dd")) { dateSelected = parseInt(aData[i], 10); tokensChanged ++; } else if ((aFormat[i]=="m") || (aFormat[i]=="mm")) { monthSelected = parseInt(aData[i], 10) - 1; tokensChanged ++; } else if (aFormat[i]=="yyyy") { yearSelected = parseInt(aData[i], 10); tokensChanged ++; } else if (aFormat[i]=="mmm") { for (j=0; j<12; j++) { if (aData[i]==arr_months[j].substring(0,3)) { monthSelected=j; tokensChanged ++; } } } } } if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected)) { today = new Date() dateNow = today.getDate() monthNow = today.getMonth() yearNow = today.getFullYear(); dateSelected = dateNow; monthSelected = monthNow; yearSelected = yearNow; alert("Current date [" + str_datetime + "] cannot be parsed according to specified format [" + format + "]. Using current date instead"); } return (new Date(yearSelected, monthSelected, dateSelected)); } // datetime to date string routine function dt2dtstrX(dt_datetime, format) { return(new String ( (dt_datetime.getMonth()+1)+"/"+dt_datetime.getDate()+"/"+dt_datetime.getFullYear())); } /** * Routine to format a datetime into string based on the format pattern specified. *

* The date format can have three types of separators: hyphen(-), space( ), or slash(/), but must be consistent in their usage. E.g. * d/m/yyyy * The acceptable tokens are : *

    *
  • d - day *
  • dd - day (padded with 0 if less than 10) *
  • m - month (in numbers) *
  • mm - month (in numbers, padded with 0 if less than 10) *
  • mmm - month (in words) *
  • yyyy - year *
* * @param datetime * @param format */ function dt2dtstr(dt_datetime, dateFormat) { d = dt_datetime.getDate(); m = dt_datetime.getMonth(); y = dt_datetime.getFullYear(); sTmp = dateFormat; sTmp = sTmp.replace ("dd",""); sTmp = sTmp.replace ("d",""); sTmp = sTmp.replace ("",padZero(d)); sTmp = sTmp.replace ("",d); sTmp = sTmp.replace ("mmm",""); sTmp = sTmp.replace ("mm",""); sTmp = sTmp.replace ("m",""); sTmp = sTmp.replace ("",m+1); sTmp = sTmp.replace ("",padZero(m+1)); sTmp = sTmp.replace ("",arr_months[m].substring(0,3)); return sTmp.replace ("yyyy",y); } // pad with zeros function padZero(num) { return (num < 10)? '0' + num : num ; } -- To unsubscribe, e-mail: For additional commands, e-mail:
<<"+ "" +arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+">>
"+ ""+ 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.getMonth() == dt_datetime.getMonth()) // print days of current month str_buffer += ""+ ""; else // print days of other months str_buffer += ""+ ""; str_buffer += dt_current_day.getDate()+"