/** * ____ _____ * Dynarch Calendar -- JSCal2, version 1.0 \ /_ / / * Built at 2009/05/18 08:52 GMT \ / / / * \/ /_ / * (c) Dynarch.com 2009 \ / / * All rights reserved. / / * Visit www.dynarch.com/projects/calendar for details \/ * */ Calendar=(function(){function v(an){an=an||{};this.args=an=ah(an,{animation:!c,cont:null,bottomBar:true,date:new Date(),fdow:am("fdow"),min:null,max:null,reverseWheel:false,selection:[],selectionType:v.SEL_SINGLE,weekNumbers:false,align:"Bl/ / /T/r",inputField:null,trigger:null,dateFormat:"%d.%m.%Y",opacity:j?1:3,titleFormat:"%b %Y",disabled:Z,dateInfo:Z,onChange:Z,onSelect:Z});this.handlers={};var D=this;function ao(aq){var ap=an[aq];if(!(ap instanceof Array)){ap=[ap]}D.handlers[aq]=ap}an.min=U(an.min);an.max=U(an.max);this.date=U(an.date);this.fdow=an.fdow;ao("onSelect");ao("onChange");this.selection=new v.Selection(an.selection,an.selectionType,t(M,this));var P=H.call(this);if(an.cont){S(an.cont).appendChild(P)}if(an.trigger){o(S(an.trigger),"click",t(this.popup,this,an.trigger,null))}}var N=navigator.userAgent,q=/opera/i.test(N),ae=/Konqueror|Safari|KHTML/i.test(N),j=/msie/i.test(N)&&!q&&!(/mac_powerpc/i.test(N)),c=j&&/msie 6/i.test(N),u=/gecko/i.test(N)&&!ae&&!q&&!j,l=v.prototype;v.SEL_SINGLE=1;v.SEL_MULTIPLE=2;v.SEL_WEEK=3;v.dateToInt=R;v.intToDate=y;v.printDate=X;v.formatString=k;v.i18n=am;I18N=v.I18N={};v.LANG=function(P,D,an){I18N.__=I18N[P]={name:D,data:an}};v.setup=function(D){return new v(D)};l.moveTo=function(aC,az){aC=U(aC);var ay=ab(aC,this.date,true),ap,av=this.args,aD=av.min&&ab(aC,av.min),aE=av.max&&ab(aC,av.max);if(!av.animation){az=false}aa(aD!=null&&aD<=1,[this.els.navPrevMonth,this.els.navPrevYear],"DynarchCalendar-navDisabled");aa(aE!=null&&aE>=-1,[this.els.navNextMonth,this.els.navNextYear],"DynarchCalendar-navDisabled");if(aD<-1){aC=av.min;ap=1;ay=0}if(aE>1){aC=av.max;ap=2;ay=0}this.date=aC;this.refresh(!!az);this.callHooks("onChange",this,aC,az);if(az&&!(ay==0&&az==2)){if(this._bodyAnim){this._bodyAnim.stop()}var ar=this.els.body,at=C("div","DynarchCalendar-animBody-"+Q[ay],ar),aB=ar.firstChild,aq=ai(aB)||0.7,au=ap?V.brakes:ay==0?V.shake:V.accel_ab2,aA=ay*ay>4,an=aA?aB.offsetTop:aB.offsetLeft,ax=at.style,aw=aA?ar.offsetHeight:ar.offsetWidth;if(ay<0){aw+=an}else{if(ay>0){aw=an-aw}else{aw=Math.round(aw/7);if(ap==2){aw=-aw}}}if(!ap&&ay!=0){var P=at.cloneNode(true),D=P.style,ao=2*aw;P.appendChild(aB.cloneNode(true));D[aA?"marginTop":"marginLeft"]=aw+"px";ar.appendChild(P)}aB.style.visibility="hidden";at.innerHTML=Y(this);this._bodyAnim=al({onUpdate:t(function(aG,aI){var aH=au(aG);if(P){var aF=aI(aH,aw,ao)+"px"}if(ap){ax[aA?"marginTop":"marginLeft"]=aI(aH,aw,0)+"px"}else{if(aA||ay==0){ax.marginTop=aI(ay==0?au(aG*aG):aH,0,aw)+"px";if(ay!=0){D.marginTop=aF}}if(!aA||ay==0){ax.marginLeft=aI(aH,0,aw)+"px";if(ay!=0){D.marginLeft=aF}}}if(this.args.opacity>2&&P){ai(P,1-aH);ai(at,aH)}},this),onStop:t(function(aF){ar.innerHTML=Y(this,aC);this._bodyAnim=null},this)})}this._lastHoverDate=null;return aD>=-1&&aE<=1};l.isDisabled=function(D){var P=this.args;return(P.min&&ab(D,P.min)<0)||(P.max&&ab(D,P.max)>0)||P.disabled(D)};l.toggleMenu=function(){s(this,!this._menuVisible)};l.refresh=function(D){var P=this.els;if(!D){P.body.innerHTML=Y(this)}P.title.innerHTML=B(this);P.yearInput.value=this.date.getFullYear()};l.redraw=function(){var D=this.els;this.refresh();D.dayNames.innerHTML=h(this);D.menu.innerHTML=ag(this);if(D.bottomBar){D.bottomBar.innerHTML=E(this)}r(D.menu,t(function(P){if(P.className=="DynarchCalendar-menu-year"){o(P,this._focusEvents);D.yearInput=P}},this))};l.setLanguage=function(D){var P=v.setLanguage(D);if(P){this.fdow=P.data.fdow;this.redraw()}};v.setLanguage=function(D){var P=I18N[D];if(P){I18N.__=P}return P};l.focus=function(){try{this.els[this._menuVisible?"yearInput":"focusLink"].focus()}catch(D){}i.call(this)};l.blur=function(){this.els.focusLink.blur();this.els.yearInput.blur();w.call(this)};l.showAt=function(P,at,aq){if(this._showAnim){this._showAnim.stop()}aq=aq&&this.args.animation;var ar=this.els.topCont,an=this,D=this.els.body.firstChild,ap=D.offsetHeight,ao=ar.style;ao.position="absolute";ao.left=P+"px";ao.top=at+"px";ao.zIndex=10000;ao.display="";if(aq){D.style.marginTop=-ap+"px";this.args.opacity>1&&ai(ar,0);this._showAnim=al({onUpdate:function(au,av){D.style.marginTop=-av(V.accel_b(au),ap,0)+"px";an.args.opacity>1&&ai(ar,au)},onStop:function(){an.args.opacity>1&&ai(ar,"");an._showAnim=null}})}};l.hide=function(){var ao=this.els.topCont,P=this,D=this.els.body.firstChild,an=D.offsetHeight,ap=G(ao).y;if(this.args.animation){if(this._showAnim){this._showAnim.stop()}this._showAnim=al({onUpdate:function(aq,ar){P.args.opacity>1&&ai(ao,1-aq);D.style.marginTop=-ar(V.accel_b(aq),0,an)+"px";ao.style.top=ar(V.accel_ab(aq),ap,ap-10)+"px"},onStop:function(){ao.style.display="none";D.style.marginTop="";P.args.opacity>1&&ai(ao,"");P._showAnim=null}})}else{ao.style.display="none"}};l.popup=function(D,ao){D=S(D);if(!ao){ao=this.args.align}ao=ao.split(/\x2f/);var an=G(D),ar=this.els.topCont,au=ar.style,ap,at=T();au.visibility="hidden";au.display="";this.showAt(0,0);document.body.appendChild(ar);ap={x:ar.offsetWidth,y:ar.offsetHeight};function P(av){var aw={x:aq.x,y:aq.y};if(!av){return aw}if(/B/.test(av)){aw.y+=D.offsetHeight}if(/b/.test(av)){aw.y+=D.offsetHeight-ap.y}if(/T/.test(av)){aw.y-=ap.y}if(/l/.test(av)){aw.x-=ap.x-D.offsetWidth}if(/L/.test(av)){aw.x-=ap.x}if(/R/.test(av)){aw.x+=D.offsetWidth}if(/c/i.test(av)){aw.x+=(D.offsetWidth-ap.x)/2}if(/m/i.test(av)){aw.y+=(D.offsetHeight-ap.y)/2}return aw}var aq=an;aq=P(ao[0]);if(aq.yat.x+at.w){aq.x=an.x;aq=P(ao[2])}if(aq.y+ap.y>at.y+at.h){aq.y=an.y;aq=P(ao[3])}if(aq.x=0){if(D[P]===an){D.splice(P,1)}}};l._getInputYear=function(){var D=parseInt(this.els.yearInput.value,10);if(isNaN(D)){D=this.date.getFullYear()}return D};l._showTooltip=function(D){var P="",ao,an=this.els.tooltip;if(D){D=y(D);ao=this.args.dateInfo(D);if(ao&&ao.tooltip){P="
"+X(D,ao.tooltip)+"
"}}an.innerHTML=P};var ad=" align='center' cellspacing='0' cellpadding='0'";function h(D){var an=[""],P=0;if(D.args.weekNumbers){an.push("
",am("wk"),"
")}while(P<7){var ao=(P+++D.fdow)%7;an.push("=0?" class='DynarchCalendar-weekend'>":">",am("sdn")[ao],"")}an.push("");return an.join("")}function Y(ar,aC,az){aC=aC||ar.date;az=az||ar.fdow;aC=new Date(aC);var aE=aC.getMonth(),aq=[],aw=0,D=ar.args.weekNumbers;aC.setDate(1);var av=(aC.getDay()-az)%7;if(av<0){av+=7}aC.setDate(-av);aC.setDate(aC.getDate()+1);var aA=new Date(),ao=aA.getDate(),P=aA.getMonth(),aF=aA.getFullYear();aq[aw++]="";for(var ay=0;ay<6;++ay){aq[aw++]="";if(D){aq[aw++]=""}for(var ax=0;ax<7;++ax){var aB=aC.getDate(),au=aC.getMonth(),ap=aC.getFullYear(),an=10000*ap+100*(au+1)+aB,aD=ar.selection.isSelected(an),at=ar.isDisabled(aC);aq[aw++]="";aC.setDate(aB+1)}aq[aw++]=""}aq[aw++]="
"+a(aC)+"
=0){aq[aw++]=" DynarchCalendar-weekend"}if(au!=aE){aq[aw++]=" DynarchCalendar-day-othermonth"}if(aB==ao&&au==P&&ap==aF){aq[aw++]=" DynarchCalendar-day-today"}if(at){aq[aw++]=" DynarchCalendar-day-disabled"}if(aD){aq[aw++]=" DynarchCalendar-day-selected"}at=ar.args.dateInfo(aC);if(at&&at.klass){aq[aw++]=" "+at.klass}aq[aw++]="'>"+aB+"
";return aq.join("")}function m(D){var P=["
",!j?"":"","
",B(D),"
",h(D),"
"];if(D.args.bottomBar){P.push("
",E(D),"
")}P.push("
");return P.join("")}function B(D){return"
"+X(D.date,D.args.titleFormat)+"
"}function ag(P){var ap=["
",am("goToday"),"

 

"],aq=am("smn"),ao=0,D=ap.length,an;while(ao<12){ap[D++]="";for(an=4;--an>0;){ap[D++]=""}ap[D++]=""}ap[D++]="
"+aq[ao++]+"
";return ap.join("")}function E(D){return"
"+am("today")+"
"}var p={"DynarchCalendar-topCont":"topCont","DynarchCalendar-focusLink":"focusLink",DynarchCalendar:"main","DynarchCalendar-topBar":"topBar","DynarchCalendar-title":"title","DynarchCalendar-dayNames":"dayNames","DynarchCalendar-body":"body","DynarchCalendar-menu":"menu","DynarchCalendar-menu-year":"yearInput","DynarchCalendar-bottomBar":"bottomBar","DynarchCalendar-tooltip":"tooltip","DynarchCalendar-navBtn DynarchCalendar-prevYear":"navPrevYear","DynarchCalendar-navBtn DynarchCalendar-nextYear":"navNextYear","DynarchCalendar-navBtn DynarchCalendar-prevMonth":"navPrevMonth","DynarchCalendar-navBtn DynarchCalendar-nextMonth":"navNextMonth"};function H(){var an=C("div"),P=this.els={},D={mousedown:t(F,this,true),mouseup:t(F,this,false),mouseover:t(O,this,true),mouseout:t(O,this,false),keypress:t(I,this)};D[u?"DOMMouseScroll":"mousewheel"]=t(A,this);if(j){D.dblclick=D.mousedown;D.keydown=D.keypress}an.innerHTML=m(this);r(an.firstChild,function(ap){var ao=p[ap.className];if(ao){P[ao]=ap}if(j){ap.setAttribute("unselectable","on")}});o(P.main,D);o([P.focusLink,P.yearInput],this._focusEvents={focus:t(i,this),blur:t(e,this)});this.moveTo(this.date,false);return P.topCont}function i(){if(this._bluringTimeout){clearTimeout(this._bluringTimeout)}this.focused=true;J(this.els.main,"DynarchCalendar-focused")}function w(){this.focused=false;af(this.els.main,"DynarchCalendar-focused");if(this._menuVisible){s(this,false)}if(!this.args.cont){this.hide()}}function e(){this._bluringTimeout=setTimeout(t(w,this),50)}var Q={"-3":"backYear","-2":"back","0":"now","2":"fwd","3":"fwdYear"};function W(P,ao,D){if(this._bodyAnim){this._bodyAnim.stop()}var an;if(ao!=0){an=new Date(P.date);an.setDate(1);switch(ao){case"-Y":case -2:an.setFullYear(an.getFullYear()-1);break;case"+Y":case 2:an.setFullYear(an.getFullYear()+1);break;case"-M":case -1:an.setMonth(an.getMonth()-1);break;case"+M":case 1:an.setMonth(an.getMonth()+1);break}}else{an=new Date()}return P.moveTo(an,!D)}function s(an,P){an._menuVisible=P;aa(P,an.els.title,"DynarchCalendar-pressed-title");var ao=an.els.menu;if(c){ao.style.height=an.els.main.offsetHeight+"px"}if(!an.args.animation){K(ao,P);if(an.focused){an.focus()}}else{if(an._menuAnim){an._menuAnim.stop()}var D=an.els.main.offsetHeight;if(c){ao.style.width=an.els.topBar.offsetWidth+"px"}if(P){ao.firstChild.style.marginTop=-D+"px";an.args.opacity>0&&ai(ao,0);K(ao,true)}an._menuAnim=al({onUpdate:function(ap,aq){ao.firstChild.style.marginTop=aq(V.accel_b(ap),-D,0,!P)+"px";an.args.opacity>0&&ai(ao,aq(V.accel_b(ap),0,0.85,!P))},onStop:function(){an.args.opacity>0&&ai(ao,0.85);ao.firstChild.style.marginTop="";an._menuAnim=null;if(!P){K(ao,false);if(an.focused){an.focus()}}}})}}function F(au,at){at=at||window.event;var ap=n(at);if(ap&&!ap.getAttribute("disabled")){var D=ap.getAttribute("dyc-btn"),aq=ap.getAttribute("dyc-date"),ao=this.selection,P,an={mouseover:aj,mousemove:aj,mouseup:function(ax){var aw=ap.getAttribute("dyc-cls");if(aw){af(ap,ak(aw,1))}clearTimeout(P);d(document,an,true);an=null}};if(au){setTimeout(t(this.focus,this),1);var av=ap.getAttribute("dyc-cls");if(av){J(ap,ak(av,1))}if("menu"==D){this.toggleMenu()}else{if(ap&&/^[+-][MY]$/.test(D)){if(W(this,D)){var ar=t(function(){if(W(this,D,true)){P=setTimeout(ar,40)}else{an.mouseup();W(this,D)}},this);P=setTimeout(ar,350);o(document,an,true)}else{an.mouseup()}}else{if("year"==D){this.els.yearInput.focus();this.els.yearInput.select()}else{if(aq){if(ao.type==v.SEL_MULTIPLE){if(at.shiftKey&&this._selRangeStart){ao.selectRange(this._selRangeStart,aq)}else{if(!at.ctrlKey&&!ao.isSelected(aq)){ao.clear(true)}ao.set(aq,true);this._selRangeStart=aq}}else{ao.set(aq);this.moveTo(y(aq),2)}ap=this._getDateDiv(aq);O.call(this,true,{target:ap})}o(document,an,true)}}}if(j&&an&&/dbl/i.test(at.type)){an.mouseup()}if(/^(DynarchCalendar-(topBar|bottomBar|weekend|weekNumber|menu(-sep)?))?$/.test(ap.className)&&!this.args.cont){an.mousemove=t(g,this);this._mouseDiff=f(at,G(this.els.topCont));o(document,an,true)}}else{if("today"==D){if(!this._menuVisible&&ao.type==v.SEL_SINGLE){ao.set(new Date())}this.moveTo(new Date(),true);s(this,false)}else{if(/^m([0-9]+)/.test(D)){var aq=new Date(this.date);aq.setDate(1);aq.setMonth(RegExp.$1);aq.setFullYear(this._getInputYear());this.moveTo(aq,true);s(this,false)}}}if(!j){aj(at)}}}function g(P){P=P||window.event;var D=this.els.topCont.style,an=f(P,this._mouseDiff);D.left=an.x+"px";D.top=an.y+"px"}function n(P){var D=P.target||P.srcElement,an=D;while(D&&D.getAttribute&&!D.getAttribute("dyc-type")){D=D.parentNode}return D.getAttribute&&D||an}function ak(D,P){return"DynarchCalendar-"+D.split(/,/)[P]}function O(ap,ao){ao=ao||window.event;var an=n(ao);if(an){var P=an.getAttribute("dyc-type");if(P&&!an.getAttribute("disabled")){if(!ap||!this._bodyAnim||P!="date"){var D=an.getAttribute("dyc-cls");D=D?ak(D,0):"DynarchCalendar-hover-"+P;aa(ap,an,D);if(P=="date"){aa(ap,an.parentNode.parentNode,"DynarchCalendar-hover-week");this._showTooltip(an.getAttribute("dyc-date"))}af(this._getDateDiv(this._lastHoverDate),"DynarchCalendar-hover-date");this._lastHoverDate=null}}}if(!ap){this._showTooltip()}}function A(P){P=P||window.event;var D=n(P);if(D){var an=D.getAttribute("dyc-btn"),ao=P.wheelDelta?P.wheelDelta/120:-P.detail/3;ao=ao<0?-1:ao>0?1:0;if(this.args.reverseWheel){ao=-ao}if(/Y/i.test(an)){ao*=2}W(this,-ao);aj(P)}}function M(){this.refresh();var D=S(this.args.inputField),P=this.selection;if(D){var an=P.print(this.args.dateFormat);(/input|textarea/i.test(D.tagName))?D.value=an:D.innerHTML=an}this.callHooks("onSelect",this,P)}var ac={37:-1,38:-2,39:1,40:2},L={33:-1,34:1};function I(ax){if(this._menuAnim){return}ax=ax||window.event;var an=ax.target||ax.srcElement,ay=an.getAttribute("dyc-btn"),az=ax.keyCode,au=ax.charCode||az,D=ac[az];if("year"==ay&&az==13){var ap=new Date(this.date);ap.setDate(1);ap.setFullYear(this._getInputYear());this.moveTo(ap,true);s(this,false);return aj(ax)}if(this._menuVisible){if(az==27){s(this,false);return aj(ax)}}else{if(!ax.ctrlKey){D=null}if(D==null&&!ax.ctrlKey){D=L[az]}if(az==36){D=0}if(D!=null){W(this,D);return aj(ax)}au=String.fromCharCode(au).toLowerCase();var at=this.els.yearInput,P=this.selection;if(au==" "){s(this,true);this.focus();at.focus();at.select();return aj(ax)}if(au>="0"&&au<="9"){s(this,true);this.focus();at.value=au;at.focus();return aj(ax)}var aq=am("mn"),av=ax.shiftKey?-1:this.date.getMonth(),ar=0,ao;while(++ar<12){ao=aq[(av+ar)%12].toLowerCase();if(ao.indexOf(au)==0){var ap=new Date(this.date);ap.setDate(1);ap.setMonth((av+ar)%12);this.moveTo(ap,true);return aj(ax)}}if(az>=37&&az<=40){var ap=this._lastHoverDate;if(!ap&&!P.isEmpty()){ap=az<39?P.getFirstDate():P.getLastDate();if(apthis._lastDateVisible){ap=null}}if(!ap){ap=az<39?this._lastDateVisible:this._firstDateVisible}else{var aw=ap;ap=y(ap);var av=100;while(av-->0){switch(az){case 37:ap.setDate(ap.getDate()-1);break;case 38:ap.setDate(ap.getDate()-7);break;case 39:ap.setDate(ap.getDate()+1);break;case 40:ap.setDate(ap.getDate()+7);break}if(!this.isDisabled(ap)){break}}ap=R(ap);if(apthis._lastDateVisible){this.moveTo(ap)}}af(this._getDateDiv(aw),J(this._getDateDiv(ap),"DynarchCalendar-hover-date"));this._lastHoverDate=ap;return aj(ax)}if(az==13){if(this._lastHoverDate){if(P.type==v.SEL_MULTIPLE&&(ax.shiftKey||ax.ctrlKey)){if(ax.shiftKey&&this._selRangeStart){P.clear(true);P.selectRange(this._selRangeStart,this._lastHoverDate)}if(ax.ctrlKey){P.set(this._selRangeStart=this._lastHoverDate,true)}}else{P.reset(this._selRangeStart=this._lastHoverDate)}return aj(ax)}}if(az==27&&!this.args.cont){this.hide()}}}l._getDateDiv=function(D){var an=null;if(D){try{r(this.els.body,function(ao){if(ao.getAttribute("dyc-date")==D){throw an=ao}})}catch(P){}}return an};function k(D,P){return D.replace(/\$\{([^:\}]+)(:[^\}]+)?\}/g,function(aq,ap,ao){var ar=P[ap],an;if(ao){an=ao.substr(1).split(/\s*\|\s*/);ar=(ar>=an.length?an[an.length-1]:an[ar]).replace(/##?/g,function(at){return at.length==2?"#":ar})}return ar})}function am(an,P){var D=I18N.__.data[an];if(P&&typeof D=="string"){D=k(D,P)}return D}(v.Selection=function(an,P,D){this.type=P;this.sel=an instanceof Array?an:[an];this.onChange=D}).prototype={get:function(){return this.type==v.SEL_SINGLE?this.sel[0]:this.sel},isEmpty:function(){return this.sel.length==0},set:function(P,D){var an=this.type==v.SEL_SINGLE;if(P instanceof Array){this.sel=P;this.normalize();this.onChange(this)}else{P=R(P);if(an||!this.isSelected(P)){an?this.sel=[P]:this.sel.splice(this.findInsertPos(P),0,P);this.normalize();this.onChange(this)}else{if(D){this.unselect(P)}}}},reset:function(){this.sel=[];this.set.apply(this,arguments)},countDays:function(){var aq=0,D=this.sel,P=D.length,ao,ap,an;while(--P>=0){ao=D[P];if(ao instanceof Array){ap=y(ao[0]);an=y(ao[1]);aq+=Math.round(Math.abs(an.getTime()-ap.getTime())/86400000)}++aq}return aq},unselect:function(P){P=R(P);var at=false;for(var D=this.sel,ao=D.length,aq;--ao>=0;){aq=D[ao];if(aq instanceof Array){if(P>=aq[0]&&P<=aq[1]){var an=y(P),ar=an.getDate();if(P==aq[0]){an.setDate(ar+1);aq[0]=R(an);at=true}else{if(P==aq[1]){an.setDate(ar-1);aq[1]=R(an);at=true}else{var ap=new Date(an);ap.setDate(ar+1);an.setDate(ar-1);D.splice(ao+1,0,[R(ap),aq[1]]);aq[1]=R(an);at=true}}}}else{if(P==aq){D.splice(ao,1);at=true}}}if(at){this.normalize();this.onChange(this)}},normalize:function(){this.sel=this.sel.sort(function(au,at){if(au instanceof Array){au=au[0]}if(at instanceof Array){at=at[0]}return au-at});for(var P=this.sel,an=P.length,aq,ap;--an>=0;){aq=P[an];if(aq instanceof Array){if(aq[0]>aq[1]){P.splice(an,1);continue}if(aq[0]==aq[1]){aq=P[an]=aq[0]}}if(ap){var ao=ap,ar=aq instanceof Array?aq[1]:aq;ar=y(ar);ar.setDate(ar.getDate()+1);ar=R(ar);if(ar>=ao){var D=P[an+1];if(aq instanceof Array&&D instanceof Array){aq[1]=D[1];P.splice(an+1,1)}else{if(aq instanceof Array){aq[1]=ap;P.splice(an+1,1)}else{if(D instanceof Array){D[0]=aq;P.splice(an,1)}else{P[an]=[aq,D];P.splice(an+1,1)}}}}}ap=aq instanceof Array?aq[0]:aq}},findInsertPos:function(P){for(var D=this.sel,an=D.length,ao;--an>=0;){ao=D[an];if(ao instanceof Array){ao=ao[0]}if(ao<=P){break}}return an+1},clear:function(D){this.sel=[];if(!D){this.onChange(this)}},selectRange:function(an,P){an=R(an);P=R(P);if(an>P){var D=an;an=P;P=D}this.sel.push([an,P]);this.normalize();this.onChange(this)},isSelected:function(D){for(var P=this.sel.length,an;--P>=0;){an=this.sel[P];if(an instanceof Array&&D>=an[0]&&D<=an[1]||D==an){return true}}return false},getFirstDate:function(){var D=this.sel[0];if(D&&D instanceof Array){D=D[0]}return D},getLastDate:function(){if(this.sel.length>0){var D=this.sel[this.sel.length-1];if(D&&D instanceof Array){D=D[1]}return D}},print:function(P,an){var D=[],ao=0,ap;if(!an){an=" -> "}while(aoao?3:auat?2:an?0:PD?1:0}function X(D,at){var P=D.getMonth(),ar=D.getDate(),au=D.getFullYear(),av=a(D),aw=D.getDay(),ax=D.getHours(),an=(ax>=12),ap=(an)?(ax-12):ax,az=z(D),ao=D.getMinutes(),aq=D.getSeconds(),ay=/%./g,aA;if(ap===0){ap=12}aA={"%a":am("sdn")[aw],"%A":am("dn")[aw],"%b":am("smn")[P],"%B":am("mn")[P],"%C":1+Math.floor(au/100),"%d":ar<10?"0"+ar:ar,"%e":ar,"%H":ax<10?"0"+ax:ax,"%I":ap<10?"0"+ap:ap,"%j":az<10?"00"+az:az<100?"0"+az:az,"%k":ax,"%l":ap,"%m":P<9?"0"+(1+P):1+P,"%o":1+P,"%M":ao<10?"0"+ao:ao,"%n":"\n","%p":an?"PM":"AM","%P":an?"pm":"am","%s":Math.floor(D.getTime()/1000),"%S":aq<10?"0"+aq:aq,"%t":"\t","%U":av<10?"0"+av:av,"%W":av<10?"0"+av:av,"%V":av<10?"0"+av:av,"%u":aw+1,"%w":aw,"%y":(""+au).substr(2,2),"%Y":au,"%%":"%"};return at.replace(ay,function(aB){return aA.hasOwnProperty(aB)?aA[aB]:aB})}function U(P){if(P){if(typeof P=="number"){return y(P)}if(!(P instanceof Date)){var D=P.split(/-/);return new Date(parseInt(D[0],10),parseInt(D[1],10)-1,parseInt(D[2],10),12,0,0,0)}}return P}function x(an){an=an.toLowerCase();function P(ao){for(var ap=ao.length;--ap>=0;){if(ao[ap].toLowerCase().indexOf(an)==0){return ap}}}var D=P(am("smn"))||P(am("mn"));if(D!=null){D++}return D}v.parseDate=function(ap,D,ar){if(!/\S/.test(ap)){return""}ap=ap.replace(/^\s+/,"").replace(/\s+$/,"");ar=ar||new Date();var ax=null,P=null,az=null,aq=null,an=null,ay=null;var au=ap.match(/([0-9]{1,2}):([0-9]{1,2})(:[0-9]{1,2})?\s*(am|pm)?/i);if(au){aq=parseInt(au[1],10);an=parseInt(au[2],10);ay=au[3]?parseInt(au[3].substr(1),10):0;ap=ap.substring(0,au.index)+ap.substr(au.index+au[0].length);if(au[4]){if(au[4].toLowerCase()=="pm"&&aq<12){aq+=12}else{if(au[4].toLowerCase()=="am"&&aq>=12){aq-=12}}}}var av=ap.split(/\W+/);var at=[];for(var ao=0;ao=60){ax=aw}else{if(aw>=0&&aw<=12){at.push(aw)}else{if(aw>=1&&aw<=31){az=aw}}}}else{P=x(aw)}}}if(at.length>=2){if(D){if(!P){P=at.shift()}if(!az){az=at.shift()}}else{if(!az){az=at.shift()}if(!P){P=at.shift()}}}else{if(at.length==1){if(!az){az=at.shift()}else{if(!P){P=at.shift()}}}}if(!ax){ax=at.length>0?at.shift():ar.getFullYear()}if(ax<30){ax+=2000}else{if(ax<99){ax+=1900}}if(!P){P=ar.getMonth()+1}return ax&&P&&az?new Date(ax,P-1,az,aq,an,ay):null};function ah(D,ao,P,an){an={};for(P in ao){if(ao.hasOwnProperty(P)){an[P]=ao[P]}}for(P in D){if(D.hasOwnProperty(P)){an[P]=D[P]}}return an}function o(an,ap,ao,D){if(an instanceof Array){for(var P=an.length;--P>=0;){o(an[P],ap,ao,D)}}else{if(typeof ap=="object"){for(var P in ap){if(ap.hasOwnProperty(P)){o(an,P,ap[P],ao)}}}else{if(an.addEventListener){an.addEventListener(ap,ao,j?true:!!D)}else{if(an.attachEvent){an.attachEvent("on"+ap,ao)}else{an["on"+ap]=ao}}}}}function d(an,ap,ao,D){if(an instanceof Array){for(var P=an.length;--P>=0;){d(an[P],ap,ao)}}else{if(typeof ap=="object"){for(var P in ap){if(ap.hasOwnProperty(P)){d(an,P,ap[P],ao)}}}else{if(an.removeEventListener){an.removeEventListener(ap,ao,j?true:!!D)}else{if(an.detachEvent){an.detachEvent("on"+ap,ao)}else{an["on"+ap]=null}}}}}function aj(D){D=D||window.event;if(j){D.cancelBubble=true;D.returnValue=false}else{D.preventDefault();D.stopPropagation()}return false}function af(ap,ao,aq){if(ap){var D=ap.className.replace(/^\s+|\s+$/,"").split(/\x20/),P=[],an;for(an=D.length;an>0;){if(D[--an]!=ao){P.push(D[an])}}if(aq){P.push(aq)}ap.className=P.join(" ")}return aq}function J(P,D){return af(P,D,D)}function aa(ao,an,P){if(an instanceof Array){for(var D=an.length;--D>=0;){aa(ao,an[D],P)}}else{af(an,P,ao?P:null)}return ao}function C(ao,D,an){var P=null;if(document.createElementNS){P=document.createElementNS("http://www.w3.org/1999/xhtml",ao)}else{P=document.createElement(ao)}if(D){P.className=D}if(an){an.appendChild(P)}return P}function b(ap,aq){if(aq==null){aq=0}var D,ao,P;try{D=Array.prototype.slice.call(ap,aq)}catch(an){D=new Array(ap.length-aq);for(ao=aq,P=0;ao