var CalendarVisual=function(b,a){this.Me=b;this.Display=a;this.Me.className="calendar_visual";this.nextBox=null;this.backBox=null;this.monthBox=null;this.weekNameRow=null;this.dateBlocks=null;this.date=new Date();this.hour=this.date.getHours();this.minute=this.date.getMinutes()-Mod(this.date.getMinutes(),15);this.year=this.date.getFullYear();this.month=this.date.getMonth();this.date=this.date.getDate();this.setMonth=null;this.setYear=null;this.url=null;this.months=Array("January","Feburary","March","April","May","June","July","August","September","October","November","December");this.days=Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");this.dates=Array("1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th","11th","12th","13th","14th","15th","16th","17th","18th","19th","20th","21st","22nd","23rd","24th","25th","26th","27th","28th","29th","30th","31st");this.runOnce=false;this.init()};CalendarVisual.prototype.init=function(){var b=document.createElement("div");b.appendChild(document.createTextNode("<<"));b.id="app.back";b.className="calendarBack";this.nextBox=this.Me.appendChild(b);this.assignCallBack(this.nextBox,"previous");var b=document.createElement("div");b.appendChild(document.createTextNode("loading"));b.id="app.month";b.className="calendarMonth";this.monthBox=this.Me.appendChild(b);var b=document.createElement("div");b.appendChild(document.createTextNode(">>"));b.id="app.forward";b.className="calendarForward";this.backBox=this.Me.appendChild(b);this.assignCallBack(this.backBox,"forward");var a=this.buildEmptyRow(7);a.id="app.weekName";a.className="weekNames";this.Me.appendChild(a);this.weekNameRow=this.Me.appendChild(a);var b=document.createElement("div");b.id="app.dates";this.dateBlocks=this.Me.appendChild(b);var b=document.createElement("div");b.id="app.clear";b.className="cssClear";this.Me.appendChild(b);this.drawWeekNames();this.drawMonth()};CalendarVisual.prototype.setCalendarDate=function(c){var b=Number(c.substring(0,4));var d=Number(c.substring(5,7));var a=Number(c.substring(8,10));this.year=b;this.month=d-1;this.date=a;this.setMonth=this.month;this.setYear=this.year;this.runOnce=false;this.drawMonth()};CalendarVisual.prototype.drawMonth=function(){try{resetDropCalendarTimeout()}catch(h){}this.dateBlocks.innerHTML="";this.monthBox.innerHTML=this.months[this.month]+" "+this.year;var g=new Date(this.year,this.month,1,0,0,0);g=g.getDay();var f=this.getDaysInMonth(this.year,this.month);var d=0;while(d<f){var c=this.dateBlocks.appendChild(document.createElement("ul"));var b=0;while(b<7){var a=c.appendChild(document.createElement("li"));if(b>=g&&d<f){g=0;a.appendChild(document.createTextNode(d+1));a.id="day_"+(d+1);var j=new Date();this.assignCallBack(a,"date");d++}else{a.appendChild(document.createTextNode(""))}b++}}this.updateHighlights();this.updateDisplay()};CalendarVisual.prototype.updateHighlights=function(){var a=this.dateBlocks.getElementsByTagName("li");for(var b in a){var c=new Date();if(a[b]){a[b].className="";if(a[b].innerHTML){if(a[b].innerHTML==this.date&&this.setMonth==this.month&&this.setYear==this.year){a[b].className="selected"}else{if(a[b].innerHTML==c.getDate()&&this.month==c.getMonth()&&this.year==c.getFullYear()){a[b].className="today"}}}}}};CalendarVisual.prototype.updateDisplay=function(){var a=new Date(this.year,this.month,this.date,this.hour,this.minute,0);if(!this.runOnce){this.Display.innerHTML=this.days[a.getDay()]+", "+this.dates[this.date-1]+" "+this.months[this.month];this.runOnce=true}};CalendarVisual.prototype.dateHasBeenClicked=function(h){var b=h.id.split("_")[1];this.date=b;this.setMonth=this.month;this.setYear=this.year;this.updateHighlights();var c=String(this.year).length<4?"20"+String(this.year):String(this.year);var i=String(this.month+1).length<2?"0"+String(this.month+1):String(this.month+1);var b=String(this.date).length<2?"0"+String(this.date):String(this.date);var a=String(this.hour).length<2?"0"+String(this.hour):String(this.hour);var d=String(this.minute).length<2?"0"+String(this.minute):String(this.minute);var g=c+"-"+i+"-"+b;try{dropCalendarDateClicked(g)}catch(f){}};CalendarVisual.prototype.assignCallBack=function(a,b){switch(b){case"date":a.calendar=this;a.onclick=function(){this.calendar.dateHasBeenClicked(this)};break;case"forward":a.calendar=this;a.onclick=function(){this.calendar.nextMonth(this)};break;case"previous":a.calendar=this;a.onclick=function(){this.calendar.previousMonth(this)};break}};CalendarVisual.prototype.nextMonth=function(){this.month++;if(this.month<0){this.month=11;this.year--}else{if(this.month>11){this.month=0;this.year++}}this.drawMonth()};CalendarVisual.prototype.previousMonth=function(){this.month--;if(this.month<0){this.month=11;this.year--}else{if(this.month>11){this.month=0;this.year++}}var b=new Date(this.year,this.month);var a=new Date();this.drawMonth()};CalendarVisual.prototype.drawWeekNames=function(){var a=this.weekNameRow.getElementsByTagName("li");a[0].appendChild(document.createTextNode("S"));a[1].appendChild(document.createTextNode("M"));a[2].appendChild(document.createTextNode("T"));a[3].appendChild(document.createTextNode("W"));a[4].appendChild(document.createTextNode("T"));a[5].appendChild(document.createTextNode("F"));a[6].appendChild(document.createTextNode("S"))};CalendarVisual.prototype.getDaysInMonth=function(a,b){return 32-new Date(a,b,32).getDate()};CalendarVisual.prototype.buildEmptyRow=function(a){var b=document.createElement("ul");while(a>0){b.appendChild(document.createElement("li"));a--}return b};
