
if(!QZONE){QZONE={};}
if(!QZONE.widget){QZONE.widget={};}
$=$?$:function(){return document.getElementById};QZONE.widget.calendar={MODE:{NORMAL:0,SELECT_YEAR:1},_nCount:0,_monthDaysNum:[31,28,31,30,31,30,31,31,30,31,30,31],create:function(container,mode){return new QZONE.widget.calendarObject(container,mode);},bind:function(target,mode,fixX,fixY){var c=document.createElement("div");c.style.position="absolute";document.getElementsByTagName("body")[0].appendChild(c);var calendar=QZONE.widget.calendar.create(c,mode);calendar._target=target;if(target.tagName.toLowerCase()=="input"&&target.type.toLowerCase()=="text"){target.readOnly=true;calendar.onDateSelected=function(d){calendar.hide();target.value=calendar.outPut(d);};}
QZONE.event.addEvent(target,"click",function(evt){if(calendar._self.style.display!=""){calendar.render();target.select();}});QZONE.event.addEvent(target,"focus",function(evt){if(calendar._self.style.display!=""){QZONE.widget.calendar._setPosition(calendar,fixX,fixY);calendar.render();target.select();}});QZONE.event.addEvent(document.body,"click",function(evt){if(!QZONE.dom.isAncestor(calendar._self,QZONE.event.getTarget(evt))&&QZONE.event.getTarget(evt)!=target){calendar.hide();}});calendar.hide();return calendar;},_setPosition:function(calendar,fixX,fixY){var p=QZONE.dom.getPosition(calendar._target);var s=QZONE.dom.getSize(calendar._target);if(!fixX){calendar._self.style.left=p.left+"px";calendar._self.style.top=(p.top+s[1]+10)+"px";}else{calendar._self.style.left=fixX+"px";calendar._self.style.top=fixY+"px";}},isLeapYear:function(year){if(year%100==0){if(year%400==0){return true;}}
else{if(year%4==0){return true;}}
return false;},calDate:function(date,mouseX,startX){var m=Math.floor((mouseX-startX)/3);var d=new Date();d.setFullYear(date.getFullYear());d.setMonth(date.getMonth());if(m!=0){d.setMonth(d.getMonth()+m);return d;}
return date;}};QZONE.widget.calendar._html='<div id="calendar__ID__" class="qz_calendar"><div class="qz_calendar_main" id="calendar_main__ID__"><div id="cal_select_div__ID__" class="qz_calendar_select"><select id="cal_year__ID__"></select>年<select id="cal_month__ID__"></select>月</div><div id="cal_normal_div__ID__" class="qz_calendar_date" style="cursor:w-resize"><button id="cal_prev_month__ID__" title="上一月">&#9668;</button><span id="cal_date_viewer__ID__" class="qz_calendar_selection">0000年00月</span><button id="cal_next_month__ID__" title="下一月">&#9658;</button></div><table id="cal_table__ID__" style="width:100%"><caption>日历卡</caption><colgroup><col style="width:20px;"/><col style="width:20px;"/><col style="width:20px;"/><col style="width:20px;"/><col style="width:20px;"/><col style="width:20px;"/><col style="width:20px;"/></colgroup><thead><tr><th class="weekend">日</th><th>一</th><th> 二</th><th>三</th><th>四</th><th>五</th><th class="weekend">六</th></tr></thead><tbody></tbody></table></div><iframe id="calendar_cover__ID__">/iframe></div>';QZONE.widget.calendarObject=function(container,mode){var ns=QZONE.widget.calendar;this.id=ns._nCount++;this._target=null;this._html=ns._html.replace(/__ID__/g,this.id);var _c=container;_c.innerHTML=this._html;this.displayDate=new Date();this.selectedDate=new Date();this.connectString="";this.yearPattern="年";this.monthPattern="月";this.datePattern="日";this.selected=false;this._self=_c;this._dateViewer=$("cal_date_viewer"+this.id);this.mode=mode?mode:0;this.onDateSelected=null;this._dragSetEnabel=false;this._startX=0;this._resultDate=new Date();this.init();};QZONE.widget.calendarObject.prototype.init=function(date){if(this.mode==QZONE.widget.calendar.MODE.NORMAL){$("cal_normal_div"+this.id).style.display="";$("cal_select_div"+this.id).style.display="none";this._initNormal();}else{$("cal_normal_div"+this.id).style.display="none";$("cal_select_div"+this.id).style.display="";this._initSelect();}
this.displayDate=date?date:new Date();this._setViewDate(this.displayDate);};QZONE.widget.calendarObject.prototype.render=function(){this._self.style.display="";};QZONE.widget.calendarObject.prototype.hide=function(){this._self.style.display="none";};QZONE.widget.calendarObject.prototype.prevMonth=function(){if(this.displayDate.getMonth()>0){this.displayDate.setMonth(this.displayDate.getMonth()-1);}else{this.displayDate.setFullYear(this.displayDate.getFullYear()-1);this.displayDate.setMonth(11);}
this._setViewDate(this.displayDate);};QZONE.widget.calendarObject.prototype.nextMonth=function(){if(this.displayDate.getMonth()<11){this.displayDate.setMonth(this.displayDate.getMonth()+1);}else{this.displayDate.setFullYear(this.displayDate.getFullYear()+1);this.displayDate.setMonth(0);}
this._setViewDate(this.displayDate);};QZONE.widget.calendarObject.prototype._setViewDate=function(d){this.displayDate=d?d:new Date();var num_m=QZONE.widget.calendar._monthDaysNum[d.getMonth()];if(d.getMonth()==1){num_m=QZONE.widget.calendar.isLeapYear(d.getFullYear())?29:28;}
var _d_0=new Date(d.getFullYear(),d.getMonth(),1).getDay();if(this.selected&&(this.selectedDate.getFullYear()==this.displayDate.getFullYear()&&this.selectedDate.getMonth()==this.displayDate.getMonth())){this._renderCalList(num_m,_d_0,this.selectedDate.getDate());}
else{this._renderCalList(num_m,_d_0);}
$("cal_date_viewer"+this.id).innerHTML=this.displayDate.getFullYear()+"年"+
((this.displayDate.getMonth()+1>9)?this.displayDate.getMonth()+1:"0"+(this.displayDate.getMonth()+1))+"月";};QZONE.widget.calendarObject.prototype.setDate=function(d){this.selected=true;this.selectedDate=d;this._setViewDate(d);var y_slt=$("cal_year"+this.id);var m_slt=$("cal_month"+this.id);y_slt.selectedIndex=Math.abs(d.getFullYear()-new Date().getFullYear());m_slt.selectedIndex=d.getMonth();};QZONE.widget.calendarObject.prototype.getDate=function(){return this.selected?this.selectedDate:null;};QZONE.widget.calendarObject.prototype.clear=function(){var t=$("cal_table"+this.id);for(var i=0;i<t.tBodies[0].rows.length;i++){for(var j=0;j<t.tBodies[0].rows[i].cells.length;j++){var c=t.tBodies[0].rows[i].cells[j]
c.innerHTML="";c.style.backgroundColor="";c.style.color="";}}
return true;};QZONE.widget.calendarObject.prototype._renderCalList=function(day_num,start_day,sDate){var _selfObj=this;this.clear();var t=$("cal_table"+this.id);for(var i=0;i<42;++i){if(!t.tBodies[0].rows[Math.floor(i/7)]&&i%7==0){t.tBodies[0].insertRow(Math.floor(i/7));}
if(!t.tBodies[0].rows[Math.floor(i/7)].cells[i%7]){t.tBodies[0].rows[Math.floor(i/7)].insertCell(i%7);QZONE.event.addEvent(t.tBodies[0].rows[Math.floor(i/7)].cells[i%7],"click",function(evt){var t=QZONE.event.getTarget(evt);_selfObj.selected=true;_selfObj._clearStyle();t.style.backgroundColor="#666666";t.style.color="#FFFFFF";_selfObj.selectedDate.setFullYear(_selfObj.displayDate.getFullYear());_selfObj.selectedDate.setMonth(_selfObj.displayDate.getMonth());_selfObj.selectedDate.setDate(parseInt(t.innerHTML,10));if(typeof(_selfObj.onDateSelected)=="function"){_selfObj.onDateSelected(_selfObj.selectedDate);}});}
if(i>=start_day&&i<day_num+start_day){t.tBodies[0].rows[Math.floor(i/7)].cells[i%7].innerHTML=(i-start_day+1);if(this.selected&&sDate==(i-start_day+1)){t.tBodies[0].rows[Math.floor(i/7)].cells[i%7].style.backgroundColor="#666666";t.tBodies[0].rows[Math.floor(i/7)].cells[i%7].style.color="#FFFFFF";}
t.tBodies[0].rows[Math.floor(i/7)].cells[i%7].style.visibility="";}else{t.tBodies[0].rows[Math.floor(i/7)].cells[i%7].style.visibility="hidden";}}
var cm=$("calendar_main"+this.id);cm.style.height="auto";$("calendar_cover"+this.id).height=QZONE.dom.getSize(cm)[1];return true;};QZONE.widget.calendarObject.prototype._clearStyle=function(){var t=$("cal_table"+this.id);for(var i=0;i<t.tBodies[0].rows.length;++i){for(var j=0;j<t.tBodies[0].rows[i].cells.length;++j){t.tBodies[0].rows[i].cells[j].style.backgroundColor="";t.tBodies[0].rows[i].cells[j].style.color="";}}};QZONE.widget.calendarObject.prototype._initNormal=function(){var _self=this;QZONE.event.addEvent($("cal_prev_month"+this.id),"mousedown",function(evt){_self.prevMonth();});QZONE.event.addEvent($("cal_next_month"+this.id),"mousedown",function(evt){_self.nextMonth();});QZONE.event.addEvent($("cal_normal_div"+this.id),"mousedown",function(evt){_self._startX=QZONE.event.mouseX(evt);_self._resultDate.setFullYear(_self.displayDate.getFullYear());_self._resultDate.setMonth(_self.displayDate.getMonth());_self._dragSetEnabel=true;QZONE.event.preventDefault();});QZONE.event.addEvent(document,"mousemove",function(evt){if(_self._dragSetEnabel){$("cal_prev_month"+_self.id).style.visibility="hidden";$("cal_next_month"+_self.id).style.visibility="hidden";_self._resultDate=QZONE.widget.calendar.calDate(_self.displayDate,QZONE.event.mouseX(evt),_self._startX);var showTxt=_self._resultDate.getFullYear()+"年"+
((_self._resultDate.getMonth()+1>9)?_self._resultDate.getMonth()+1:"0"+(_self._resultDate.getMonth()+1))+"月";if(showTxt!=_self._dateViewer.innerHTML){if(_self._dateViewer.textContent){_self._dateViewer.textContent=showTxt;}else{_self._dateViewer.innerHTML=showTxt;}}
QZONE.event.preventDefault();}});QZONE.event.addEvent(document,"mouseup",function(evt){if(_self._dragSetEnabel){$("cal_prev_month"+_self.id).style.visibility="";$("cal_next_month"+_self.id).style.visibility="";_self._dragSetEnabel=false;_self._setViewDate(_self._resultDate);}});};QZONE.widget.calendarObject.prototype._initSelect=function(){var _self=this;var y=this.displayDate.getFullYear();var m=this.displayDate.getMonth();var y_slt=$("cal_year"+this.id);var m_slt=$("cal_month"+this.id);for(var i=0;i<150;i++){if(y-i>=1902){var item=new Option(y-i,y-i);y_slt.options.add(item);}else{break;}}
for(var j=0;j<12;j++){var item=new Option(j+1,j);m_slt.options.add(item);}
m_slt.selectedIndex=m;QZONE.event.addEvent(y_slt,"change",function(evt){_self.displayDate.setDate(1);_self.displayDate.setFullYear(y_slt.value);_self._setViewDate(_self.displayDate);_self.selectedDate.setDate(1);_self.selectedDate.setFullYear(y_slt.value);_self.onDateSelected(_self.selectedDate,true);});QZONE.event.addEvent(m_slt,"change",function(evt){_self.displayDate.setDate(1);_self.selectedDate.setDate(1);_self.displayDate.setMonth(m_slt.value);_self.selectedDate.setMonth(m_slt.value);_self._setViewDate(_self.displayDate);_self.onDateSelected(_self.selectedDate,true);});};QZONE.widget.calendarObject.prototype.outPut=function(d){var y_str=d.getFullYear()+this.yearPattern;var m_str=(d.getMonth()+1>9)?d.getMonth()+1:"0"+(d.getMonth()+1);m_str+=this.monthPattern;var d_str=(d.getDate()>9)?d.getDate():"0"+d.getDate();d_str+=this.datePattern;return y_str+this.connectString+m_str+this.connectString+d_str;};