/*
Script: nogray_date.js
	these functions will extend javascript Date object

License:
	http://www.nogray.com/license.php
		
provided by the NoGray.com
by Wesam Saif
support: support@nogray.com
*/

var _ng_date_object={language:{days:{"char":["S","M","T","W","T","F","S"],"short":["Su","Mo","Tu","We","Th","Fr","Sa"],mid:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"long":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{"short":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"long":["January","February","March","April","May","June","July","August","September","October","November","December"]},am_pm:{lowerCase:["am","pm"],upperCase:["AM","PM"]}},daysInMonth:function(){var a=new Date(this.getFullYear(),this.getMonth(),28);var b=28;for(b=28;b<=32;b++){a.setDate(b);if(a.getMonth()!=this.getMonth()){return(b-1)}}},isLeapYear:function(){var a=new Date(this.getFullYear(),1,29);return(a.getMonth()==1)},fromString:function(g){var f=Date.parse(g.replace(/[-|\\]/g,"/"));if(isNaN(f)){g=g.toLowerCase();g=g.replace(/(\s)*([\+|-])(\s)*/g,"$2");var k=this.getFullYear();var a=this.getMonth();var c=this.getDate();g=g.replace("yesterday","today-1").replace("tomorrow","today+1").replace("last month","month-1").replace("next month","month+1").replace("last year","year-1").replace("next year","year+1");if(g.indexOf("today+")>=0){c=c+g.replace("today+","").toInt()}else{if(g.indexOf("today-")>=0){c=c-g.replace("today-","").toInt()}else{if(g.indexOf("month+")>=0){a=a+g.replace("month+","").toInt();var j=new Date(k,a,1).daysInMonth();if(c>j){c=j}}else{if(g.indexOf("month-")>=0){a=this.getMonth()-g.replace("month-","").toInt();var j=new Date(k,a,1).daysInMonth();if(c>j){c=j}}else{if(g.indexOf("year+")>=0){k=k+g.replace("year+","").toInt();var j=new Date(k,a,1).daysInMonth();if(c>j){c=j}}else{if(g.indexOf("year-")>=0){k=this.getFullYear()-g.replace("year-","").toInt();var j=new Date(k,a,1).daysInMonth();if(c>j){c=j}}}}}}}var b=new Date(k,a,c,this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds())}else{var b=new Date(f)}return b},fromObject:function(a){var k={};var d;for(d in a){k[d]=a[d]}if(!$defined(k.date)){k.date=this.getDate()}if(!$defined(k.month)){k.month=this.getMonth()}if(!$defined(k.year)){k.year=this.getFullYear()}if(!$defined(k.hour)){k.hour=this.getHours()}if(!$defined(k.minute)){k.minute=this.getMinutes()}if(!$defined(k.second)){k.second=this.getSeconds()}if(!$defined(k.millisecond)){k.millisecond=this.getMilliseconds()}if($type(k.date)!="string"){var f=new Date(k.year,k.month,k.date,k.hour,k.minute,k.second,k.millisecond);return f}k.date=k.date.toLowerCase();var j=new Date(k.year,k.month,1);var b;if(k.date.indexOf("sunday")!=-1){b=0}else{if(k.date.indexOf("monday")!=-1){b=1}else{if(k.date.indexOf("tuesday")!=-1){b=2}else{if(k.date.indexOf("wednesday")!=-1){b=3}else{if(k.date.indexOf("thursday")!=-1){b=4}else{if(k.date.indexOf("friday")!=-1){b=5}else{if(k.date.indexOf("saturday")!=-1){b=6}}}}}}}if(j.getDay()>b){var g=(7-j.getDay())+b+1}else{if(j.getDay()<b){var g=b-j.getDay()+1}else{var g=1}}var o=["1st","2nd","3rd","4th","5th"];var m=5;var n=j.daysInMonth();while(k.date.indexOf("last")!=-1){if((g+(m*7))<=n){k.date=k.date.replace("last",o[m])}m--;if(m<0){k.date=k.date.replace("last","1st")}}var l;if(k.date.indexOf("1st")!=-1){l=0}else{if(k.date.indexOf("2nd")!=-1){l=1}else{if(k.date.indexOf("3rd")!=-1){l=2}else{if(k.date.indexOf("4th")!=-1){l=3}else{if(k.date.indexOf("5th")!=-1){l=4}}}}}var f=new Date(k.year,k.month,g+(l*7),k.hour,k.minute,k.second,k.millisecond);return f},print:function(g,b){if(!$defined(b)){b=this.language}else{if($defined(b.days)){if(!$defined(b.days["char"])){b.day["char"]=this.language.days["char"]}if(!$defined(b.days["short"])){b.day["short"]=this.language.days["short"]}if(!$defined(b.days.mid)){b.day.mid=this.language.days.mid}if(!$defined(b.days["long"])){b.day["long"]=this.language.days["long"]}}else{b.days=this.language.days}if($defined(b.months)){if(!$defined(b.months["short"])){b.months["short"]=this.language.months["short"]}if(!$defined(b.months["long"])){b.months["long"]=this.language.months["long"]}}else{b.months=this.language.months}if($defined(b.am_pm)){if(!$defined(b.am_pm.lowerCase)){b.am_pm.lowerCase=this.language.am_pm.lowerCase}if(!$defined(b.am_pm.upperCase)){b.am_pm.upperCase=this.language.am_pm.upperCase}}else{b.am_pm=this.language.am_pm}}var d=0;var k="";var a="";for(d=0;d<g.length;d++){a=g.charAt(d);if(a=="d"){if(this.getDate()<10){k+="0"}k+=this.getDate()}else{if(a=="D"){k+=b.days.mid[this.getDay()]}else{if(a=="j"){k+=this.getDate()}else{if(a=="l"){k+=b.days["long"][this.getDay()]}else{if(a=="N"){var f=this.getDay();if(f==0){f=7}k+=f}else{if(a=="S"){if((this.getDate()=="1")||(this.getDate()=="21")||(this.getDate()=="31")){k+="st"}else{if((this.getDate()=="2")||(this.getDate()=="22")){k+="nd"}else{if((this.getDate()=="3")||(this.getDate()=="23")){k+="rd"}else{k+="th"}}}}else{if(a=="w"){k+=this.getDay()}else{if(a=="z"){k+=this.getDayInYear()}else{if(a=="F"){k+=b.months["long"][this.getMonth()]}else{if(a=="M"){k+=b.months["short"][this.getMonth()]}else{if(a=="m"){if(this.getMonth()+1<10){k+=0}k+=this.getMonth()+1}else{if(a=="n"){k+=this.getMonth()}else{if(a=="t"){k+=this.daysInMonth()}else{if(a=="L"){if(this.isLeapYear()){k+=1}else{k+=0}}else{if((a=="Y")||(a=="o")){k+=this.getFullYear()}else{if(a=="y"){k+=this.getFullYear().toString().substr(2,2)}else{if(a=="a"){if(this.getHours()<12){k+=b.am_pm.lowerCase[0]}else{k+=b.am_pm.lowerCase[1]}}else{if(a=="A"){if(this.getHours()<12){k+=b.am_pm.upperCase[0]}else{k+=b.am_pm.upperCase[1]}}else{if(a=="B"){k+=this.toSwatchInternetTime()}else{if(a=="g"){var j=(this.getHours()%12);if(j==0){j=12}k+=j}else{if(a=="G"){k+=this.getHours()}else{if(a=="h"){var j=(this.getHours()%12);if(j==0){j=12}if(h<10){r+=0}k+=j}else{if(a=="H"){if(this.getHours()<10){k+=0}k+=this.getHours()}else{if(a=="i"){if(this.getMinutes()<10){k+=0}k+=this.getMinutes()}else{if(a=="s"){if(this.getSeconds()<10){k+=0}k+=this.getSeconds()}else{if(a=="u"){k+=this.getMilliseconds()}else{if((a=="O")||(a=="P")){var j=(this.getTimezoneOffset())/60;var c=j-Math.floor(j);c=c*60;j=Math.floor(j);c=Math.floor(c);if(j==0){j="00"}else{if((j>-10)&&(j<0)){j="-0"+Math.abs(j)}else{if((j<10)&&(j>0)){j="0"+j}else{j=j.toString()}}}if(j>0){k+="+"}if(c<10){c="0"+c}else{c=c.toString()}if(a=="P"){var l=":"}else{var l=""}k+=j+l+c}else{if(a=="Z"){k+=this.getTimezoneOffset()}else{if(a=="c"){g=g.substr(0,d-0)+"Y-m-dTH:i:sP"+g.substr(0,d);d--}else{if(a=="r"){g=g.substr(0,d-0)+"D, d M Y H:i:s O"+g.substr(0,d);d--}else{if(a=="U"){k+=Math.floor(this.timeDifference(new Date(1970,0,1))/1000)}else{k+=a}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}return k},getWeekInYear:function(){return Math.floor(this.getDayInYear()/7)},getDayInYear:function(){return Math.floor(this.getHourInYear()/24)},getHourInYear:function(){return Math.floor(this.getMinuteInYear()/60)},getMinuteInYear:function(){return Math.floor(this.getSecondInYear()/60)},getSecondInYear:function(){return Math.floor(this.getMillisecondInYear()/1000)},getMillisecondInYear:function(){return this.timeDifference(new Date(this.getFullYear(),0,1))},getWeekSince:function(a){return Math.floor(this.getDaySince(a)/7)},getDaySince:function(a){return Math.floor(this.getHourSince(a)/24)},getHourSince:function(a){return Math.floor(this.getMinuteSince(a)/60)},getMinuteSince:function(a){return Math.floor(this.getSecondSince(a)/60)},getSecondSince:function(a){return Math.floor(this.getMillisecondSince(a)/1000)},getMillisecondSince:function(a){return this.timeDifference(a)},timeDifference:function(a){return this.getTime()-a.getTime()},toSwatchInternetTime:function(){var a=(this.getHours()*3600)+(this.getMinutes()*60)+this.getSeconds()+((this.getTimezoneOffset()+60)*60);var b=Math.floor(a/86.4);return("@"+b)},fromSwatchInternetTime:function(c){if($type(c)=="string"){c=c.replace("@","").toInt()}var a=Math.floor(c*86.4)-((this.getTimezoneOffset()+60)*60);var b=new Date(this.getFullYear(),this.getMonth(),this.getDate());b.setTime(b.getTime()+(a*1000));return b}};try{$native(Date);Date.extend(_ng_date_object)}catch(e){Native.implement([Date],_ng_date_object)}delete _ng_date_object;var Calendar=new Class({Implements:[Events,Options],options:{visible:false,offset:{x:0,y:0},dateFormat:"D, d M Y",numMonths:1,classPrefix:"ng-",idPrefix:"ng-",startDay:0,startDate:"today",endDate:"year+10",inputType:"text",inputField:null,allowSelection:true,multiSelection:false,maxSelection:0,selectedDate:null,datesOff:[],allowDatesOffSelection:false,daysOff:[],allowDaysOffSelection:false,weekend:[0,6],allowWeekendSelection:false,forceSelections:[],onSelect:function(){return},onUnSelect:function(){return},onCalendarLoad:function(){return},onOpen:function(){return},onClose:function(){return},onClear:function(){return},formatter:function(a){return a.getDate()},outOfRangeFormatter:function(a){return a.getDate()},weekendFormatter:function(a){return a.getDate()},daysOffFormatter:function(a){return a.getDate()},datesOffFormatter:function(a){return a.getDate()},selectedDateFormatter:function(a){return a.getDate()},language:null,daysText:"mid",monthsText:"long",preTdHTML:"&laquo;",preTdHTMLOff:"&nbsp;",nexTdHTML:"&raquo;",nexTdHTMLOff:"&nbsp;",closeLinkHTML:"Close",clearLinkHTML:"Clear",calEvents:{mouseenter:function(a){if(!a.hasClass(this.options.classPrefix+"selected-day")){a.addClass(this.options.classPrefix+"mouse-over")}},mouseleave:function(a){a.removeClass(this.options.classPrefix+"mouse-over")}},tdEvents:[],dateOnAvailable:[],speedFireFox:false,closeOpenCalendars:true},initialize:function(c,j,m){this.element=$(c);if($defined(j)){this.toggler=$(j)}else{this.toggler=null}this.visibleMonth=[];this.manageTDs=[];this.selectedDates=[];this.setOptions(m);this.options.inputType=this.options.inputType.toLowerCase();this.date=new Date();this.date=new Date(this.date.getFullYear(),this.date.getMonth(),this.date.getDate());if($defined(this.options.language)){this.date.language=this.options.language}this.options.startDate=this.processDates(this.options.startDate);this.options.endDate=this.processDates(this.options.endDate);if(!$defined(this.options.startDate)){this.options.startDate=this.date.fromObject({date:"year-10"})}else{this.date=this.processDates(new Date(this.options.startDate.getTime()))}if(!$defined(this.options.endDate)){this.options.endDate=this.date.fromObject({date:"year+10"})}this.options.selectedDate=this.processDates(this.options.selectedDate);if(!this.isSelectable(this.options.selectedDate)){this.options.selectedDate=null}this.options.selectedDate2=this.processDates(this.options.selectedDate2);if(!this.isSelectable(this.options.selectedDate2)){this.options.selectedDate2=null}if(!this.options.visible){if((window.ie)&&(!window.ie7)){this.iframe=new Element("iframe",{src:"about:Blank",styles:{position:"absolute","z-index":20000,opacity:0,"background-color":"#ffffff"},frameborder:0});document.body.appendChild(this.iframe)}this.element.setStyles({position:"absolute","z-index":25000,opacity:0});if($defined(this.toggler)){this.toggler.addEvent("click",function(n){var n=new Event(n);if(this.element.getStyle("opacity")==0){this.openCalendar()}else{this.closeCalendar()}n.stop()}.bind(this))}}if(this.options.numMonths>1){this.loading_div=new Element("div",{styles:{position:"absolute","z-index":26000,opacity:0,background:"#FFFFFF"}});this.element.adopt(this.loading_div)}var a=new Element("table",{"class":this.options.classPrefix+"cal-header-table"});var g=new Element("tbody");a.adopt(g);var k=new Element("tr");this.preTD=new Element("td",{"class":this.options.classPrefix+"cal-previous-td"});this.preTD.addEvent("click",function(){var n=this.options.numMonths;var o;while(n>0){o=this.date.fromString("month-"+n);o.setDate(o.daysInMonth());if(!this.isOutOfRange(o)){o.fromString("month-1");break}n--}if(n>0){this.updateCalendar(o)}}.bind(this));k.adopt(this.preTD);this.headerTD=new Element("td",{"class":this.options.classPrefix+"cal-header-td"});k.adopt(this.headerTD);this.nexTD=new Element("td",{"class":this.options.classPrefix+"cal-next-td"});this.nexTD.addEvent("click",function(){var n=this.options.numMonths;var o;while(n>0){o=this.date.fromString("month+"+n);o.setDate(1);if(!this.isOutOfRange(o)){o.fromString("month-1");break}n--}if(n>0){this.updateCalendar(o)}}.bind(this));k.adopt(this.nexTD);this.updateHeader();g.adopt(k);this.element.adopt(a);this.calendarHolder=new Element("div");this.element.adopt(this.calendarHolder);var l=new Element("div",{styles:{clear:"both"}});this.element.adopt(l);var b=new Element("div",{styles:{clear:"both",height:1,"font-size":"1px"}});b.set("html","&nbsp;");this.element.adopt(b);if(!this.options.visible){var f=new Element("a",{"class":this.options.classPrefix+"close-link",href:"#"});f.addEvent("click",function(n){var n=new Event(n);n.preventDefault();this.closeCalendar()}.bind(this));f.set("html",this.options.closeLinkHTML);l.adopt(f)}if(this.options.multiSelection){var d=new Element("a",{"class":this.options.classPrefix+"clear-link",href:"#"});d.addEvent("click",function(n){var n=new Event(n);n.preventDefault();this.unselectAll()}.bind(this));d.set("html",this.options.clearLinkHTML);l.adopt(d)}this.populateCalendar();if(this.options.allowSelection){if(this.options.inputType=="select"){this.options.inputField.year=$(this.options.inputField.year);this.options.inputField.month=$(this.options.inputField.month);this.options.inputField.date=$(this.options.inputField.date);this.options.inputField.year.addEvent("change",function(){if(this.options.inputField.year.options[this.options.inputField.year.selectedIndex].value!=""){if($defined(this.options.selectedDate)){var n=new Date(this.options.selectedDate.getTime())}else{var n=new Date(this.date.getTime())}n.setYear(this.options.inputField.year.options[this.options.inputField.year.selectedIndex].value);if(!this.options.multiSelection){this.selectDate(n)}this.updateCalendar(n);this.populateMonthSelect()}}.bind(this));this.options.inputField.month.addEvent("change",function(){if(this.options.inputField.month.options[this.options.inputField.month.selectedIndex].value!=""){if($defined(this.options.selectedDate)){var o=new Date(this.options.selectedDate.getTime())}else{var o=new Date(this.date.getTime())}var n=o.getDate();o.setDate(1);o.setMonth(this.options.inputField.month.options[this.options.inputField.month.selectedIndex].value.toInt()-1);if(o.daysInMonth()>n){o.setDate(n)}else{o.setDate(o.daysInMonth())}if(!this.options.multiSelection){this.selectDate(o)}if(!$defined(this.visibleMonth[o.getMonth()+"-"+o.getFullYear()])){this.updateCalendar(o)}this.populateDateSelect(this.options.inputField)}}.bind(this));this.options.inputField.date.addEvent("change",function(){if($defined(this.options.selectedDate)){var n=new Date(this.options.selectedDate.getTime())}else{var n=new Date(this.date.getTime())}n.setDate(this.options.inputField.date.options[this.options.inputField.date.selectedIndex].value);this.selectDate(n)}.bind(this));this.populateSelect()}else{if(this.options.inputType=="text"){this.options.inputField=$(this.options.inputField);this.options.inputField.addEvent("focus",function(){this.openCalendar()}.bind(this));this.options.inputField.addEvent("keydown",function(n){var n=new Event(n);if((n.key.length==1)||(n.key=="space")){n.stop()}})}}}if($defined(this.options.selectedDate)){if((window.ie6)&&(this.options.inputType=="select")){(function(){this.selectDate(this.options.selectedDate);this.updateCalendar(this.options.selectedDate)}).delay(100,this)}else{this.selectDate(this.options.selectedDate);this.updateCalendar(this.options.selectedDate)}}_all_page_calendars.push(this)},populateSelect:function(){if(this.options.inputType!="select"){return}this.options.inputField.year.empty();var b=new Element("option");this.options.inputField.year.adopt(b);var a=0;for(a=this.options.startDate.getFullYear();a<=this.options.endDate.getFullYear();a++){b=new Element("option",{value:a});b.set("html",a);if(($defined(this.options.selectedDate))&&(this.options.selectedDate.getFullYear()==a)){b.selected="selected"}this.options.inputField.year.adopt(b)}this.populateMonthSelect()},populateMonthSelect:function(){if(this.options.inputType!="select"){return}var b=0;if(this.options.startDate.getFullYear()==this.date.getFullYear()){b=this.options.startDate.getMonth()}var a=11;if(this.options.endDate.getFullYear()==this.date.getFullYear()){a=this.options.endDate.getMonth()}this.options.inputField.month.empty();opt=new Element("option");this.options.inputField.month.adopt(opt);for(i=b;i<=a;i++){opt=new Element("option",{value:(i+1)});opt.set("html",this.date.language.months[this.options.monthsText][i]);if(($defined(this.options.selectedDate))&&(this.options.selectedDate.getMonth()==i)){opt.selected="selected"}this.options.inputField.month.adopt(opt)}this.populateDateSelect()},populateDateSelect:function(){if(this.options.inputType!="select"){return}if((this.options.inputField.year.options[this.options.inputField.year.selectedIndex].value!="")&&(this.options.inputField.month.options[this.options.inputField.month.selectedIndex].value!="")){var c=new Date(this.options.inputField.year.options[this.options.inputField.year.selectedIndex].value,this.options.inputField.month.options[this.options.inputField.month.selectedIndex].value-1,1)}else{if($defined(this.options.selectedDate)){var c=this.options.selectedDate}else{var c=this.date}}var a=c.daysInMonth();this.options.inputField.date.empty();opt=new Element("option");this.options.inputField.date.adopt(opt);var b;for(i=1;i<=a;i++){opt=new Element("option",{value:i});opt.set("html",i);if(!this.isSelectable(new Date(c.getFullYear(),c.getMonth(),i))){opt.disabled=true;opt.setStyles({color:"#cccccc"})}else{if(($defined(this.options.selectedDate))&&(this.options.selectedDate.getDate()==i)&&(this.options.selectedDate.getMonth()==this.options.inputField.month.options[this.options.inputField.month.selectedIndex].value-1)&&(this.options.selectedDate.getFullYear()==this.options.inputField.year.options[this.options.inputField.year.selectedIndex].value)){opt.selected="selected"}}this.options.inputField.date.adopt(opt)}},populateCalender:function(){return this.populateCalendar()},populateCalendar:function(){var a=function(d,c){var b=0;this.visibleMonth=[];this.calendarHolder.set("html","");for(b=0;b<this.options.numMonths;b++){this.calendarHolder.innerHTML+=this.createCalenderTable(d,c);this.visibleMonth[d+"-"+c]=true;d++;if(d>11){d=0;c++}}if(this.options.numMonths>1){this.loading_div.setOpacity(0)}this.processTdEvents();if($defined(this.iframe)){this.iframe.setStyles({width:this.element.getStyle("width"),height:this.element.getStyle("height")})}this.fireEvent("onCalendarLoad")};if(this.options.numMonths>1){if(this.element.getStyle("opacity")>0){this.loading_div.setStyles({opacity:0.5,height:this.element.getStyle("height"),width:this.element.getStyle("width")})}a.delay(1,this,[this.date.getMonth(),this.date.getFullYear()])}else{this.visibleMonth=[];this.calendarHolder.innerHTML=this.createCalenderTable(this.date.getMonth(),this.date.getFullYear());this.visibleMonth[this.date.getMonth()+"-"+this.date.getFullYear()]=true;this.processTdEvents();if($defined(this.iframe)){this.iframe.width=this.element.getStyle("width");this.iframe.height=this.element.getStyle("height")}this.fireEvent("onCalendarLoad")}},createCalenderTable:function(c,q){var s=new Array();s[s.length]='<table class="'+this.options.classPrefix+'cal" id="'+this.options.idPrefix+"month-"+(c+1)+"-"+q+'-table"><tr><th class="'+this.options.classPrefix+'month-name-th" id="'+this.options.idPrefix+"month-name-"+(c+1)+"-"+q+'-th" colspan="7">'+this.date.language.months[this.options.monthsText][c]+" "+q+"</th></tr><tr>";var g=0;var a=0;for(g=0;g<7;g++){a=(g+this.options.startDay)%7;s[s.length]='<td class="'+this.options.classPrefix+'days-name-td" id="'+this.options.idPrefix+"days-name-"+a+"-"+(c+1)+"-"+q+'-td">'+this.date.language.days[this.options.daysText][a]+"</td>"}s[s.length]="</tr>";var b=new Date(q,c,1);b.setDate(b.getDate()-(b.getDay()-this.options.startDay));if((b.getDate()<=7)&&(b.getDate()!=1)){b.setDate(b.getDate()-7)}var g,d,m,o,l,f,n;var k=7;for(g=1;g<k;g++){s[s.length]="<tr>";for(d=1;d<=7;d++){m="";l="";f="";if(b.getMonth()!=c){f=(b.getMonth()+1)+"-"+b.getDate()+"-"+b.getFullYear();s[s.length]='<td class="'+this.options.classPrefix+"date-"+f+" "+this.options.classPrefix+'outOfRange">'+this.options.outOfRangeFormatter(b)+"</td>"}else{n=this.isSelectable(b,true);if(n[1]=="outOfRange"){m=this.options.classPrefix+"outOfRange";l=this.options.outOfRangeFormatter(b)}else{if(n[1]=="weekend"){m=this.options.classPrefix+"weekend";l=this.options.weekendFormatter(b)}else{if(n[1]=="dayOff"){m=this.options.classPrefix+"dayOff";l=this.options.daysOffFormatter(b)}else{if(n[1]=="dateOff"){m=this.options.classPrefix+"dateOff";l=this.options.datesOffFormatter(b)}else{l=this.options.formatter(b)}}}}if(n[0]){if(this.isSelected(b)){m+=" "+this.options.classPrefix+"selected-day";l=this.options.selectedDateFormatter(b)}}f=(b.getMonth()+1)+"-"+b.getDate()+"-"+b.getFullYear();this.manageTDs[f]=[];s[s.length]='<td class="'+this.options.classPrefix+"date-"+f+" "+m+'" id="'+this.options.idPrefix+"date-"+f+'">'+l+"</td>";if(n[0]){this.manageTDs[f]["click"]=true}if($defined(this.options.tdEvents[f])){if(!$defined(this.manageTDs[f]["event"])){this.manageTDs[f]["event"]=[]}for(e in this.options.tdEvents[f]){this.manageTDs[f]["event"][e]=this.options.tdEvents[f][e]}}if($defined(this.options.dateOnAvailable[f])){if(!$defined(this.manageTDs[f]["dateOnAvailable"])){this.manageTDs[f]["dateOnAvailable"]=[]}this.manageTDs[f]["dateOnAvailable"].push(this.options.dateOnAvailable[f])}}b.setDate(b.getDate()+1)}s[s.length]="</tr>";if((b.getMonth()>c)&&(this.options.numMonths==1)){k=6}}s[s.length]="</table>";return s.join("")},processTdEvents:function(){var c,b;for(p in this.manageTDs){b=this.manageTDs[p];c=$(this.options.idPrefix+"date-"+p);var a=p;if($defined(b.click)){c.addEvent("click",function(g,d){if ($defined(g[1])){var d = g[1]; g = g[0];} var f=new Date().fromString(d);if(this.isSelected(f)){this.unselectDate(f)}else{this.selectDate(f)}}.bind(this,[c,a]));c.setStyle("cursor","pointer");for(e in this.options.calEvents){c.addEvent(e,this.options.calEvents[e].bind(this,c))}}if($defined(b.event)){for(ep in b.event){if($type(b.event[ep])=="function"){c.addEvent(ep,b.event[ep].bind(this,[c,a]))}}}if($defined(b.dateOnAvailable)){b.dateOnAvailable.each(function(d){d.attempt([c,a],this)},this)}}this.manageTDs=[]},isWeekend:function(a){return this.options.weekend.contains(a)},isDayOff:function(a){if((this.options.speedFireFox)&&(window.gecko)){return false}return this.options.daysOff.contains(a)},isDateOff:function(c){if((this.options.speedFireFox)&&(window.gecko)){return false}var c=this.processDates(c);if(!$defined(c)){return false}var b=0;var a=this.options.datesOff.length;for(b=0;b<a;b++){cur_date=this.processDates(this.options.datesOff[b],c);if($defined(cur_date)){if(c.getTime()==cur_date.getTime()){return true}}}return false},isOutOfRange:function(a){var a=this.processDates(a);if(!$defined(a)){return false}return((a.getTime()<this.options.startDate.getTime())||(a.getTime()>this.options.endDate.getTime()))},isSelectable:function(b,a){var b=this.processDates(b);if(!$defined(b)){return false}if((!$defined(a))&&(!this.options.allowSelection)){return false}var c=[true,b];if(this.isOutOfRange(b)){c=[false,"outOfRange"]}else{if(this.isDayOff(b.getDay())){c=[this.options.allowDaysOffSelection,"dayOff"]}else{if(this.isWeekend(b.getDay())){c=[this.options.allowWeekendSelection,"weekend"]}else{if(this.isDateOff(b)){c=[this.options.allowDatesOffSelection,"dateOff"]}}}}if((!this.options.allowSelection)&&(c[0])){c=[false,"noSelection"]}if(!c[0]){if(this.isForcedSelection(b)){c=[true,b]}}if($defined(a)){return c}else{return c[0]}return[false,b]},isForcedSelection:function(b){if((this.options.speedFireFox)&&(window.gecko)){return false}var c=0;var a=this.options.forceSelections.length;var d;for(c=0;c<a;c++){d=this.processDates(this.options.forceSelections[c],b);if(d.getTime()==b.getTime()){return true}}return false},isSelected:function(a){var a=this.processDates(a);if(!$defined(a)){return false}return this.selectedDates.contains(a.getTime())},updateCalendar:function(a){var a=this.processDates(a);if(!$defined(a)){return false}if(this.isOutOfRange(a)){this.date=this.options.startDate}else{this.date=a}this.populateCalendar();this.updateHeader()},selectDate:function(d){if(!this.options.allowSelection){return false}var d=this.processDates(d);if(!$defined(d)){return false}if((this.options.maxSelection>0)&&(this.selectedDates.length>=this.options.maxSelection)){return false}if(this.isSelectable(d)){if(this.options.inputType=="select"){var b=true;var c=true;if($defined(this.options.selectedDate)){if(d.getFullYear()==this.options.selectedDate.getFullYear()){b=false}else{if(d.getMonth()==this.options.selectedDate.getMonth()){c=false}}}}if(!this.options.multiSelection){this.unselectDate(this.options.selectedDate)}this.options.selectedDate=this.date=d;this.selectedDates.push(d.getTime());var a=this.options.idPrefix+"date-"+(d.getMonth()+1)+"-"+d.getDate()+"-"+d.getFullYear();if($defined($(a))){$(a).removeClass(this.options.classPrefix+"mouse-over");$(a).addClass(this.options.classPrefix+"selected-day");$(a).set("html",this.options.selectedDateFormatter(this.options.selectedDate))}if(this.options.inputType=="select"){if(b){this.populateMonthSelect()}else{if(c){this.populateDateSelect()}}this.selectSelectMenu()}else{if(this.options.inputType=="text"){this.fillInputField()}}this.fireEvent("onSelect");return true}else{if(this.options.inputType=="select"){this.options.inputField.date.selectedIndex=0;return false}}this.updateHeader()},unselectDate:function(d){if(!this.options.allowSelection){return false}var d=this.processDates(d);if(!$defined(d)){return false}this.selectedDates.erase(d.getTime());var a=this.options.idPrefix+"date-"+(d.getMonth()+1)+"-"+d.getDate()+"-"+d.getFullYear();if($defined($(a))){$(a).removeClass(this.options.classPrefix+"selected-day")}if(($defined(this.options.selectedDate))&&(this.options.multiSelection)){if(this.options.selectedDate.getTime()==d.getTime()){if($defined(this.selectedDates.getLast())){this.options.selectedDate=new Date(this.selectedDates.getLast())}else{this.options.selectedDate=null}}}else{this.options.selectedDate=null}if(this.options.inputType=="select"){var b=true;var c=true;if($defined(this.options.selectedDate)){if(d.getFullYear()==this.options.selectedDate.getFullYear()){b=false}else{if(d.getMonth()==this.options.selectedDate.getMonth()){c=false}}}if(b){this.populateMonthSelect()}else{if(c){this.populateDateSelect()}}this.selectSelectMenu()}else{if(this.options.inputType=="text"){this.options.inputField.value=this.options.inputField.value.replace(d.print(this.options.dateFormat,this.options.language),"")}}this.fireEvent("onUnSelect",d)},unselectAll:function(){if(!this.options.allowSelection){return false}var a=this.selectedDates.copy();a.each(function(b){this.unselectDate(new Date(b))},this);this.fireEvent("onClear")},selectSelectMenu:function(){if(this.options.inputType!="select"){return}if(!$defined(this.options.selectedDate)){this.options.inputField.date.selectedIndex=0;this.options.inputField.month.selectedIndex=0;this.options.inputField.year.selectedIndex=0;return}this.options.inputField.date.selectedIndex=this.options.selectedDate.getDate();var a;var b=0;var c=$(this.options.inputField.month).getElements("option");a=c.length;for(b=0;b<a;b++){if(c[b].value.toInt()-1==this.options.selectedDate.getMonth()){this.options.inputField.month.selectedIndex=b;break}}var c=$(this.options.inputField.year).getElements("option");a=c.length;for(b=0;b<a;b++){if(c[b].value.toInt()==this.options.selectedDate.getFullYear()){this.options.inputField.year.selectedIndex=b;break}}},fillInputField:function(){if(!this.options.multiSelection){this.options.inputField.value=""}this.options.inputField.value+=this.options.selectedDate.print(this.options.dateFormat,this.options.language)},updateHeader:function(){this.headerTD.set("html",this.date.language.months[this.options.monthsText][this.date.getMonth()]+" "+this.date.getFullYear());if(!this.isOutOfRange(new Date(this.date.getFullYear(),this.date.getMonth()-1,this.options.startDate.getDate()))){this.preTD.set("html",this.options.preTdHTML);this.preTD.setStyle("cursor","pointer")}else{this.preTD.set("html",this.options.preTdHTMLOff);this.preTD.setStyle("cursor","")}if(!this.isOutOfRange(new Date(this.date.getFullYear(),this.date.getMonth()+1,this.options.endDate.getDate()))){this.nexTD.set("html",this.options.nexTdHTML);this.nexTD.setStyle("cursor","pointer")}else{this.nexTD.set("html",this.options.nexTdHTMLOff);this.nexTD.setStyle("cursor","")}},processDates:function(c,b){if(!$defined(b)){b=this.date}var a;if((($type(c)=="object")&&($defined(c.getFullYear)))||($type(c)=="date")){a=c}else{if($type(c)=="object"){a=b.fromObject(c)}else{if($type(c)=="string"){a=b.fromString(c)}else{if($type(c)=="number"){a=new Date(c)}else{return null}}}}if($defined(this.options.language)){a.language=this.options.language}a.setHours(0);a.setSeconds(0);a.setMinutes(0);a.setMilliseconds(0);return a},openCalendar:function(){if(this.options.closeOpenCalendars){$closeAllCalendars()}if(this.options.inputType=="select"){var a=this.options.inputField.date}else{var a=this.options.inputField}var b=a.getCoordinates();this.element.setStyles({top:b.top+b.height+this.options.offset.y,left:b.left+this.options.offset.x,opacity:1});if($defined(this.iframe)){this.iframe.setStyles({top:b.top+b.height+this.options.offset.y,left:b.left+this.options.offset.x,opacity:1})}this.fireEvent("onOpen")},closeCalendar:function(){if(this.options.visible){return false}this.element.setStyle("opacity",0);if($defined(this.iframe)){this.iframe.setStyle("opacity",0)}this.fireEvent("onClose")}});var _all_page_calendars=[];var $closeAllCalendars=function(){_all_page_calendars.each(function(a){a.closeCalendar()})};
