Object.extend(sjcl.widget,{Calendar:function(target,anchor,handler,date){if(date)date=date.replace(/(\d{1,2})\/(\d{1,2})\/(\d{4})/,"$2/$1/$3");this.target=target;this.anchor=anchor;this.handler=handler;this.date=this._curDate=date?new Date(Date.parse(date)):new Date();this.previousImageUrl=sjcl.path.mapThemeLocaleImage("left_bracket.png");this.nextImageUrl=sjcl.path.mapThemeLocaleImage("right_bracket.png");this.left=0;this.top=0;this.useAnchor=true;this.dir="ltr";this.format="%d/%m/%Y";this.showFormat=false;this._guid=sjcl.guid("CAL");switch(g_Language){case"en":case"fr":this._days=['S','M','T','W','T','F','S'];this._months=['January','February','March','April','May','June','July','August','September','October','November','December'];break;case"ar":this._days=['S','M','T','W','T','F','S'];this._months=['كانون ثاني','شباط','آذار','نيسان','أيار','حزيران','تموز','آب','أيلول','تشرين أول','تشرين ثاني','كانون أول'];break;}this._createMenus();},InlineCalendar:function(container,target,anchor,handler,date){this.baseConstructor.call(this,target,anchor,handler,date);this.container=container;}});sjcl.widget.InlineCalendar.inherits(sjcl.widget.Calendar);sjcl.widget.Calendar.extend({show:function(){var left=this.left;var top=this.top;this._build();if(this.anchor&&this.useAnchor){var rc=sjcl.dom.elementRect(this.anchor);left=(this.dir=="ltr")?rc.left:rc.left-this._frame.offsetWidth+rc.width+4;top=rc.bottom+2;}this._frame.style.left=left+"px";this._frame.style.top=top+sjcl.browser.scrollTop()+"px";this._open=true;},close:function(strDate){if(this._open){this._open=false;this._keep=false;sjcl.event.remove(document,"mousedown",this._onDocMouseDown.bindAsEvent(this));sjcl.dom.removeElement(this._frame);this._menus.hideMenus();if(this.target&&strDate)this.target.value=strDate;if(this.handler&&strDate)this.handler(strDate);if(this.onClose)this.onClose();}},_makeId:function(name){return this._guid+"_"+name;},_createMenus:function(){this._menus=new sjcl.widget.MenuBar();var menu=this._menus.append(new sjcl.widget.Menu(this._makeId("DateFormat")));menu.append({caption:this.date.format("%m/%d/%Y"),value:"%m/%d/%Y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%d/%m/%Y"),value:"%d/%m/%Y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%l, %F %d, %Y"),value:"%l, %F %d, %Y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%F %d, %Y"),value:"%F %d, %Y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%m/%d/%y"),value:"%m/%d/%y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%Y-%m-%d"),value:"%Y-%m-%d",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%d-%M-%y"),value:"%d-%M-%y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%m.%d.%Y"),value:"%m.%d.%Y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%d %F, %Y"),value:"%d %F, %Y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%F %Y"),value:"%F %Y",type:sjcl.widget.MenuItemType.Check});menu.append({caption:this.date.format("%M-%y"),value:"%M-%y",type:sjcl.widget.MenuItemType.Check});Object.extend(this._menus,{defaultImageUrl:sjcl.path.mapNeutralImage("null16.png"),checkImageUrl:sjcl.path.mapThemeNeutralImage("mnu_check.png"),onInitPopupMenu:this._onFormatMenuInit.bind(this),onItemClick:this._onFormatMenuClick.bind(this)});},_updateHeader:function(){var month=this._curDate.getMonth();var year=this._curDate.getFullYear();var td=sjcl.dom.getChildByClassName(this._header,"Title");sjcl.dom.clear(td);a=td.appendChild(document.createElement("A"));a.href="javascript: void(0);";a.appendChild(document.createTextNode(this._months[month]));sjcl.event.add(a,"click",this._showMonths.bindAsEvent(this));td.appendChild(document.createTextNode(", "));a=td.appendChild(document.createElement("A"));a.href="javascript: void(0);";a.appendChild(document.createTextNode(year));sjcl.event.add(a,"click",this._showYears.bindAsEvent(this));sjcl.dom.apply(td,function(e){e.unselectable="on";});},_createHeader:function(date){var tbl=document.createElement("TABLE");var bdy=tbl.appendChild(document.createElement("TBODY"));var tr=bdy.appendChild(document.createElement("TR"));var td,a;tbl.className="Header";td=tr.appendChild(document.createElement("TD"));td.className="Button";sjcl.event.add(td,"click",this._onPreviousClick.bindAsEvent(this));img=td.appendChild(document.createElement("IMG"));img.src=this.previousImageUrl;td=tr.appendChild(document.createElement("TD"));td.className="Title";td=tr.appendChild(document.createElement("TD"));td.className="Button";sjcl.event.add(td,"click",this._onNextClick.bindAsEvent(this));img=td.appendChild(document.createElement("IMG"));img.src=this.nextImageUrl;sjcl.dom.apply(tbl,function(e){e.unselectable="on";});this._header=tbl;this._updateHeader();return tbl;},_createBody:function(date){var day=date.getDate();var month=date.getMonth();var year=date.getFullYear();var thisMonth=new Date(year,month,1);var prevMonth=new Date(year,month-1,1);var nextMonth=new Date(year,month+1,1);var firstWeekDay=thisMonth.getDay();var thisMonthDays=Math.floor((nextMonth.getTime()-thisMonth.getTime())/(1000*60*60*24));var prevMonthDays=Math.floor((thisMonth.getTime()-prevMonth.getTime())/(1000*60*60*24));var tbl=document.createElement("TABLE");var bdy=tbl.appendChild(document.createElement("TBODY"));var tr,td;tbl.cellSpacing="0px";tbl.cellPadding="0px";tr=bdy.appendChild(document.createElement("TR"));for(var i=0;i<7;i++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(this._days[i]));td.className="Cell DayHeader";}tr=bdy.appendChild(document.createElement("TR"));var weekDay=0;for(;weekDay<firstWeekDay;weekDay++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(prevMonthDays-firstWeekDay+weekDay+1));td.className="Cell OtherMonthDay";}weekDay=firstWeekDay;for(var i=1;i<=thisMonthDays;i++){weekDay%=7;if((weekDay==0)&&(i!=1))tr=bdy.appendChild(document.createElement("TR"));td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(i));td.className="Cell";if(this.date.equals(new Date(year,month,i)))td.className+=" Today";else sjcl.event.addMouseHoverEvents(td,this._onDayOver.bindAsEvent(this),this._onDayOut.bindAsEvent(this));sjcl.event.add(td,"click",this._onDateClick.bindAsEvent(this));weekDay++;}var i=1;for(;i<7-weekDay+1;i++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(i));td.className="Cell OtherMonthDay";}if(bdy.childNodes.length<7){tr=bdy.appendChild(document.createElement("TR"));for(var j=i;j<i+7;j++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(j));td.className="Cell OtherMonthDay";}}sjcl.dom.apply(tbl,function(e){e.unselectable="on";});return tbl;},_createFooter:function(){var tbl=document.createElement("TABLE");var bdy=tbl.appendChild(document.createElement("TBODY"));var tr=bdy.appendChild(document.createElement("TR"));var td=tr.appendChild(document.createElement("TD"));var a=td.appendChild(document.createElement("A"));tbl.className="Footer";if(this.showFormat)td.style.textAlign=ltr()?"left":"right";a.href="javascript: void(0);";a.appendChild(document.createTextNode(getString("TODAY")));sjcl.event.add(a,"click",this._onTodayClick.bindAsEvent(this));if(this.showFormat){td=tr.appendChild(document.createElement("TD"));td.style.textAlign=ltr()?"right":"left";a=td.appendChild(document.createElement("A"));a.href="javascript: void(0);";a.id=this._makeId("aFormat");a.appendChild(document.createTextNode(this._curDate.format(this.format)));sjcl.event.add(a,"click",this._onFormatClick.bindAsEvent(this));}return tbl;},_updateFormatLink:function(){var a=$(this._makeId("aFormat"));sjcl.dom.clear(a);a.appendChild(document.createTextNode(this._curDate.format(this.format)));},_build:function(){var divFrame=document.createElement("DIV");var divBody=document.createElement("DIV");if(!this._inline){divFrame.className="Calendar";divFrame.style.zIndex=sjcl.zIndex("Popup");sjcl.event.add(document,"mousedown",this._onDocMouseDown.bindAsEvent(this));}else divFrame.className="InlineCalendar";divBody.className="Content";divBody.appendChild(this._createBody(this._curDate));divFrame.appendChild(this._createHeader(this._curDate));divFrame.appendChild(divBody);divFrame.appendChild(this._createFooter());sjcl.dom.apply(divFrame,function(e){e.unselectable="on";});if(!this._inline)document.body.appendChild(divFrame);this._frame=divFrame;this._body=divBody;},_createMonths:function(){var tbl=document.createElement("TABLE");var bdy=tbl.appendChild(document.createElement("TBODY"));var tr,td;for(var i=0;i<12;i++){if(i%2==0)tr=bdy.appendChild(document.createElement("TR"));td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(this._months[i]));sjcl.event.addMouseHoverEvents(td,this._onMonthOver.bindAsEvent(this),this._onMonthOut.bindAsEvent(this));sjcl.event.add(td,"click",this._onMonthClick.bindAsEvent(this));}tbl.className="Months";tbl.cellPadding="0px";tbl.cellSpacing="3px";sjcl.dom.apply(tbl,function(e){e.unselectable="on";});return tbl;},_createYears:function(){var tbl=document.createElement("TABLE");var bdy=tbl.appendChild(document.createElement("TBODY"));var tr,td;var date=new Date();var year=date.getFullYear()-8;for(var i=0;i<18;i++){if(i%3==0)tr=bdy.appendChild(document.createElement("TR"));td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(year+i));sjcl.event.addMouseHoverEvents(td,this._onMonthOver.bindAsEvent(this),this._onMonthOut.bindAsEvent(this));sjcl.event.add(td,"click",this._onYearClick.bindAsEvent(this));}tbl.className="Months";tbl.cellPadding="0px";tbl.cellSpacing="3px";sjcl.dom.apply(tbl,function(e){e.unselectable="on";});return tbl;},_clear:function(){sjcl.dom.removeElement(this._body.firstChild);},_showDays:function(filterIndex){if((filterIndex!=null)&&g_SpecialEffects&&this._body.filters&&this._body.filters.length){var filter=this._body.filters[filterIndex];filter.apply();this._clear();this._body.appendChild(this._createBody(this._curDate));filter.play();}else{this._clear();this._body.appendChild(this._createBody(this._curDate));}this._updateHeader();},_showMonths:function(){if(g_SpecialEffects&&this._body.filters&&(this._body.filters.length>=3)){var filter=this._body.filters[2];filter.apply();this._clear();this._body.appendChild(this._createMonths());filter.play();}else{this._clear();this._body.appendChild(this._createMonths());}},_showYears:function(){if(g_SpecialEffects&&this._body.filters&&(this._body.filters.length>=3)){var filter=this._body.filters[2];filter.apply();this._clear();this._body.appendChild(this._createYears());filter.play();}else{this._clear();this._body.appendChild(this._createYears());}},_onPreviousClick:function(evt){this._curDate=this._curDate.previousMonth();this._showDays(0);},_onNextClick:function(evt){this._curDate=this._curDate.nextMonth();this._showDays(1);},_onTodayClick:function(evt){this.close((new Date()).format(this.format));},_onFormatClick:function(evt){var event=new sjcl.Event(evt);this._keep=true;this._menus.showContextMenu(this._makeId("DateFormat"),event.target,null);},_onFormatMenuInit:function(id){var menu=this._menus.getMenu(id);for(var i=0;i<menu.length();i++){var item=menu.item(i);item.setCheck(item.value==this.format);}},_onFormatMenuClick:function(e){var menu=this._menus.getMenu(e.menuId);var item=menu.item(e.itemId);this.format=item.value;this._updateFormatLink();this._keep=false;},_onDayOver:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");td.className="Cell Hover";},_onDayOut:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");td.className="Cell";},_onMonthOver:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");td.className="Hover";},_onMonthOut:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");td.className="";},_onDateClick:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");this.close((new Date(this._curDate.getFullYear(),this._curDate.getMonth(),parseInt(td.innerHTML))).format(this.format));},_onMonthClick:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");var tr=td.parentNode;var month=tr.rowIndex*2+td.cellIndex;this._curDate=new Date(this._curDate.getFullYear(),month,1);this._showDays(0);},_onYearClick:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");var year=parseInt(td.innerHTML);this._curDate=new Date(year,this._curDate.getMonth(),1);this._showDays(0);},_onDocMouseDown:function(evt){var event=new sjcl.Event(evt);if(this._open&&!this._keep&&!sjcl.dom.containsElement(this.anchor,event.target)&&!sjcl.dom.containsElement(this._frame,event.target)){this.close();}}});sjcl.widget.InlineCalendar.extend({show:function(){},render:function(){this._inline=true;this._build();if(this.container){sjcl.dom.clear(this.container);this.container.appendChild(this._frame);}},_activeDay:function(year,month,day){if(this.dayList){var str=(month<10?"0":"")+month+"/"+(day<10?"0":"")+day+"/"+year;for(var i=0;i<this.dayList.length;i++){if(this.dayList[i][0]==str)return this.dayList[i][1];}}return false;},_createBody:function(date){var day=date.getDate();var month=date.getMonth();var year=date.getFullYear();var thisMonth=new Date(year,month,1);var prevMonth=new Date(year,month-1,1);var nextMonth=new Date(year,month+1,1);var firstWeekDay=thisMonth.getDay();var thisMonthDays=Math.floor((nextMonth.getTime()-thisMonth.getTime())/(1000*60*60*24));var prevMonthDays=Math.floor((thisMonth.getTime()-prevMonth.getTime())/(1000*60*60*24));var tbl=document.createElement("TABLE");var bdy=tbl.appendChild(document.createElement("TBODY"));var tr,td;tbl.cellSpacing="0px";tbl.cellPadding="0px";tr=bdy.appendChild(document.createElement("TR"));for(var i=0;i<7;i++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(this._days[i]));td.className="Cell DayHeader";}tr=bdy.appendChild(document.createElement("TR"));var weekDay=0;for(;weekDay<firstWeekDay;weekDay++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(prevMonthDays-firstWeekDay+weekDay+1));td.className="Cell OtherMonthDay";}weekDay=firstWeekDay;for(var i=1;i<=thisMonthDays;i++){weekDay%=7;if((weekDay==0)&&(i!=1))tr=bdy.appendChild(document.createElement("TR"));td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(i));td.className="Cell";if(this.date.equals(new Date(year,month,i)))td.className+=" Today";if(this.dayList){var posts=this._activeDay(year,month+1,i);if(posts>0){td.style.fontWeight="bold";td.title=posts+" "+this.dayTitle;sjcl.event.addMouseHoverEvents(td,this._onDayOver.bindAsEvent(this),this._onDayOut.bindAsEvent(this));sjcl.event.add(td,"click",this._onDateClick.bindAsEvent(this));}else td.style.color="#666666";}else{sjcl.event.addMouseHoverEvents(td,this._onDayOver.bindAsEvent(this),this._onDayOut.bindAsEvent(this));sjcl.event.add(td,"click",this._onDateClick.bindAsEvent(this));}weekDay++;}var i=1;for(;i<7-weekDay+1;i++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(i));td.className="Cell OtherMonthDay";}if(bdy.childNodes.length<7){tr=bdy.appendChild(document.createElement("TR"));for(var j=i;j<i+7;j++){td=tr.appendChild(document.createElement("TD"));td.appendChild(document.createTextNode(j));td.className="Cell OtherMonthDay";}}sjcl.dom.apply(tbl,function(e){e.unselectable="on";});return tbl;},_onDateClick:function(evt){var event=new sjcl.Event(evt);var td=event.findByTagName("TD");var date=(new Date(this._curDate.getFullYear(),this._curDate.getMonth(),parseInt(td.innerHTML))).format(this.format);if(this.onDateSelect)this.onDateSelect(date);},_onTodayClick:function(evt){var date=(new Date()).format(this.format);if(this.onDateSelect)this.onDateSelect(date);}});
