Calendar=function(b,c,a){this.activeDiv=null;this.onSelected=c||null;this.onClose=a||null;this.hidden=false;this.minDate=(typeof BookingBuddy!="undefined")?new Date(BookingBuddy.Strings.ServerTime):new Date();this.maxDate=(typeof BookingBuddy!="undefined")?new Date(BookingBuddy.Strings.ServerTime):new Date();this.isPopup=true;this.date=b?new Date(b):(typeof BookingBuddy!="undefined")?new Date(BookingBuddy.Strings.ServerTime):new Date();this.hiliteToday=true;this.numMonths=2;this.offset={x:0,y:1};this.tables=new Array();this.element=null;this.tbodies=new Array();this.titles=new Array();this.prev=null;this.next=null;this.dateClicked=false};Calendar._C=null;Calendar._FD=0;Calendar.is_ie=(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent));Calendar.is_ie5=(Calendar.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Calendar.is_opera=/opera/i.test(navigator.userAgent);Calendar.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Calendar.getAbsolutePos=function(e){var a=0,d=0;var c=/^div$/i.test(e.tagName);if(c&&e.scrollLeft){a=e.scrollLeft}if(c&&e.scrollTop){d=e.scrollTop}var f={x:e.offsetLeft-a,y:e.offsetTop-d};if(e.offsetParent){var b=this.getAbsolutePos(e.offsetParent);f.x+=b.x;f.y+=b.y}return f};Calendar.removeClass=function(e,d){if(!(e&&e.className)){return}var a=e.className.split(" ");var b=new Array();for(var c=a.length;c>0;){if(a[--c]!=d){b[b.length]=a[c]}}e.className=b.join(" ")};Calendar.addClass=function(b,a){Calendar.removeClass(b,a);b.className+=" "+a};Calendar.getElement=function(a){var b=Calendar.is_ie?window.event.srcElement:a.currentTarget;while(b.nodeType!=1||/^div$/i.test(b.tagName)){b=b.parentNode}return b};Calendar.getTargetElement=function(a){var b=Calendar.is_ie?window.event.srcElement:a.target;while(b.nodeType!=1){b=b.parentNode}return b};Calendar.stopEvent=function(a){a||(a=window.event);if(Calendar.is_ie){a.cancelBubble=true;a.returnValue=false}else{a.preventDefault();a.stopPropagation()}return false};Calendar.addEvent=function(a,c,b){if(a.attachEvent){a.attachEvent("on"+c,b)}else{if(a.addEventListener){a.addEventListener(c,b,true)}else{a["on"+c]=b}}};Calendar.removeEvent=function(a,c,b){if(a.detachEvent){a.detachEvent("on"+c,b)}else{if(a.removeEventListener){a.removeEventListener(c,b,true)}else{a["on"+c]=null}}};Calendar.createElement=function(c,b){var a=null;if(document.createElementNS){a=document.createElementNS("http://www.w3.org/1999/xhtml",c)}else{a=document.createElement(c)}if(typeof b!="undefined"){b.appendChild(a)}return a};Calendar._add_evs=function(a){Calendar.addEvent(a,"mouseover",Calendar.buttonMouseOver);Calendar.addEvent(a,"mousedown",Calendar.buttonMouseDown);Calendar.addEvent(a,"mouseout",Calendar.buttonMouseOut);if(Calendar.is_ie){a.setAttribute("unselectable",true)}};Calendar.mouseDownUp=function(ev){var cal=Calendar._C;if(!cal){return false}var el=cal.activeDiv;if(!el){return false}var target=Calendar.getTargetElement(ev);ev||(ev=window.event);Calendar.removeClass(el,"active");if(target==el||target.parentNode==el){Calendar.cellClick(el,ev)}with(Calendar){removeEvent(document,"mouseup",mouseDownUp);removeEvent(document,is_ie5?"mousemove":"mouseover",mouseDownOver);_C=null;return stopEvent(ev)}};Calendar.mouseDownOver=function(b){var d=Calendar._C;if(!d){return}var a=d.activeDiv;var c=Calendar.getTargetElement(b);if(c==a){Calendar.addClass(a,"hilite active")}else{Calendar.removeClass(a,"hilite active")}return Calendar.stopEvent(b)};Calendar.buttonMouseDown=function(ev){with(Calendar){var el=getElement(ev);if(el.disabled){return false}var cal=el.calendar;cal.activeDiv=el;_C=cal;addClass(el,"hilite active");addEvent(document,Calendar.is_ie5?"mousemove":"mouseover",mouseDownOver);addEvent(document,"mouseup",mouseDownUp);return stopEvent(ev)}};Calendar.buttonMouseOver=function(ev){with(Calendar){var el=getElement(ev);if(el.disabled){return false}addClass(el,"hilite");return stopEvent(ev)}};Calendar.buttonMouseOut=function(ev){with(Calendar){var el=getElement(ev);if(el.disabled){return false}removeClass(el,"hilite");return stopEvent(ev)}};Calendar.cellClick=function(c,i){var b=c.calendar;var g=false;var h=false;var e=null;var d=true;if(typeof c.navtype=="undefined"){b.date.setDateOnly(c.caldate);e=b.date;h=!c.disabled;b.dateClicked=true}else{e=new Date(b.date);b.dateClicked=false;var f=e.getMonth();function a(k){var l=e.getDate();var j=e.getMonthDays(k);if(l>j){e.setDate(j)}e.setMonth(k)}switch(c.navtype){case -1:a(f-1);d=false;break;case 1:a(f+1);d=false;break}if(!e.equalsTo(b.date)){b.setDate(e);h=true}}if(h&&d){i&&b.callHandler()}if(g){Calendar.removeClass(c,"hilite");i&&b.callCloseHandler()}};Calendar.prototype.create=function(l){var k=null;if(typeof Calendar._SDN_len=="undefined"){Calendar._SDN_len=3}if(!l){k=document.getElementsByTagName("body")[0];this.isPopup=true}else{k=l;this.isPopup=false}var b=Calendar.createElement("div");this.element=b;b.className="calendar";if(this.isPopup){b.style.position="absolute";b.style.display="none"}for(var c=0;c<this.numMonths;++c){var o=Calendar.createElement("table");this.tables[c]=o;o.cellSpacing=0;o.cellPadding=0;o.calendar=this;if(c==0){Calendar.addClass(o,"first")}else{if(c==this.numMonths-1){Calendar.addClass(o,"last")}}b.appendChild(o);var h=Calendar.createElement("thead",o);var n=null;var p=null;var a=this;var d=function(m,j,i){n=Calendar.createElement("td",p);n.colSpan=j;n.className="button";if(i!=0&&Math.abs(i)<=2){n.className+=" nav"}if(m=="&laquo;"){n.className+=" left"}else{if(m=="&raquo;"){n.className+=" right"}}Calendar._add_evs(n);n.calendar=a;n.navtype=i;n.innerHTML="<div unselectable='on'>"+m+"</div>";return n};p=Calendar.createElement("tr",h);(c==0)?this.prev=d("&laquo;",1,-1):d("&nbsp;",1);this.titles[c]=d("",5,300);this.titles[c].className="title";(c==this.numMonths-1)?this.next=d("&raquo;",1,1):d("&nbsp;",1);p=Calendar.createElement("tr",h);p.className="daynames";for(var g=0;g<7;++g){n=Calendar.createElement("td",p);n.className="day name";if(g==0){n.className=n.className+" first"}else{if(g==6){n.className=n.className+" last"}}n.innerHTML=Calendar._SDN[(g+Calendar._FD)%7].substr(0,Calendar._SDN_len)}var f=Calendar.createElement("tbody",o);this.tbodies[c]=f;for(g=6;g>0;--g){p=Calendar.createElement("tr",f);for(var e=7;e>0;--e){n=Calendar.createElement("td",p);n.calendar=this;Calendar._add_evs(n)}}}k.appendChild(this.element);this._init(this.date)};Calendar.prototype.toggleIFrameMask=function(c){if(c=="hide"){var b=$j("#cal_hide_iframe");if(b.length>0){b.remove()}}else{if(c=="show"){var a=$j(this.element).offset();var d=$j("<iframe />",{src:"",id:"cal_hide_iframe",frameBorder:"0",tabIndex:-1,scrolling:"no",css:{position:"absolute",height:$j(this.element).height()+"px",width:$j(this.element).width()+"px",top:a.top+"px",left:a.left+"px",border:"none","z-index":1001,display:"block"}});$j(this.element).css("z-index",1002);$j(this.element).parent().append(d)}}};Calendar.prototype._init=function(w){this.date=w;var h=w.getFullYear();var y=w.getDate();if(typeof BookingBuddy!=="undefined"&&this.params.showAt){var v=new Date(BookingBuddy.Strings.ServerTime);var n=this.params.showAt.id;var b=n.split("_");var a=b[0];if($(a+"_month")){var p=$F(a+"_month").split(" ");var x=p[0];var h=p[1];var u=$F(a+"_day");var q=new Date();q.setFullYear(h,x-1,u)}}else{var v=new Date()}var k=new Date(w);k.setDate(1);if(k<=this.minDate){this.prev.disabled=true;this.prev.className+=" navdisabled";this.prev.innerHTML="&nbsp;"}else{this.prev.disabled=false;Calendar.removeClass(this.prev,"navdisabled");this.prev.innerHTML='<div class="cal_arrow">&laquo;</div>'}for(var r=0;r<this.numMonths;++r){this.tables[r].style.visibility="hidden";var o=new Date(k);o.setMonth(o.getMonth()+r);var l=o.getMonth();var d=o.getFullYear();var g=0;var e=(o.getDay()-Calendar._FD)%7;if(e<0){e+=7}o.setDate(1-e);var f=this.tbodies[r].firstChild;for(var t=0;t<6;++t,f=f.nextSibling){var c=f.firstChild;f.className="daysrow";for(var s=0;s<7;++s,c=c.nextSibling,o.setDate(g+1)){g=o.getDate();c.className="day";if(s==0){c.className=c.className+" first"}else{if(s==6){c.className=c.className+" last"}}if(o.getMonth()!=l){c.className="emptycell";c.innerHTML="&nbsp;";c.disabled=true;f.className="emptyrow";continue}c.disabled=false;c.innerHTML=g;c.caldate=new Date(o);if(typeof q!=="undefined"){if(o.getFullYear()==q.getFullYear()&&o.getMonth()==q.getMonth()&&g==q.getDate()){c.className+=" cal_selected_date"}}if(o.getFullYear()==v.getFullYear()&&o.getMonth()==v.getMonth()&&g==v.getDate()){c.className+=" today"}else{if(o.getTime()<this.minDate.getTime()||o.getTime()>this.maxDate.getTime()){c.className+=" invalid";c.disabled=true}}}}this.titles[r].innerHTML=Calendar._MN[l]+" "+d;this.tables[r].style.visibility="visible";if(r==this.numMonths-1){if(this.maxDate.getTime()<o.getTime()){this.next.disabled=true;this.next.className+=" navdisabled";this.next.innerHTML="&nbsp;"}else{this.next.disabled=false;Calendar.removeClass(this.prev,"navdisabled");this.next.innerHTML='<div class="cal_arrow">&raquo;</div>'}}}};Calendar.prototype.setDate=function(a){if(!a.equalsTo(this.date)){this._init(a)}};Calendar.prototype.refresh=function(){this._init(this.date)};Calendar.prototype.setMinDate=function(a){this.minDate=a};Calendar.prototype.setMaxDate=function(a){this.maxDate=a};Calendar.prototype.callHandler=function(){if(this.onSelected){this.onSelected(this)}};Calendar.prototype.callCloseHandler=function(){if(this.onClose){this.onClose(this)}};Calendar.prototype.destroy=function(){var a=this.element.parentNode;a.removeChild(this.element);Calendar._C=null;window._sl_calendar=null};Calendar._checkCalendar=function(b){var c=window._sl_calendar;if(!c){return false}var a=Calendar.is_ie?Calendar.getElement(b):Calendar.getTargetElement(b);for(;a!=null&&a!=c.element;a=a.parentNode){}if(a==null){window._sl_calendar.callCloseHandler();return Calendar.stopEvent(b)}};Calendar.prototype.show=function(){this.element.style.display="block";this.hidden=false;if(this.isPopup){window._sl_calendar=this;Calendar.addEvent(document,"mousedown",Calendar._checkCalendar)}this.toggleIFrameMask("show")};Calendar.prototype.hide=function(){if(this.isPopup){Calendar.removeEvent(document,"mousedown",Calendar._checkCalendar)}this.toggleIFrameMask("hide");this.element.style.display="none";this.hidden=true};Calendar.prototype.showAt=function(a,c){var b=this.element.style;b.left=(a+this.offset.x)+"px";b.top=(c+this.offset.y)+"px";this.show()};Calendar.prototype.showAtElement=function(b,d,c){var a=this;var e=Calendar.getAbsolutePos(b);if(!d||typeof d!="string"){if(e.x+$j(this.element).outerWidth()>$j(window).width()){e.x=(e.x+$j(b).outerWidth())-$j(this.element).outerWidth()}this.showAt(e.x,e.y+b.offsetHeight);return true}Calendar.continuation_for_khtml_browser=function(){a.element.style.display="block";var f=a.element.offsetWidth;var i=a.element.offsetHeight;a.element.style.display="none";var g=d.substr(0,1);var j="l";if(d.length>1){j=d.substr(1,1)}switch(g){case"T":e.y-=i;break;case"B":e.y+=b.offsetHeight;break;case"C":e.y+=(b.offsetHeight-i)/2;break;case"t":e.y+=b.offsetHeight-i;break;case"b":break}switch(j){case"L":e.x-=f;break;case"R":e.x+=b.offsetWidth;break;case"C":e.x+=(b.offsetWidth-f)/2;break;case"l":e.x+=b.offsetWidth-f;break;case"r":break}if(c){e.y+=c.y?c.y:0;e.x+=c.x?c.x:0}e.width=f;e.height=i+40;a.showAt(e.x,e.y)};if(Calendar.is_khtml){setTimeout("Calendar.continuation_for_khtml_browser()",10)}else{Calendar.continuation_for_khtml_browser()}};Date._MD=new Array(31,28,31,30,31,30,31,31,30,31,30,31);Date.prototype.getMonthDays=function(b){var a=this.getFullYear();if(typeof b=="undefined"){b=this.getMonth()}if(((0==(a%4))&&((0!=(a%100))||(0==(a%400))))&&b==1){return 29}else{return Date._MD[b]}};Date.prototype.equalsTo=function(a){return((this.getFullYear()==a.getFullYear())&&(this.getMonth()==a.getMonth())&&(this.getDate()==a.getDate())&&(this.getHours()==a.getHours())&&(this.getMinutes()==a.getMinutes()))};Date.prototype.setDateOnly=function(a){var b=new Date(a);this.setDate(1);this.setFullYear(b.getFullYear());this.setMonth(b.getMonth());this.setDate(b.getDate())};window._sl_calendar=null;