var GLToolTip=new Class({Implements:[Events,Options],options:{adjustWidth:0,adjustHeight:13,width:150,align:"center",content:""},initialize:function(E,D){var F=this;F.tooltipElement=$("tooltip");F.setOptions(D);if(F.tooltipElement==null){F.tooltipElement=new Element("div",{id:"tooltip"}).inject(document.body)}F.tooltipElement.style.width=F.options.width+"px";F.element=$(E);F.display()},compat:function(){return(document.compatMode&&document.compatMode!="BackCompat")?document.documentElement:document.body},display:function(){var D=this;var F=D.options;D.tooltipElement.style.display="block";if(D.tooltipElement.offsetWidth>F.width){D.tooltipElement.style.width=F.width+"px"}else{D.tooltipElement.style.width=D.tooltipElement.offsetWidth+"px"}if(D.tooltipElement.offsetWidth>F.width){D.tooltipElement.style.width=F.width+"px"}D.tooltipElement.style.textAlign=F.align;var E=F.content;if(E.toString().contains("\n")){E=E.replace(/\n/g,"<BR/>").replace(/\r/g,"")}if(E.trim()==""){return }D.tooltipElement.innerHTML='<div class="tooltipFrame"><div class="tooltipFrame2">'+E+"</div></div>";D.hasDisplayed=true;D.element.addEvent("mousemove",D.positiontip.bind(D),false);D.element.addEvent("mouseout",D.hide.bind(D),false)},positiontip:function(L){var P=this;var U=P.options;if(P.hasDisplayed){var S=L.page.x;var Q=L.page.y;var T=Browser.Engine.trident?P.compat().clientWidth-L.client.x-U.adjustHeight:window.innerWidth-L.client.x-U.adjustHeight-20;var R=Browser.Engine.trident?P.compat().clientHeight-L.client.y-U.adjustHeight:window.innerHeight-L.client.y-U.adjustHeight-20;var N=(U.adjustHeight<0)?U.adjustHeight*(-1):-1000;var V=parseInt(P.tooltipElement.style.width);if(T<V){if(Browser.Engine.trident){P.tooltipElement.style.left=P.compat().scrollLeft+L.client.x-V+"px"}else{P.tooltipElement.style.left=S+U.adjustHeight-V+"px"}}else{if(S<N){P.tooltipElement.style.left="5px"}else{P.tooltipElement.style.left=S+U.adjustHeight+"px"}}if(R<P.tooltipElement.offsetHeight){var M=(Browser.Engine.webkit)?0:window.pageYOffset;var O=(Browser.Engine.trident)?P.compat().scrollTop+L.client.y-P.tooltipElement.offsetHeight-U.adjustHeight:M+L.client.y-P.tooltipElement.offsetHeight-U.adjustHeight;P.tooltipElement.setStyle("top",O)}else{P.tooltipElement.style.top=Q+U.adjustHeight+"px"}P.tooltipElement.style.visibility="visible"}},hide:function(){var C=this;var D=C.options;if(document.removeEventListener){document.removeEventListener("mousemove",C.positiontip,false);C.element.removeEventListener("mouseout",C.hide,false)}else{document.detachEvent("onmousemove",C.positiontip);C.element.detachEvent("onmouseout",C.hide)}C.hasDisplayed=false;C.tooltipElement.style.visibility="hidden";C.tooltipElement.style.top="-1000px";C.tooltipElement.style.backgroundColor="";C.tooltipElement.style.width=""}});var glSnapshotBox=new Class({Implements:[Events,Options],options:{id:"",margin:25,address_color:"#fff",background_color:"#666",duration:350,border_thickness:2,border_color:"#999",bar_height:120,appdixRight:100,zindex:65536,overlayOpacity:0.7,onOpen:$empty,onClose:$empty,bottomMargin:10,snapshotURL:"/postlist/snapshot",appendix_bg:"#FFFFFF"},initialize:function(E,D,F){this.element=E;this.appendix=D;this.setOptions(F);this.build()},build:function(){var V=this;var O=V.options;var S=window.getScroll().y;var R=window.getSize().x-O.margin*2;var X=window.getSize().y-O.margin-O.bottomMargin;var W=O.border_thickness;var T=this.element.getCoordinates();var M=T.left;var U=T.top;var Q=T.right;var P=T.bottom;V.opened=false;var N=P-U;V.box=new Element("div",{"class":"glsnapshot-box",styles:{height:N,left:M,top:U,width:Q-M,padding:W,"background-color":O.background_color,border:"1px solid "+O.border_color,"border-bottom":"3px solid "+O.border_color,zIndex:O.zindex+1}}).inject(document.body).fade("hide");V.closeBtn=new Element("a",{href:"#","class":"snapshot-btn-close"}).inject(V.box);V.closeBtn.addEvent("click",function(){V.closeBox(S,M,Q,U,P)});V.BoxMorph=new Fx.Morph(V.box,{duration:O.duration,transition:Fx.Transitions.Quart.easeIn});V.iframe=new Element("iframe",{"class":"glsnapshot-iframe",src:V.element.get("href"),frameBorder:0,flex:0,width:0,height:0}).inject(V.box).fade("hide").addEvent("load",function(){V.iframe.setStyle("background","#fff")});V.buildBottomBar();V.buildOverlay(O.zindex).addEvent("click",function(){V.closeBox(S,M,Q,U,P)});V.openBox(S,M,Q,U,P);new Element("img",{src:"http://www.giantleap.us/stat/snapshot.htm?glid="+O.id+"&url="+encodeURIComponent(document.location.href)+"&referrer="+encodeURIComponent(document.referrer),width:"0",height:"0"}).inject(V.box)},buildBottomBar:function(){var X=this;var Q=X.options;var a=Q.border_thickness;var c=Q.bar_height;var Z=X.element.get("href");var U=Z;if(U.length>80){U=U.substring(0,80)}if(!U.contains("//")){U=window.location.protocol+"//"+window.location.host+U}X.bottomBar=new Element("div",{"class":"glsnapshot-bottomBar"}).inject(X.box).fade("hide");if(!X.appendix){var T=new Element("table").inject(X.bottomBar);var b=new Element("tbody").inject(T);var Y=new Element("tr").inject(b);var e=new Element("td",{width:"50%"}).inject(Y);var P=new Element("td",{width:"36%"}).inject(Y);var R=new Element("td",{width:"10%"}).inject(Y);var W=new Element("div",{html:"<font color=white><B>相关链接：</B></font>"}).inject(e);X.similars=new Element("ul",{styles:{"padding-left":"15px","list-style-type":"none"}}).inject(W);X.scorebox=new Element("span");new Element("div",{}).inject(P).grab(new Element("span",{html:"<font color=white>评分:</font>&nbsp;&nbsp;",styles:{"float":"left"}})).grab(X.scorebox);var V=Q.snapshotURL;if(!V.contains("//")){V=window.location.protocol+"//"+window.location.host+V}X.addressbox=new Element("div",{"class":"glsnapshot-addressbox",styles:{"margin-top":"22px",clear:"both",left:a,height:c/2+10,color:Q.address_color}}).inject(P).grab(new Element("span",{html:"链接地址: "})).grab(new Element("a",{title:U,href:Z,html:"<font color=#F1CC68>"+U+"</font>",target:"_blank","class":"glsnapshot-address"})).grab(new Element("span",{html:"<br/>网页快照: "})).grab(new Element("a",{href:"javascript:void(0)",title:V+"/"+Q.id+".htm",html:"<font color=#F1CC68>"+V+"/"+Q.id+".htm</font>","class":"glsnapshot-address"}).addEvent("click",function(A){A.stop();X.iframe.set("src",Q.snapshotURL+"/"+Q.id+".htm").setStyle("background","")}));var S=(c-20)/2;X.closebutton=new Element("div",{"class":"glsnapshot-closebutton",styles:{right:S,bottom:S}}).inject(R).addEvent("click",function(){X.closeBox(scrollY,left,right,top,bottom)}).addEvent("mouseenter",function(){this.setStyle("background-position","0px 0px")}).addEvent("mouseleave",function(){this.setStyle("background-position","0px -20px")})}else{}X.similarData()},similarData:function(){var F=this;var D=F.options;var E={};E.url="/postlist/similar.htm";E.data={};E.data.id=D.id;if(F.similarIds&&F.similarIds.length>0){E.data.ids=F.similarIds;E.data.size=F.similarIds.length}if(F.prevId){E.data.prevId=F.prevId;E.data.url=encodeURIComponent(document.location.href)}E.onSuccess=function(C){if(C){var A=C.score;if(!A){A={};A.updatable=false}A.imgGrid=17;F.scorebox.empty();var B=new GLRating(A);B.element.setStyle("float","left");F.scorebox.grab(B.element);F.similars.empty();F.similarIds=[];C.data.each(function(O,R){var S=O.url;var V=O.title;var U=O.id;F.similarIds.push(U);var P=O.content;var T=new Element("li").inject(F.similars);var Q=new Element("a",{id:U,href:"javascript:void(0)",html:"<font color=#F1CC68><strong>"+V+"</strong></font>"}).inject(T);Q.store("content",P);Q.store("url",S);Q.store("id",U);Q.addEvent("mouseover",function(){var G=this.retrieve("content");new GLToolTip(T,{content:G,width:450,align:"left"})});Q.addEvent("click",function(H){H.stop();var I=this.retrieve("url");var G=this.retrieve("id");I=D.snapshotURL+"/"+D.id+".htm";F.iframe.set("src",I).setStyle("background","");F.prevId=D.id;D.id=G;F.similarData()})})}};new Request.JSON(E).post()},openBox:function(R,M,P,S,O){if(this.opened){return }var U=this;var L=U.options.margin;var Q=window.getSize().x-L*2;var V=window.getSize().y-L-U.options.bottomMargin;U.overlayIn(U.options.zindex);U.box.fade(0.5);U.iframe.setStyle("background","");var T=function(){U.box.fade("in");U.closeBtn.fade("in");U.iframe.setStyles({width:"100%",height:V-U.options.bar_height}).fade("in");U.bottomBar.fade("in");U.opened=true};var N=Math.floor(Math.random()*11);if(N<=6){U.BoxMorph.start({width:[P-M,Q],left:[M,L]}).chain(function(){this.start({height:[O-S,V],top:[S,L+R]})},T)}else{U.BoxMorph.start({height:[O-S,V],top:[S,L+R]}).chain(function(){this.start({width:[P-M,Q],left:[M,L]})},T)}},closeBox:function(I,J,N,K,H){if(!this.opened){return }var M=this;var L=M.options.margin;M.BoxMorph.options.duration=100;new Fx({duration:"short"}).start().chain(function(){M.fireEvent("onClose",[M]);M.box.fade(0.5);M.iframe.fade("out");M.bottomBar.fade("out");M.closeBtn.fade("out");this.start()},function(){M.iframe.setStyles({height:0,width:0});M.BoxMorph.start({height:[M.box.getStyle("height"),H-K],top:[L+I,K]}).chain(function(){this.start({width:[M.box.getStyle("width"),N-J],left:[L,J]})},function(){M.overlayOut();M.box.fade("out");M.opened=false})})},buildOverlay:function(B){if(!document.glOverlay){document.glOverlay=new Element("div",{"class":"glsnapshot-overlay",styles:{zIndex:B}}).inject(document.body).fade("hide");if(Browser.Engine.trident4){document.tridentResize=function(){var G=document.getSize(),A=document.getScroll();var F=document.body.scrollHeight.toInt();var H=A.x+window.getSize().y;if(H>F){F=H}document.glOverlay.setStyles({position:"absolute",height:F,width:window.getSize().x})};document.tridentResize();window.addEvent("resize",document.tridentResize)}}return document.glOverlay},overlayIn:function(B){if(document.glOverlay){document.glOverlay.fade(this.options.overlayOpacity)}},overlayOut:function(){if(!document.glOverlay){return }document.glOverlay.fade("out")}});var GLThumb=new Class({Implements:[Events,Options],options:{id:"",url:"/thumb/postlist.htm",imgGrid:19,updatable:false,readOnly:false,up:0,down:0},initialize:function(B){this.setOptions(B);this.build()},build:function(){var L=this;var K=L.options;var M=K.imgGrid;L.element=new Element("span",{"class":"thumb-19"});var N=new Element("span",{styles:{"margin-right":"5px"}}).inject(L.element);var H=new Element("a",{href:"#"}).inject(N);H.adopt(new Element("img",{src:"/image/thumb/thumbsup.gif",alt:"love it"}));L.uVote=new Element("span",{text:K.up,styles:{"vertical-align":"5px"}}).inject(H);L.initEvent("up",L.uVote,H,L.options.up);var I=new Element("span",{styles:{"margin-left":"5px"}}).inject(L.element);var J=new Element("a",{href:"#"}).inject(I);J.adopt(new Element("img",{src:"/image/thumb/thumbsdown.gif",alt:"hate it"}));L.dVote=new Element("span",{text:K.down,styles:{"vertical-align":"5px"}}).inject(J);L.initEvent("down",L.dVote,J,L.options.down)},initEvent:function(H,I,G,F){var J=this;G.addEvent("mouseover",function(A){I.setStyle("font-size","15px");I.setStyle("color","#CC3300")});G.addEvent("mouseleave",function(A){I.setStyle("font-size","12px");I.setStyle("color","black")});G.addEvent("click",function(A){A.stop();new Request.JSON({url:J.options.url+"?glid="+J.options.id+"&_action="+H,onFailure:function(B){alert(B.error)},onSuccess:function(D,B){if(D&&D.error){alert(D.error);return }F=F+1;I.set("text",F);var C=new Roar({position:"lowerright",duration:3000});C.alert("Thank you for participation"," \n \n \n")}}).get()})}});var GLRating=new Class({Implements:[Events,Options],options:{url:"/postlist/updateScore.htm",imgGrid:12,updatable:false,score:0,timesOfScore:0,userScore:-10,id:""},initialize:function(B){this.setOptions(B);this.build(B.score)},build:function(G){var J=this;var H=J.options;var F=H.imgGrid;if(F==12){J.element=new Element("div",{"class":"rating-div-12"});J.div_full=new Element("div",{"class":"rating-full-12"});J.div_empty=new Element("div",{"class":"rating-empty-12"})}else{J.element=new Element("div",{"class":"rating-div-17"});J.div_full=new Element("div",{"class":"rating-full-17"});J.div_empty=new Element("div",{"class":"rating-empty-17"})}J.element.grab(this.div_empty);J.div_empty.grab(this.div_full);J.initEvents();var I=$type(G);if(I=="number"){J.set(G)}else{if(I=="string"){J.set(parseFloat(G))}else{J.set(0)}}J.options.score=parseFloat(G)},initEvents:function(){var F=this;var E=F.options;var D=E.imgGrid;F.element.addEvent("mouseover",function(A){var B="评分: "+E.score;if(E.timesOfScore>0){B+="<BR/>";B+="参与度: "+E.timesOfScore}if(E.userScore>=0){B+="<BR/>";B+="您的评分: "+E.userScore}new GLToolTip(F.element,{content:B,width:100,align:"left"})});if(!E.updatable){return }F.element.addEvent("mousemove",function(B){var A=B.client.x-F.element.getCoordinates().left;if(Browser.Engine.trident){A-=10}if(A<10){F.grade=0}else{F.grade=((A-10)/D).toInt()+1}F.grade=F.grade.limit(0,5);F.div_full.morph({width:F.grade*D},{duration:"short"})}.bind(F));F.element.addEvent("mouseleave",function(A){F.div_full.morph({width:F.full_width},{duration:"short"})}.bind(F));F.element.addEvent("click",function(A){F.set(F.grade);new Request.JSON({url:F.options.url+"?glid="+F.options.id+"&score="+F.grade}).get()})},set:function(D){var E=this;var F=E.options.imgGrid;D=D.toFloat().limit(0,5);E.full_width=D.toInt()*F+(D-D.toInt())*F;E.div_full.morph({width:E.full_width},{duration:"short"})}});var textClock=new Class({Implements:[Events,Options],options:{hr24:true,showSeconds:true,interval:1000,gmtOffset:null},initialize:function(D,C){textClock.config.clockTracker[D]=this;this.clockOnlyID=D;this.setOptions(C);if(this.options.gmtOffset!=null){this.gmtOffset=this.options.gmtOffset.toFloat().limit(-12,12)}this.build();this.intervalID=setInterval("textClock.config.clockTracker['"+this.clockOnlyID+"'].tick()",this.options.interval)},build:function(){this.element=new Element("div",{id:this.clockOnlyID,"class":"clock"});this.tick()},refreshTime:function(E,H,F){var G="";if(!this.options.hr24){if(E>=12){G=" PM"}else{G=" AM"}if(E>12){E-=12}if(E==0){E=12}}if(E<10){E="0"+E}if(H<10){H="0"+H}if(this.options.showSeconds){if(F<10){F="0"+F}this.element.set("html",E+":"+H+":"+F+G)}else{this.element.set("html",E+":"+H+G)}},setTimeZone:function(B){this.gmtOffset=B.toFloat().limit(-12,12)},setNowOffset:function(B){this.nowOffset=B},setMode:function(D,C){if(D!=null){this.options.hr24=D}if(C!=null){this.options.showSeconds=C}this.tick()},stillHere:function(){return document.getElementById(this.clockOnlyID)!=null},tick:function(){var L=this;var N=L.options;var O=new Date();var K=0;if(L.nowOffset){K=parseInt(L.nowOffset);if(K!=NaN){new Date(O.valueOf()+K)}}if(this.gmtOffset!=null){var I=new Date(O.valueOf()+(L.gmtOffset*1000*60*60));this.refreshTime(I.getUTCHours(),I.getUTCMinutes(),I.getUTCSeconds())}else{var P=O.getHours();var M=O.getMinutes();var J=O.getSeconds();L.refreshTime(P,M,J)}}});textClock.config={clockTracker:{}};var Calendar=new Class({Implements:[Events,Options],options:{blocked:[],classes:[],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],direction:0,draggable:true,months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],navigation:1,offset:0,onHideStart:Class.empty,onHideComplete:Class.empty,onShowStart:Class.empty,onShowComplete:Class.empty,pad:1,tweak:{x:0,y:0}},initialize:function(K,N){if(!K){return false}this.setOptions(N);var M=["calendar","prev","next","month","year","today","invalid","valid","inactive","active","hover","hilite"];var H=M.map(function(A,B){if(this.options.classes[B]){if(this.options.classes[B].length){A=this.options.classes[B]}}return A},this);this.classes=H.associate(M);this.calendar=new Element("div",{styles:{left:"-1000px",opacity:0,position:"absolute",top:"-1000px",zIndex:1000}}).addClass(this.classes.calendar).injectInside(document.body);if(window.ie6){this.iframe=new Element("iframe",{styles:{left:"-1000px",position:"absolute",top:"-1000px",zIndex:999}}).injectInside(document.body);this.iframe.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"}this.fx=new Fx.Tween(this.calendar,{onStart:function(){if(this.calendar.getStyle("opacity")==0){if(window.ie6){this.iframe.setStyle("display","block")}this.calendar.setStyle("display","block");this.fireEvent("onShowStart",this.element)}else{this.fireEvent("onHideStart",this.element)}}.bind(this),onComplete:function(){if(this.calendar.getStyle("opacity")==0){this.calendar.setStyle("display","none");if(window.ie6){this.iframe.setStyle("display","none")}this.fireEvent("onHideComplete",this.element)}else{this.fireEvent("onShowComplete",this.element)}}.bind(this)});if(window.Drag&&this.options.draggable){this.drag=new Drag.Move(this.calendar,{onDrag:function(){if(window.ie6){this.iframe.setStyles({left:this.calendar.style.left,top:this.calendar.style.top})}}.bind(this)})}this.calendars=[];var I=0;var J=new Date();J.setDate(J.getDate()+this.options.direction.toInt());var L={button:new Element("button",{type:"button"}),el:$(K.id),els:[],id:I++,month:J.getMonth(),visible:false,year:J.getFullYear()};!this.element(K.id,K.format,L);L.el.addClass(this.classes.calendar);L.button.addClass(this.classes.calendar).addEvent("click",function(A){this.toggle(A)}.pass(L,this)).injectAfter(L.el);L.val=this.read(L);$extend(L,this.bounds(L));$extend(L,this.values(L));this.rebuild(L);this.calendars.push(L)},blocked:function(G){var E=[];var F=new Date(G.year,G.month,1).getDay();var H=new Date(G.year,G.month+1,0).getDate();this.options.blocked.each(function(D){var N=D.split(" ");for(var C=0;C<=3;C++){if(!N[C]){N[C]=(C==3)?"":"*"}N[C]=N[C].contains(",")?N[C].split(","):new Array(N[C]);var B=N[C].length-1;for(var M=B;M>=0;M--){if(N[C][M].contains("-")){var A=N[C][M].split("-");for(var O=A[0];O<=A[1];O++){if(!N[C].contains(O)){N[C].push(O+"")}}N[C].splice(M,1)}}}if(N[2].contains(G.year+"")||N[2].contains("*")){if(N[1].contains(G.month+1+"")||N[1].contains("*")){N[0].each(function(I){if(I>0){E.push(I.toInt())}});if(N[3]){for(var C=0;C<H;C++){var P=(C+F)%7;if(N[3].contains(P+"")){E.push(C+1)}}}}}},this);return E},bounds:function(G){var F=new Date(1000,0,1);var E=new Date(2999,11,31);var H=new Date().getDate()+this.options.direction.toInt();if(this.options.direction>0){F=new Date();F.setDate(H+this.options.pad*G.id)}if(this.options.direction<0){E=new Date();E.setDate(H-this.options.pad*(this.calendars.length-G.id-1))}G.els.each(function(C){if(C.get("tag")=="select"){if(C.format.test("(y|Y)")){var D=[];C.getChildren().each(function(K){var L=this.unformat(K.value,C.format);if(!D.contains(L[0])){D.push(L[0])}},this);D.sort(this.sort);if(D[0]>F.getFullYear()){d=new Date(D[0],F.getMonth()+1,0);if(F.getDate()>d.getDate()){F.setDate(d.getDate())}F.setYear(D[0])}if(D.getLast()<E.getFullYear()){d=new Date(D.getLast(),E.getMonth()+1,0);if(E.getDate()>d.getDate()){E.setDate(d.getDate())}E.setYear(D.getLast())}}if(C.format.test("(F|m|M|n)")){var B=[];var A=[];C.getChildren().each(function(K){var L=this.unformat(K.value,C.format);if($type(L[0])!="number"||L[0]==D[0]){if(!B.contains(L[1])){B.push(L[1])}}if($type(L[0])!="number"||L[0]==D.getLast()){if(!A.contains(L[1])){A.push(L[1])}}},this);B.sort(this.sort);A.sort(this.sort);if(B[0]>F.getMonth()){d=new Date(F.getFullYear(),B[0]+1,0);if(F.getDate()>d.getDate()){F.setDate(d.getDate())}F.setMonth(B[0])}if(A.getLast()<E.getMonth()){d=new Date(F.getFullYear(),A.getLast()+1,0);if(E.getDate()>d.getDate()){E.setDate(d.getDate())}E.setMonth(A.getLast())}}}},this);return{start:F,end:E}},caption:function(I){var H={prev:{month:true,year:true},next:{month:true,year:true}};if(I.year==I.start.getFullYear()){H.prev.year=false;if(I.month==I.start.getMonth()&&this.options.navigation==1){H.prev.month=false}}if(I.year==I.end.getFullYear()){H.next.year=false;if(I.month==I.end.getMonth()&&this.options.navigation==1){H.next.month=false}}if($type(I.months)=="array"){if(I.months.length==1&&this.options.navigation==2){H.prev.month=H.next.month=false}}var N=new Element("caption");var K=new Element("a").addClass(this.classes.prev).appendText("\x3c");var L=new Element("a").addClass(this.classes.next).appendText("\x3e");if(this.options.navigation==2){var J=new Element("span").addClass(this.classes.month).injectInside(N);if(H.prev.month){K.clone().addEvent("click",function(A){this.navigate(A,"m",-1)}.pass(I,this)).injectInside(J)}J.adopt(new Element("span").appendText(this.options.months[I.month]));if(H.next.month){L.clone().addEvent("click",function(A){this.navigate(A,"m",1)}.pass(I,this)).injectInside(J)}var M=new Element("span").addClass(this.classes.year).injectInside(N);if(H.prev.year){K.clone().addEvent("click",function(A){this.navigate(A,"y",-1)}.pass(I,this)).injectInside(M)}M.adopt(new Element("span").appendText(I.year));if(H.next.year){L.clone().addEvent("click",function(A){this.navigate(A,"y",1)}.pass(I,this)).injectInside(M)}}else{if(H.prev.month&&this.options.navigation){K.clone().addEvent("click",function(A){this.navigate(A,"m",-1)}.pass(I,this)).injectInside(N)}N.adopt(new Element("span").addClass(this.classes.month).appendText(this.options.months[I.month]));N.adopt(new Element("span").addClass(this.classes.year).appendText(I.year));if(H.next.month&&this.options.navigation){L.clone().addEvent("click",function(A){this.navigate(A,"m",1)}.pass(I,this)).injectInside(N)}}return N},changed:function(B){B.val=this.read(B);$extend(B,this.values(B));this.rebuild(B);if(!B.val){return }if(B.val.getDate()<B.days[0]){B.val.setDate(B.days[0])}if(B.val.getDate()>B.days.getLast()){B.val.setDate(B.days.getLast())}B.els.each(function(A){A.value=this.format(B.val,A.format)},this);this.check(B);this.calendars.each(function(A){if(A.visible){this.display(A)}},this)},check:function(B){this.calendars.each(function(F,H){if(F.val){var A=false;if(H<B.id){var G=new Date(Date.parse(B.val));G.setDate(G.getDate()-(this.options.pad*(B.id-H)));if(G<F.val){A=true}}if(H>B.id){var G=new Date(Date.parse(B.val));G.setDate(G.getDate()+(this.options.pad*(H-B.id)));if(G>F.val){A=true}}if(A){if(F.start>G){G=F.start}if(F.end<G){G=F.end}F.month=G.getMonth();F.year=G.getFullYear();$extend(F,this.values(F));F.val=F.days.contains(G.getDate())?G:null;this.write(F);if(F.visible){this.display(F)}}}else{F.month=B.month;F.year=B.year}},this)},clicked:function(E,D,F){F.val=(this.value(F)==D)?null:new Date(F.year,F.month,D);this.write(F);if(!F.val){F.val=this.read(F)}if(F.val){this.check(F);this.toggle(F)}else{E.addClass(this.classes.valid);E.removeClass(this.classes.active)}},display:function(h){this.calendar.empty();this.calendar.className=this.classes.calendar+" "+this.options.months[h.month].toLowerCase();var g=new Element("div").injectInside(this.calendar);var Y=new Element("table").injectInside(g).adopt(this.caption(h));var Z=new Element("thead").injectInside(Y);var p=new Element("tr").injectInside(Z);for(var a=0;a<=6;a++){var m=this.options.days[(a+this.options.offset)%7];p.adopt(new Element("th",{title:m}).appendText(m.substr(0,1)))}var q=new Element("tbody").injectInside(Y);var p=new Element("tr").injectInside(q);var W=new Date(h.year,h.month,1);var n=((W.getDay()-this.options.offset)+7)%7;var i=new Date(h.year,h.month+1,0).getDate();var f=new Date(h.year,h.month,0).getDate();var l=this.value(h);var c=h.days;var e=[];var k=[];this.calendars.each(function(C,A){if(C!=h&&C.val){if(h.year==C.val.getFullYear()&&h.month==C.val.getMonth()){e.push(C.val.getDate())}if(h.val){for(var B=1;B<=i;B++){W.setDate(B);if((A<h.id&&W>C.val&&W<h.val)||(A>h.id&&W>h.val&&W<C.val)){if(!k.contains(B)){k.push(B)}}}}}},this);var W=new Date();var X=new Date(W.getFullYear(),W.getMonth(),W.getDate()).getTime();for(var a=1;a<43;a++){if((a-1)%7==0){p=new Element("tr").injectInside(q)}var j=new Element("td").injectInside(p);var b=a-n;var V=new Date(h.year,h.month,b);var o="";if(b===l){o=this.classes.active}else{if(e.contains(b)){o=this.classes.inactive}else{if(c.contains(b)){o=this.classes.valid}else{if(b>=1&&b<=i){o=this.classes.invalid}}}}if(V.getTime()==X){o=o+" "+this.classes.today}if(k.contains(b)){o=o+" "+this.classes.hilite}j.addClass(o);if(c.contains(b)){j.setProperty("title",this.format(V,"D M jS Y"));j.addEvents({click:function(C,B,A){this.clicked(C,B,A)}.pass([j,b,h],this),mouseover:function(A,B){A.addClass(B)}.pass([j,this.classes.hover]),mouseout:function(A,B){A.removeClass(B)}.pass([j,this.classes.hover])})}if(b<1){b=f+b}else{if(b>i){b=b-i}}j.appendText(b)}},element:function(D,F,E){if($type(F)=="object"){return true}D=$(D);if(!D){return false}D.format=F;if(D.get("tag")=="select"){D.addEvent("change",function(A){this.changed(A)}.pass(E,this))}else{D.readOnly=true;D.addEvent("focus",function(A){this.toggle(A)}.pass(E,this))}E.els.push(D);return true},format:function(N,R){var T="";if(N){var X=N.getDate();var Q=N.getDay();var M=this.options.days[Q];var O=N.getMonth()+1;var U=this.options.months[O-1];var S=N.getFullYear()+"";for(var W=0,V=R.length;W<V;W++){var P=R.charAt(W);switch(P){case"y":S=S.substr(2);case"Y":T+=S;break;case"m":if(O<10){O="0"+O}case"n":T+=O;break;case"M":U=U.substr(0,3);case"F":T+=U;break;case"d":if(X<10){X="0"+X}case"j":T+=X;break;case"D":M=M.substr(0,3);case"l":T+=M;break;case"N":Q+=1;case"w":T+=Q;break;case"S":if(X%10==1&&X!="11"){T+="st"}else{if(X%10==2&&X!="12"){T+="nd"}else{if(X%10==3&&X!="13"){T+="rd"}else{T+="th"}}}break;default:T+=P}}}return T},navigate:function(G,H,F){switch(H){case"m":if($type(G.months)=="array"){var E=G.months.indexOf(G.month)+F;if(E<0||E==G.months.length){if(this.options.navigation==1){this.navigate(G,"y",F)}E=(E<0)?G.months.length-1:0}G.month=G.months[E]}else{var E=G.month+F;if(E<0||E==12){if(this.options.navigation==1){this.navigate(G,"y",F)}E=(E<0)?11:0}G.month=E}break;case"y":if($type(G.years)=="array"){var E=G.years.indexOf(G.year)+F;G.year=G.years[E]}else{G.year+=F}break}$extend(G,this.values(G));if($type(G.months)=="array"){var E=G.months.indexOf(G.month);if(E<0){G.month=G.months[0]}}this.display(G)},read:function(G){var E=[null,null,null];G.els.each(function(A){var B=this.unformat(A.value,A.format);B.each(function(C,D){if($type(C)=="number"){E[D]=C}})},this);if($type(E[0])=="number"){G.year=E[0]}if($type(E[1])=="number"){G.month=E[1]}var F=null;if(E.every(function(A){return $type(A)=="number"})){var H=new Date(E[0],E[1]+1,0).getDate();if(E[2]>H){E[2]=H}F=new Date(E[0],E[1],E[2])}return(G.val==F)?null:F},rebuild:function(B){B.els.each(function(D){if(D.get("tag")=="select"&&D.format.test("^(d|j)$")){var A=this.value(B);if(!A){A=D.value.toInt()}D.empty();B.days.each(function(F){var C=new Element("option",{selected:(A==F),value:((D.format=="d"&&F<10)?"0"+F:F)}).appendText(F).injectInside(D)},this)}},this)},sort:function(D,C){return D-C},toggle:function(I){document.removeEvent("mousedown",this.fn);if(I.visible){I.visible=false;I.button.removeClass(this.classes.active);this.fx.start("opacity",1,0)}else{this.fn=function(A,B){var A=new Event(A);var C=A.target;var D=false;while(C!=document.body&&C.nodeType==1){if(C==this.calendar){D=true}this.calendars.each(function(E){if(E.button==C||E.els.contains(C)){D=true}});if(D){A.stop();return false}else{C=C.parentNode}}this.toggle(B)}.create({"arguments":I,bind:this,event:true});document.addEvent("mousedown",this.fn);this.calendars.each(function(A){if(A==I){A.visible=true;A.button.addClass(this.classes.active)}else{A.visible=false;A.button.removeClass(this.classes.active)}},this);var J=window.getScrollSize();var G=I.button.getCoordinates();var F=G.right+this.options.tweak.x;var H=G.top+this.options.tweak.y;if(!this.calendar.coord){this.calendar.coord=this.calendar.getCoordinates()}if(F+this.calendar.coord.width>J.x){F-=(F+this.calendar.coord.width-J.x)}if(H+this.calendar.coord.height>J.y){H-=(H+this.calendar.coord.height-J.y)}this.calendar.setStyles({left:F+"px",top:H+"px"});if(window.ie6){this.iframe.setStyles({height:this.calendar.coord.height+"px",left:F+"px",top:H+"px",width:this.calendar.coord.width+"px"})}this.display(I);this.fx.start("opacity",0,1)}},unformat:function(L,P){P=P.escapeRegExp();var N={d:"([0-9]{2})",j:"([0-9]{1,2})",D:"("+this.options.days.map(function(A){return A.substr(0,3)}).join("|")+")",l:"("+this.options.days.join("|")+")",S:"(st|nd|rd|th)",F:"("+this.options.months.join("|")+")",m:"([0-9]{2})",M:"("+this.options.months.map(function(A){return A.substr(0,3)}).join("|")+")",n:"([0-9]{1,2})",Y:"([0-9]{4})",y:"([0-9]{2})"};var R=[];var Q="";for(var K=0;K<P.length;K++){var O=P.charAt(K);if(N[O]){R.push(O);Q+=N[O]}else{Q+=O}}var J=L.match("^"+Q+"$");var M=new Array(3);if(J){J=J.slice(1);R.each(function(A,B){B=J[B];switch(A){case"y":B="19"+B;case"Y":M[0]=B.toInt();break;case"F":B=B.substr(0,3);case"M":B=this.options.months.map(function(C){return C.substr(0,3)}).indexOf(B)+1;case"m":case"n":M[1]=B.toInt()-1;break;case"d":case"j":M[2]=B.toInt();break}},this)}return M},value:function(D){var C=null;if(D.val){if(D.year==D.val.getFullYear()&&D.month==D.val.getMonth()){C=D.val.getDate()}}return C},values:function(L){var N,I,J;L.els.each(function(A){if(A.get("tag")=="select"){if(A.format.test("(y|Y)")){N=[];A.getChildren().each(function(B){var C=this.unformat(B.value,A.format);if(!N.contains(C[0])){N.push(C[0])}},this);N.sort(this.sort)}if(A.format.test("(F|m|M|n)")){I=[];A.getChildren().each(function(B){var C=this.unformat(B.value,A.format);if($type(C[0])!="number"||C[0]==L.year){if(!I.contains(C[1])){I.push(C[1])}}},this);I.sort(this.sort)}if(A.format.test("(d|j)")&&!A.format.test("^(d|j)$")){J=[];A.getChildren().each(function(B){var C=this.unformat(B.value,A.format);if(C[0]==L.year&&C[1]==L.month){if(!J.contains(C[2])){J.push(C[2])}}},this)}}},this);var K=1;var M=new Date(L.year,L.month+1,0).getDate();if(L.year==L.start.getFullYear()){if(I==null&&this.options.navigation==2){I=[];for(var O=0;O<12;O++){if(O>=L.start.getMonth()){I.push(O)}}}if(L.month==L.start.getMonth()){K=L.start.getDate()}}if(L.year==L.end.getFullYear()){if(I==null&&this.options.navigation==2){I=[];for(var O=0;O<12;O++){if(O<=L.end.getMonth()){I.push(O)}}}if(L.month==L.end.getMonth()){M=L.end.getDate()}}var P=this.blocked(L);if($type(J)=="array"){J=J.filter(function(A){if(A>=K&&A<=M&&!P.contains(A)){return A}})}else{J=[];for(var O=K;O<=M;O++){if(!P.contains(O)){J.push(O)}}}J.sort(this.sort);return{days:J,months:I,years:N}},write:function(B){this.rebuild(B);B.els.each(function(A){A.value=this.format(B.val,A.format)},this)}});