/* --- Swazz Javascript Calendar --- /* --- v 1.0 3rd November 2006 By Oliver Bryant http://calendar.swazz.org/ License: Public Domain The javascript calendar available here is a free, lightweight widget which shows a calendar for use in picking dates on form fields. Code to activate the calendar close.gif could be from http://lh6.ggpht.com/_S4TaEbhoBZc/Rt8ad-K_AZI/AAAAAAAABlw/moApV80jJvo/close.gif (search www.google.com for small pictures, pick one) Call calendar({opt1: val1, opt2: val2}) for configuration. */ var ccc = {past: false, startat: 0, close: false, delim: '/', imgpath: ''}; var caldays = new Array('S','M','T','W','T','F','S'); var mn=new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'); function calendar(info) { for (var e in ccc) if (info[e]) ccc[e] = info[e]; gencalendar(); } function getObj(objID) { if (document.getElementById) {return document.getElementById(objID);} else if (document.all) {return document.all[objID];} else if (document.layers) {return document.layers[objID];} } function checkClick(e) { e?evt=e:evt=event; CSE=evt.target?evt.target:evt.srcElement; if (getObj('fc')) if (!isChild(CSE,getObj('fc'))) getObj('fc').style.display='none'; } function isChild(s,d) { while(s) { if (s==d) return true; s=s.parentNode; } return false; } function Left(obj) { var curleft = 0; if (obj.offsetParent) { while (obj.offsetParent) { curleft += obj.offsetLeft obj = obj.offsetParent; } } else if (obj.x) curleft += obj.x; return curleft; } function Top(obj) { var curtop = 0; if (obj.offsetParent) { while (obj.offsetParent) { curtop += obj.offsetTop obj = obj.offsetParent; } } else if (obj.y) curtop += obj.y; return curtop; } function gencalendar() { if (getObj('fc')) return; document.write(''); document.write(''); if (ccc.close) document.write(''); if (ccc.close) document.write(''); document.write(''); document.write(''); for (var i=0; i<7; i++) document.write(''); document.write(''); for(var kk=1;kk<=6;kk++) { document.write(''); for(var tt=1;tt<=7;tt++) { num=7 * (kk-1) - (-tt); document.write(''); } document.write(''); } document.write(''); } document.all?document.attachEvent('onclick',checkClick):document.addEventListener('click',checkClick,false); // Calendar script var now = new Date; var sccm=now.getMonth(); var sccy=now.getFullYear(); var ccm; var ccy; function popcalendar(name) { var input = getObj(name); if (!input) return; lcs(input); } var updobj; function lcs(ielem) { gencalendar(); updobj=ielem; updobj.select(); getObj('fc').style.left=Left(ielem); getObj('fc').style.top=Top(ielem)+ielem.offsetHeight; getObj('fc').style.display=''; // First check date is valid curdt=ielem.value; curdtarr=curdt.split(ccc.delim); isdt=true; for(var k=0;k= (cd -(-1))) && (d<=cd-(-marr[cm]))) { dip=ccc.past?false:((d-cd < sd)&&(cm==sccm)&&(cy==sccy)); htd=((hd!='')&&(d-cd==hd)); if (dip) f_cpps(getObj('v'+parseInt(d))); else if (htd) f_hds(getObj('v'+parseInt(d))); else f_cps(getObj('v'+parseInt(d))); getObj('v'+parseInt(d)).onmouseover=(dip)?null:cs_over; getObj('v'+parseInt(d)).onmouseout=(dip)?null:cs_out; getObj('v'+parseInt(d)).onclick=(dip)?null:cs_click; getObj('v'+parseInt(d)).innerHTML=d-cd; calvalarr[d]=''+(d-cd)+ccc.delim+(cm-(-1))+ccc.delim+cy; } else { getObj('v'+d).innerHTML=' '; getObj('v'+parseInt(d)).onmouseover=null; getObj('v'+parseInt(d)).onmouseout=null; getObj('v'+parseInt(d)).style.cursor='default'; } } } //getObj('fc'+cc).style.visibility='hidden'; function caddm() { marr=( (ccy % 4 == 0) || (ccy % 100 == 0) || (ccy % 400 == 0) )?mnl:mnn; ccm+=1; if (ccm>=12) { ccm=0; ccy++; } cdayf(); prepcalendar('',ccm,ccy); } function csubm() { marr=( (ccy % 4 == 0) || (ccy % 100 == 0) || (ccy % 400 == 0) )?mnl:mnn; ccm-=1; if (ccm<0) { ccm=11; ccy--; } cdayf(); prepcalendar('',ccm,ccy); } function cdayf() { if (ccc.past) return; if ((ccy>sccy)|((ccy==sccy)&&(ccm>=sccm))) return; else { ccy=sccy; ccm=sccm; } }