/**
 *                                                        ____   _____
 *  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:"%Y-%m-%d",
		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.y<at.y)
																		{aq.y=an.y;aq=P(ao[1])}
																		if(aq.x+ap.x>at.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<at.x)
																					{aq.x=an.x;aq=P(ao[4])}
																				this.showAt(aq.x,aq.y,true);
																				au.visibility="";
																				this.focus()};
				l.callHooks=function(an)
					{var ao=b(arguments,1),
					D=this.handlers[an],
					P=0;for(;P<D.length;++P)
						{D[P].apply(this,ao)}};
				l.addEventListener=function(P,D)
					{this.handlers[P].push(D)};
					l.removeEventListener=function(ao,an)
						{var D=this.handlers[ao],
						P=D.length;while(--P>=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="<div class='DynarchCalendar-tooltipCont'>"+X(D,ao.tooltip)+"</div>"}}an.innerHTML=P};
						var ad=" align='center' cellspacing='0' cellpadding='0'";
						function h(D){var an=["<table",ad,"><tr>"],P=0;if(D.args.weekNumbers){an.push("<td><div class='DynarchCalendar-weekNumber'>",am("wk"),"</div></td>")}while(P<7){var ao=(P+++D.fdow)%7;an.push("<td><div",am("weekend").indexOf(ao)>=0?" class='DynarchCalendar-weekend'>":">",am("sdn")[ao],"</div></td>")}an.push("</tr></table>");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++]="<table class='DynarchCalendar-bodyTable'"+ad+">";for(var ay=0;ay<6;++ay){aq[aw++]="<tr class='DynarchCalendar-week";if(ay==0){aq[aw++]=" DynarchCalendar-first-row"}if(ay==5){aq[aw++]=" DynarchCalendar-last-row"}aq[aw++]="'>";if(D){aq[aw++]="<td class='DynarchCalendar-first-col'><div class='DynarchCalendar-weekNumber'>"+a(aC)+"</div></td>"}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++]="<td class='";if(ax==0&&!D){aq[aw++]=" DynarchCalendar-first-col"}if(ax==0&&ay==0){ar._firstDateVisible=an}if(ax==6){aq[aw++]=" DynarchCalendar-last-col";if(ay==5){ar._lastDateVisible=an}}if(aD){aq[aw++]=" DynarchCalendar-td-selected"}aq[aw++]="'><div dyc-type='date' unselectable='on' dyc-date='"+an+"' ";if(at){aq[aw++]="disabled='1' "}aq[aw++]="class='DynarchCalendar-day";if(am("weekend").indexOf(aC.getDay())>=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+"</div></td>";aC.setDate(aB+1)}aq[aw++]="</tr>"}aq[aw++]="</table>";return aq.join("")}function m(D){var P=["<table class='DynarchCalendar-topCont'",ad,"><tr><td><div class='DynarchCalendar'>",!j?"<button class='DynarchCalendar-focusLink'></button>":"<a class='DynarchCalendar-focusLink' href='#'></a>","<div class='DynarchCalendar-topBar'><div dyc-type='nav' dyc-btn='-Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevYear'><div></div></div><div dyc-type='nav' dyc-btn='+Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextYear'><div></div></div><div dyc-type='nav' dyc-btn='-M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevMonth'><div></div></div><div dyc-type='nav' dyc-btn='+M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextMonth'><div></div></div><table class='DynarchCalendar-titleCont'",ad,"><tr><td><div dyc-type='title' dyc-btn='menu' dyc-cls='hover-title,pressed-title' class='DynarchCalendar-title'>",B(D),"</div></td></tr></table><div class='DynarchCalendar-dayNames'>",h(D),"</div></div><div class='DynarchCalendar-body'></div>"];if(D.args.bottomBar){P.push("<div class='DynarchCalendar-bottomBar'>",E(D),"</div>")}P.push("<div class='DynarchCalendar-menu' style='display: none'>",ag(D),"</div><div class='DynarchCalendar-tooltip'></div></div></td></tr></table>");return P.join("")}function B(D){return"<div unselectable='on'>"+X(D.date,D.args.titleFormat)+"</div>"}function ag(P){var ap=["<table height='100%'",ad,"><tr><td><table style='margin-top: 1.5em'",ad,"><tr><td colspan='3'><input dyc-btn='year' class='DynarchCalendar-menu-year' size='6' value='",P.date.getFullYear(),"' /></td></tr><tr><td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='today'>",am("goToday"),"</div></td></tr></table><p class='DynarchCalendar-menu-sep'>&nbsp;</p><table class='DynarchCalendar-menu-mtable'",ad,">"],aq=am("smn"),ao=0,D=ap.length,an;while(ao<12){ap[D++]="<tr>";for(an=4;--an>0;){ap[D++]="<td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='m"+ao+"' class='DynarchCalendar-menu-month'>"+aq[ao++]+"</div></td>"}ap[D++]="</tr>"}ap[D++]="</table></td></tr></table>";return ap.join("")}function E(D){return"<table"+ad+"><tr><td><div dyc-btn='today' dyc-cls='hover-bottomBar-today,pressed-bottomBar-today' dyc-type='bottomBar-today' class='DynarchCalendar-bottomBar-today'>"+am("today")+"</div></td></tr></table>"}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(ap<this._firstDateVisible||ap>this._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(ap<this._firstDateVisible||ap>this._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(ao<this.sel.length){ap=this.sel[ao++];if(ap instanceof Array){D.push(X(y(ap[0]),P)+an+X(y(ap[1]),P))}else{D.push(X(y(ap),P))}}return D},getDates:function(P){var D=[],an=0,ap,ao;while(an<this.sel.length){ao=this.sel[an++];if(ao instanceof Array){ap=y(ao[0]);ao=ao[1];while(R(ap)<ao){D.push(P?X(ap,P):ap);ap.setDate(ap.getDate()+1)}}else{ap=y(ao)}D.push(P?X(ap,P):ap)}return D}};function a(P){P=new Date(P.getFullYear(),P.getMonth(),P.getDate(),12,0,0);var an=P.getDay();P.setDate(P.getDate()-(an+6)%7+3);var D=P.valueOf();P.setMonth(0);P.setDate(4);return Math.round((D-P.valueOf())/(7*86400000))+1}function z(D){D=new Date(D.getFullYear(),D.getMonth(),D.getDate(),0,0,0);var an=new Date(D.getFullYear(),0,1,12,0,0);var P=D-an;return Math.floor(P/86400000)}function R(D){if(D instanceof Date){return 10000*D.getFullYear()+100*(D.getMonth()+1)+D.getDate()}if(typeof D=="string"){return parseInt(D,10)}return D}function y(P){if(!(P instanceof Date)){P=parseInt(P);var an=Math.floor(P/10000);P=P%10000;var D=Math.floor(P/100);P=P%100;P=new Date(an,D-1,P,12,0,0,0)}return P}function ab(ar,ap,an){var aq=ar.getFullYear(),au=ar.getMonth(),P=ar.getDate(),ao=ap.getFullYear(),at=ap.getMonth(),D=ap.getDate();return aq<ao?-3:aq>ao?3:au<at?-2:au>at?2:an?0:P<D?-1:P>D?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<av.length;++ao){var aw=av[ao];if(/^[0-9]{4}$/.test(aw)){ax=parseInt(aw,10);if(!P&&!az){D=true}}else{if(/^[0-9]{1,2}$/.test(aw)){aw=parseInt(aw,10);if(aw>=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<ap.length;++ao,++P){D[P]=ap[ao]}}return D}function t(P,an){var D=b(arguments,2);return(an==undefined?function(){return P.apply(this,D.concat(b(arguments)))}:function(){return P.apply(an,D.concat(b(arguments)))})}function r(P,an){if(!an(P)){for(var D=P.firstChild;D;D=D.nextSibling){if(D.nodeType==1){r(D,an)}}}}function al(D,ar,an){D=ah(D,{fps:50,len:15,onUpdate:Z,onStop:Z});if(j){D.len=Math.round(D.len/2)}function ao(aw,av,at,au){return au?at+aw*(av-at):av+aw*(at-av)}function aq(){if(ar){P()}an=0;ar=setInterval(ap,1000/D.fps)}function P(){if(ar){clearInterval(ar);ar=null}D.onStop(an/D.len,ao)}function ap(){var at=D.len;D.onUpdate(an/at,ao);if(an==at){P()}++an}aq();return{start:aq,stop:P,update:ap,args:D,map:ao}}var V={elastic_b:function(D){return 1-Math.cos(-D*5.5*Math.PI)/Math.pow(2,7*D)},magnetic:function(D){return 1-Math.cos(D*D*D*10.5*Math.PI)/Math.exp(4*D)},accel_b:function(D){D=1-D;return 1-D*D*D*D},accel_a:function(D){return D*D*D},accel_ab:function(D){D=1-D;return 1-Math.sin(D*D*Math.PI/2)},accel_ab2:function(D){return(D/=0.5)<1?1/2*D*D:-1/2*((--D)*(D-2)-1)},brakes:function(D){D=1-D;return 1-Math.sin(D*D*Math.PI)},shake:function(D){return D<0.5?-Math.cos(D*11*Math.PI)*D*D:(D=1-D,Math.cos(D*11*Math.PI)*D*D)}};function ai(D,P){if(P===""){j?D.style.filter="":D.style.opacity=""}else{if(P!=null){j?D.style.filter="alpha(opacity="+P*100+")":D.style.opacity=P}else{if(!j){P=parseFloat(D.style.opacity)}else{if(/alpha\(opacity=([0-9.])+\)/.test(D.style.opacity)){P=parseFloat(RegExp.$1)/100}}}}return P}function K(an,D){var P=an.style;if(D!=null){P.display=D?"":"none"}return P.display!="none"}function f(P,an){var D=j?P.clientX+document.body.scrollLeft:P.pageX;var ao=j?P.clientY+document.body.scrollTop:P.pageY;if(an){D-=an.x;ao-=an.y}return{x:D,y:ao}}function G(ap){var D=0,ao=0,an=/^div$/i.test(ap.tagName),aq,P;if(an&&ap.scrollLeft){D=ap.scrollLeft}if(an&&ap.scrollTop){ao=ap.scrollTop}aq={x:ap.offsetLeft-D,y:ap.offsetTop-ao};if(ap.offsetParent){P=G(ap.offsetParent);aq.x+=P.x;aq.y+=P.y}return aq}function T(){var P=document.documentElement,D=document.body;return{x:P.scrollLeft||D.scrollLeft,y:P.scrollTop||D.scrollTop,w:P.clientWidth||window.innerWidth||D.clientWidth,h:P.clientHeight||window.innerHeight||D.clientHeight}}var Z=new Function();function S(D){if(typeof D=="string"){D=document.getElementById(D)}return D}return v})();
