/**
 *                                                        ____   _____
 *  Dynarch Calendar -- JSCal2, version 1.8               \  /_  /   /
 *  Built at 2010/04/11 12:26 GMT                          \  / /   /
 *                                                          \/ /_  /
 *  (c) Dynarch.com 2009                                     \  / /
 *  All rights reserved.                                       / /
 *  Visit www.dynarch.com/projects/calendar for details        \/
 *
 */
Calendar=(function(){
  function y(at){
    at=at||{};
    
    this.args=at=al(at,{
      animation:!c,
      cont:null,
      bottomBar:true,
      date:true,
      fdow:aq("fdow"),
      min:null,
      max:null,
      reverseWheel:false,
      selection:[],
      selectionType:y.SEL_SINGLE,
      weekNumbers:false,
      align:"Bl/ / /T/r",
      inputField:null,
      trigger:null,
      dateFormat:"%Y-%m-%d",
      opacity:j?1:3,
      titleFormat:"%b %Y",
      showTime:false,
      timePos:"right",
      time:true,
      minuteStep:5,
      disabled:ad,
      checkRange:false,
      dateInfo:ad,
      onChange:ad,
      onSelect:ad,
      onTimeChange:ad,
      onFocus:ad,
      onBlur:ad
    });
    this.handlers={};
    
    var P=this,D=new Date();
    at.min=Y(at.min);
    at.max=Y(at.max);
    if(at.date===true){
      at.date=D
      }
      if(at.time===true){
      at.time=D.getHours()*100+Math.floor(D.getMinutes()/at.minuteStep)*at.minuteStep
      }
      this.date=Y(at.date);
    this.time=at.time;
    this.fdow=at.fdow;
    m("onChange onSelect onTimeChange onFocus onBlur".split(/\s+/),function(av){
      var au=at[av];
      if(!(au instanceof Array)){
        au=[au]
        }
        P.handlers[av]=au
      });
    this.selection=new y.Selection(at.selection,at.selectionType,R,this);
    var ar=K.call(this);
    if(at.cont){
      W(at.cont).appendChild(ar)
      }
      if(at.trigger){
      this.manageFields(at.trigger,at.inputField,at.dateFormat)
      }
    }
  var S=navigator.userAgent,s=/opera/i.test(S),ai=/Konqueror|Safari|KHTML/i.test(S),j=/msie/i.test(S)&&!s&&!(/mac_powerpc/i.test(S)),c=j&&/msie 6/i.test(S),x=/gecko/i.test(S)&&!ai&&!s&&!j,l=y.prototype,q=y.I18N={};
  
  y.SEL_NONE=0;
  y.SEL_SINGLE=1;
  y.SEL_MULTIPLE=2;
  y.SEL_WEEK=3;
  y.dateToInt=V;
  y.intToDate=B;
  y.printDate=ab;
  y.formatString=k;
  y.i18n=aq;
  y.LANG=function(P,D,ar){
  q.__=q[P]={
    name:D,
    data:ar
  }
};

y.setup=function(D){
  return new y(D)
  };
  
l.moveTo=function(aG,aD){
  aG=Y(aG);
  var aC=af(aG,this.date,true),au,az=this.args,aH=az.min&&af(aG,az.min),aI=az.max&&af(aG,az.max);
  if(az.showTime){
    this.setHours(aG.getUTCHours());
    this.setMinutes(aG.getUTCMinutes())
    }
    if(!az.animation){
    aD=false
    }
    ae(aH!=null&&aH<=1,[this.els.navPrevMonth,this.els.navPrevYear],"DynarchCalendar-navDisabled");
  ae(aI!=null&&aI>=-1,[this.els.navNextMonth,this.els.navNextYear],"DynarchCalendar-navDisabled");
  if(aH<-1){
    aG=az.min;
    au=1;
    aC=0
    }
    if(aI>1){
    aG=az.max;
    au=2;
    aC=0
    }
    this.date=aG;
  this.refresh(!!aD);
  this.callHooks("onChange",this,aG,aD);
  if(aD&&!(aC==0&&aD==2)){
    if(this._bodyAnim){
      this._bodyAnim.stop()
      }
      var aw=this.els.body,ax=G("div","DynarchCalendar-animBody-"+U[aC],aw),aF=aw.firstChild,av=am(aF)||0.7,ay=au?Z.brakes:aC==0?Z.shake:Z.accel_ab2,aE=aC*aC>4,ar=aE?aF.offsetTop:aF.offsetLeft,aB=ax.style,aA=aE?aw.offsetHeight:aw.offsetWidth;
    if(aC<0){
      aA+=ar
      }else{
      if(aC>0){
        aA=ar-aA
        }else{
        aA=Math.round(aA/7);
        if(au==2){
          aA=-aA
          }
        }
    }
  if(!au&&aC!=0){
  var P=ax.cloneNode(true),D=P.style,at=2*aA;
  P.appendChild(aF.cloneNode(true));
  D[aE?"marginTop":"marginLeft"]=aA+"px";
  aw.appendChild(P)
  }
  aF.style.visibility="hidden";
ax.innerHTML=ac(this);
  this._bodyAnim=ap({
  onUpdate:v(function(aK,aM){
    var aL=ay(aK);
    if(P){
      var aJ=aM(aL,aA,at)+"px"
      }
      if(au){
      aB[aE?"marginTop":"marginLeft"]=aM(aL,aA,0)+"px"
      }else{
      if(aE||aC==0){
        aB.marginTop=aM(aC==0?ay(aK*aK):aL,0,aA)+"px";
        if(aC!=0){
          D.marginTop=aJ
          }
        }
      if(!aE||aC==0){
      aB.marginLeft=aM(aL,0,aA)+"px";
      if(aC!=0){
        D.marginLeft=aJ
        }
      }
  }
  if(this.args.opacity>2&&P){
  am(P,1-aL);
  am(ax,aL)
  }
},this),
onStop:v(function(aJ){
  aw.innerHTML=ac(this,aG);
  this._bodyAnim=null
  },this)
})
}
this._lastHoverDate=null;
return aH>=-1&&aI<=1
};

l.isDisabled=function(D){
  var P=this.args;
  return(P.min&&af(D,P.min)<0)||(P.max&&af(D,P.max)>0)||P.disabled(D)
  };
  
l.toggleMenu=function(){
  u(this,!this._menuVisible)
  };
  
l.refresh=function(D){
  var P=this.els;
  if(!D){
    P.body.innerHTML=ac(this)
    }
    P.title.innerHTML=F(this);
  P.yearInput.value=this.date.getFullYear()
  };
  
l.redraw=function(){
  var D=this.els;
  this.refresh();
  D.dayNames.innerHTML=h(this);
  D.menu.innerHTML=ak(this);
  if(D.bottomBar){
    D.bottomBar.innerHTML=H(this)
    }
    t(D.topCont,v(function(ar){
    var P=r[ar.className];
    if(P){
      D[P]=ar
      }
      if(ar.className=="DynarchCalendar-menu-year"){
      p(ar,this._focusEvents);
      D.yearInput=ar
      }else{
      if(j){
        ar.setAttribute("unselectable","on")
        }
      }
  },this));
this.setTime(null,true)
};

l.setLanguage=function(D){
  var P=y.setLanguage(D);
  if(P){
    this.fdow=P.data.fdow;
    this.redraw()
    }
  };

y.setLanguage=function(D){
  var P=q[D];
  if(P){
    q.__=P
    }
    return P
  };
  
l.focus=function(){
  try{
    this.els[this._menuVisible?"yearInput":"focusLink"].focus()
    }catch(D){}
  i.call(this)
  };
  
l.blur=function(){
  this.els.focusLink.blur();
  this.els.yearInput.blur();
  z.call(this)
  };
  
l.showAt=function(P,ax,av){
  if(this._showAnim){
    this._showAnim.stop()
    }
    av=av&&this.args.animation;
  var aw=this.els.topCont,ar=this,D=this.els.body.firstChild,au=D.offsetHeight,at=aw.style;
  at.position="absolute";
  at.left=P+"px";
  at.top=ax+"px";
  at.zIndex=10000;
  at.display="";
  if(av){
    D.style.marginTop=-au+"px";
    this.args.opacity>1&&am(aw,0);
    this._showAnim=ap({
      onUpdate:function(ay,az){
        D.style.marginTop=-az(Z.accel_b(ay),au,0)+"px";
        ar.args.opacity>1&&am(aw,ay)
        },
      onStop:function(){
        ar.args.opacity>1&&am(aw,"");
        ar._showAnim=null
        }
      })
  }
};

l.hide=function(){
  var at=this.els.topCont,P=this,D=this.els.body.firstChild,ar=D.offsetHeight,au=J(at).y;
  if(this.args.animation){
    if(this._showAnim){
      this._showAnim.stop()
      }
      this._showAnim=ap({
      onUpdate:function(av,aw){
        P.args.opacity>1&&am(at,1-av);
        D.style.marginTop=-aw(Z.accel_b(av),0,ar)+"px";
        at.style.top=aw(Z.accel_ab(av),au,au-10)+"px"
        },
      onStop:function(){
        at.style.display="none";
        D.style.marginTop="";
        P.args.opacity>1&&am(at,"");
        P._showAnim=null
        }
      })
  }else{
  at.style.display="none"
  }
  this.inputField=null
};

l.popup=function(D,at){
  D=W(D);
  if(!at){
    at=this.args.align
    }
    at=at.split(/\x2f/);
  var ar=J(D),aw=this.els.topCont,ay=aw.style,au,ax=X();
  ay.visibility="hidden";
  ay.display="";
  this.showAt(0,0);
  document.body.appendChild(aw);
  au={
    x:aw.offsetWidth,
    y:aw.offsetHeight
    };
    
  function P(az){
    var aA={
      x:av.x,
      y:av.y
      };
      
    if(!az){
      return aA
      }
      if(/B/.test(az)){
      aA.y+=D.offsetHeight
      }
      if(/b/.test(az)){
      aA.y+=D.offsetHeight-au.y
      }
      if(/T/.test(az)){
      aA.y-=au.y
      }
      if(/l/.test(az)){
      aA.x-=au.x-D.offsetWidth
      }
      if(/L/.test(az)){
      aA.x-=au.x
      }
      if(/R/.test(az)){
      aA.x+=D.offsetWidth
      }
      if(/c/i.test(az)){
      aA.x+=(D.offsetWidth-au.x)/2
      }
      if(/m/i.test(az)){
      aA.y+=(D.offsetHeight-au.y)/2
      }
      return aA
    }
    var av=ar;
  av=P(at[0]);
  if(av.y<ax.y){
    av.y=ar.y;
    av=P(at[1])
    }
    if(av.x+au.x>ax.x+ax.w){
    av.x=ar.x;
    av=P(at[2])
    }
    if(av.y+au.y>ax.y+ax.h){
    av.y=ar.y;
    av=P(at[3])
    }
    if(av.x<ax.x){
    av.x=ar.x;
    av=P(at[4])
    }
    this.showAt(av.x,av.y,true);
  ay.visibility="";
  this.focus()
  };
  
l.manageFields=function(ar,P,D){
  P=W(P);
  p(W(ar),"click",v(function(){
    this.inputField=P;
    this.dateFormat=D;
    if(this.selection.type==y.SEL_SINGLE){
      var aw,av,au,at;
      aw=/input|textarea/i.test(P.tagName)?P.value:(P.innerText||P.textContent);
      if(aw){
        av=/(^|[^%])%[bBmo]/.exec(D);
        au=/(^|[^%])%[de]/.exec(D);
        if(av&&au){
          at=av.index<au.index
          }
          aw=Calendar.parseDate(aw,at);
        if(aw){
          this.selection.set(aw,false,true);
          this.moveTo(aw)
          }
        }
    }
  this.popup(ar)
    },this))
};

l.callHooks=function(ar){
  var at=b(arguments,1),D=this.handlers[ar],P=0;
  for(;P<D.length;++P){
    D[P].apply(this,at)
    }
  };
  
l.addEventListener=function(P,D){
  this.handlers[P].push(D)
  };
  
l.removeEventListener=function(at,ar){
  var D=this.handlers[at],P=D.length;
  while(--P>=0){
    if(D[P]===ar){
      D.splice(P,1)
      }
    }
};

l.getTime=function(){
  return this.time
  };
  
l.setTime=function(au,P){
  if(this.args.showTime){
    au=this.time=au!=null?au:this.time;
    var ar=this.getHours(),D=this.getMinutes(),at=ar<12;
    if(this.args.showTime==12){
      if(ar==0){
        ar=12
        }
        if(ar>12){
        ar-=12
        }
        this.els.timeAM.innerHTML=aq(at?"AM":"PM")
      }
      if(ar<10){
      ar="0"+ar
      }
      if(D<10){
      D="0"+D
      }
      this.els.timeHour.innerHTML=ar;
    this.els.timeMinute.innerHTML=D;
    if(!P){
      this.callHooks("onTimeChange",this,au)
      }
    }
};

l.getHours=function(){
  return Math.floor(this.time/100)
  };
  
l.getMinutes=function(){
  return this.time%100
  };
  
l.setHours=function(D){
  if(D<0){
    D+=24
    }
    this.setTime(100*(D%24)+this.time%100)
  };
  
l.setMinutes=function(D){
  if(D<0){
    D+=60
    }
    this.setTime(100*this.getHours()+(D%60))
  };
  
l._getInputYear=function(){
  var D=parseInt(this.els.yearInput.value,10);
  if(isNaN(D)){
    D=this.date.getFullYear()
    }
    return D
  };
  
l._showTooltip=function(D){
  var P="",at,ar=this.els.tooltip;
  if(D){
    D=B(D);
    at=this.args.dateInfo(D);
    if(at&&at.tooltip){
      P="<div class='DynarchCalendar-tooltipCont'>"+ab(D,at.tooltip)+"</div>"
      }
    }
  ar.innerHTML=P
};

var ah=" align='center' cellspacing='0' cellpadding='0'";
function h(D){
  var ar=["<table",ah,"><tr>"],P=0;
  if(D.args.weekNumbers){
    ar.push("<td><div class='DynarchCalendar-weekNumber'>",aq("wk"),"</div></td>")
    }while(P<7){
    var at=(P+++D.fdow)%7;
    ar.push("<td><div",aq("weekend").indexOf(at)>=0?" class='DynarchCalendar-weekend'>":">",aq("sdn")[at],"</div></td>")
    }
    ar.push("</tr></table>");
  return ar.join("")
  }
  function ac(aw,aG,aD){
  aG=aG||aw.date;
  aD=aD||aw.fdow;
  aG=new Date(aG.getFullYear(),aG.getMonth(),aG.getDate(),12,0,0,0);
  var aI=aG.getMonth(),av=[],aA=0,D=aw.args.weekNumbers;
  aG.setDate(1);
  var az=(aG.getDay()-aD)%7;
  if(az<0){
    az+=7
    }
    aG.setDate(-az);
  aG.setDate(aG.getDate()+1);
  var aE=new Date(),at=aE.getDate(),P=aE.getMonth(),aJ=aE.getFullYear();
  av[aA++]="<table class='DynarchCalendar-bodyTable'"+ah+">";
  for(var aC=0;aC<6;++aC){
    av[aA++]="<tr class='DynarchCalendar-week";
    if(aC==0){
      av[aA++]=" DynarchCalendar-first-row"
      }
      if(aC==5){
      av[aA++]=" DynarchCalendar-last-row"
      }
      av[aA++]="'>";
    if(D){
      av[aA++]="<td class='DynarchCalendar-first-col'><div class='DynarchCalendar-weekNumber'>"+a(aG)+"</div></td>"
      }
      for(var aB=0;aB<7;++aB){
      var aF=aG.getDate(),ay=aG.getMonth(),au=aG.getFullYear(),ar=10000*au+100*(ay+1)+aF,aH=aw.selection.isSelected(ar),ax=aw.isDisabled(aG);
      av[aA++]="<td class='";
      if(aB==0&&!D){
        av[aA++]=" DynarchCalendar-first-col"
        }
        if(aB==0&&aC==0){
        aw._firstDateVisible=ar
        }
        if(aB==6){
        av[aA++]=" DynarchCalendar-last-col";
        if(aC==5){
          aw._lastDateVisible=ar
          }
        }
      if(aH){
      av[aA++]=" DynarchCalendar-td-selected"
      }
      av[aA++]="'><div dyc-type='date' unselectable='on' dyc-date='"+ar+"' ";
    if(ax){
      av[aA++]="disabled='1' "
      }
      av[aA++]="class='DynarchCalendar-day";
    if(aq("weekend").indexOf(aG.getDay())>=0){
      av[aA++]=" DynarchCalendar-weekend"
      }
      if(ay!=aI){
      av[aA++]=" DynarchCalendar-day-othermonth"
      }
      if(aF==at&&ay==P&&au==aJ){
      av[aA++]=" DynarchCalendar-day-today"
      }
      if(ax){
      av[aA++]=" DynarchCalendar-day-disabled"
      }
      if(aH){
      av[aA++]=" DynarchCalendar-day-selected"
      }
      ax=aw.args.dateInfo(aG);
      if(ax&&ax.klass){
      av[aA++]=" "+ax.klass
      }
      av[aA++]="'>"+aF+"</div></td>";
    aG=new Date(au,ay,aF+1,12,0,0,0)
      }
      av[aA++]="</tr>"
  }
  av[aA++]="</table>";
return av.join("")
}
function n(D){
  var P=["<table class='DynarchCalendar-topCont'",ah,"><tr><td><div class='DynarchCalendar'>",!j?"<button class='DynarchCalendar-focusLink'></button>":"<a class='DynarchCalendar-focusLink' href='#'></a>","<div class='DynarchCalendar-topBar'><div dyc-type='nav' dyc-btn='-Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevYear'><div></div></div><div dyc-type='nav' dyc-btn='+Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextYear'><div></div></div><div dyc-type='nav' dyc-btn='-M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevMonth'><div></div></div><div dyc-type='nav' dyc-btn='+M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextMonth'><div></div></div><table class='DynarchCalendar-titleCont'",ah,"><tr><td><div dyc-type='title' dyc-btn='menu' dyc-cls='hover-title,pressed-title' class='DynarchCalendar-title'>",F(D),"</div></td></tr></table><div class='DynarchCalendar-dayNames'>",h(D),"</div></div><div class='DynarchCalendar-body'></div>"];
  if(D.args.bottomBar||D.args.showTime){
    P.push("<div class='DynarchCalendar-bottomBar'>",H(D),"</div>")
    }
    P.push("<div class='DynarchCalendar-menu' style='display: none'>",ak(D),"</div><div class='DynarchCalendar-tooltip'></div></div></td></tr></table>");
  return P.join("")
  }
  function F(D){
  return"<div unselectable='on'>"+ab(D.date,D.args.titleFormat)+"</div>"
  }
  function ak(P){
  var au=["<table height='100%'",ah,"><tr><td><table style='margin-top: 1.5em'",ah,"><tr><td colspan='3'><input dyc-btn='year' class='DynarchCalendar-menu-year' size='6' value='",P.date.getFullYear(),"' /></td></tr><tr><td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='today'>",aq("goToday"),"</div></td></tr></table><p class='DynarchCalendar-menu-sep'>&nbsp;</p><table class='DynarchCalendar-menu-mtable'",ah,">"],av=aq("smn"),at=0,D=au.length,ar;
  while(at<12){
    au[D++]="<tr>";
    for(ar=4;--ar>0;){
      au[D++]="<td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='m"+at+"' class='DynarchCalendar-menu-month'>"+av[at++]+"</div></td>"
      }
      au[D++]="</tr>"
    }
    au[D++]="</table></td></tr></table>";
  return au.join("")
  }
  function w(D,P){
  P.push("<table class='DynarchCalendar-time'"+ah+"><tr><td rowspan='2'><div dyc-type='time-hour' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-hour'></div></td><td dyc-type='time-hour+' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-up'></td><td rowspan='2' class='DynarchCalendar-time-sep'></td><td rowspan='2'><div dyc-type='time-min' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-minute'></div></td><td dyc-type='time-min+' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-up'></td>");
  if(D.args.showTime==12){
    P.push("<td rowspan='2' class='DynarchCalendar-time-sep'></td><td rowspan='2'><div class='DynarchCalendar-time-am' dyc-type='time-am' dyc-cls='hover-time,pressed-time'></div></td>")
    }
    P.push("</tr><tr><td dyc-type='time-hour-' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-down'></td><td dyc-type='time-min-' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-down'></td></tr></table>")
  }
  function H(D){
  var ar=[],P=D.args;
  ar.push("<table",ah," style='width:100%'><tr>");
  function at(){
    if(P.showTime){
      ar.push("<td>");
      w(D,ar);
      ar.push("</td>")
      }
    }
  if(P.timePos=="left"){
  at()
  }
  if(P.bottomBar){
  ar.push("<td>");
  ar.push("<table",ah,"><tr><td><div dyc-btn='today' dyc-cls='hover-bottomBar-today,pressed-bottomBar-today' dyc-type='bottomBar-today' class='DynarchCalendar-bottomBar-today'>",aq("today"),"</div></td></tr></table>");
  ar.push("</td>")
  }
  if(P.timePos=="right"){
  at()
  }
  ar.push("</tr></table>");
return ar.join("")
}
var r={
  "DynarchCalendar-topCont":"topCont",
  "DynarchCalendar-focusLink":"focusLink",
  DynarchCalendar:"main",
  "DynarchCalendar-topBar":"topBar",
  "DynarchCalendar-title":"title",
  "DynarchCalendar-dayNames":"dayNames",
  "DynarchCalendar-body":"body",
  "DynarchCalendar-menu":"menu",
  "DynarchCalendar-menu-year":"yearInput",
  "DynarchCalendar-bottomBar":"bottomBar",
  "DynarchCalendar-tooltip":"tooltip",
  "DynarchCalendar-time-hour":"timeHour",
  "DynarchCalendar-time-minute":"timeMinute",
  "DynarchCalendar-time-am":"timeAM",
  "DynarchCalendar-navBtn DynarchCalendar-prevYear":"navPrevYear",
  "DynarchCalendar-navBtn DynarchCalendar-nextYear":"navNextYear",
  "DynarchCalendar-navBtn DynarchCalendar-prevMonth":"navPrevMonth",
  "DynarchCalendar-navBtn DynarchCalendar-nextMonth":"navNextMonth"
};

function K(){
  var ar=G("div"),P=this.els={},D={
    mousedown:v(I,this,true),
    mouseup:v(I,this,false),
    mouseover:v(T,this,true),
    mouseout:v(T,this,false),
    keypress:v(L,this)
    };
    
  D[x?"DOMMouseScroll":"mousewheel"]=v(E,this);
  if(j){
    D.dblclick=D.mousedown;
    D.keydown=D.keypress
    }
    ar.innerHTML=n(this);
  t(ar.firstChild,function(au){
    var at=r[au.className];
    if(at){
      P[at]=au
      }
      if(j){
      au.setAttribute("unselectable","on")
      }
    });
p(P.main,D);
p([P.focusLink,P.yearInput],this._focusEvents={
  focus:v(i,this),
  blur:v(e,this)
  });
this.moveTo(this.date,false);
this.setTime(null,true);
return P.topCont
}
function i(){
  if(this._bluringTimeout){
    clearTimeout(this._bluringTimeout)
    }
    this.focused=true;
  M(this.els.main,"DynarchCalendar-focused");
  this.callHooks("onFocus",this)
  }
  function z(){
  this.focused=false;
  aj(this.els.main,"DynarchCalendar-focused");
  if(this._menuVisible){
    u(this,false)
    }
    if(!this.args.cont){
    this.hide()
    }
    this.callHooks("onBlur",this)
  }
  function e(){
  this._bluringTimeout=setTimeout(v(z,this),50)
  }
  function N(D){
  switch(D){
    case"time-hour+":
      this.setHours(this.getHours()+1);
      break;
    case"time-hour-":
      this.setHours(this.getHours()-1);
      break;
    case"time-min+":
      this.setMinutes(this.getMinutes()+this.args.minuteStep);
      break;
    case"time-min-":
      this.setMinutes(this.getMinutes()-this.args.minuteStep);
      break;
    default:
      return
      }
    }
var U={
  "-3":"backYear",
  "-2":"back",
  "0":"now",
  "2":"fwd",
  "3":"fwdYear"
};

function aa(P,at,D){
  if(this._bodyAnim){
    this._bodyAnim.stop()
    }
    var ar;
  if(at!=0){
    ar=new Date(P.date);
    ar.setDate(1);
    switch(at){
      case"-Y":case -2:
        ar.setFullYear(ar.getFullYear()-1);
        break;
      case"+Y":case 2:
        ar.setFullYear(ar.getFullYear()+1);
        break;
      case"-M":case -1:
        ar.setMonth(ar.getMonth()-1);
        break;
      case"+M":case 1:
        ar.setMonth(ar.getMonth()+1);
        break
        }
      }else{
  ar=new Date()
  }
  return P.moveTo(ar,!D)
}
function u(ar,P){
  ar._menuVisible=P;
  ae(P,ar.els.title,"DynarchCalendar-pressed-title");
  var at=ar.els.menu;
  if(c){
    at.style.height=ar.els.main.offsetHeight+"px"
    }
    if(!ar.args.animation){
    O(at,P);
    if(ar.focused){
      ar.focus()
      }
    }else{
  if(ar._menuAnim){
    ar._menuAnim.stop()
    }
    var D=ar.els.main.offsetHeight;
  if(c){
    at.style.width=ar.els.topBar.offsetWidth+"px"
    }
    if(P){
    at.firstChild.style.marginTop=-D+"px";
    ar.args.opacity>0&&am(at,0);
    O(at,true)
    }
    ar._menuAnim=ap({
    onUpdate:function(au,av){
      at.firstChild.style.marginTop=av(Z.accel_b(au),-D,0,!P)+"px";
      ar.args.opacity>0&&am(at,av(Z.accel_b(au),0,0.85,!P))
      },
    onStop:function(){
      ar.args.opacity>0&&am(at,0.85);
      at.firstChild.style.marginTop="";
      ar._menuAnim=null;
      if(!P){
        O(at,false);
        if(ar.focused){
          ar.focus()
          }
        }
    }
  })
}
}
function I(az,ay){
  ay=ay||window.event;
  var au=o(ay);
  if(au&&!au.getAttribute("disabled")){
    var D=au.getAttribute("dyc-btn"),ax=au.getAttribute("dyc-type"),av=au.getAttribute("dyc-date"),at=this.selection,ar,P={
      mouseover:an,
      mousemove:an,
      mouseup:function(aC){
        var aB=au.getAttribute("dyc-cls");
        if(aB){
          aj(au,ao(aB,1))
          }
          clearTimeout(ar);
        d(document,P,true);
        P=null
        }
      };
    
  if(az){
    setTimeout(v(this.focus,this),1);
    var aA=au.getAttribute("dyc-cls");
    if(aA){
      M(au,ao(aA,1))
      }
      if("menu"==D){
      this.toggleMenu()
      }else{
      if(au&&/^[+-][MY]$/.test(D)){
        if(aa(this,D)){
          var aw=v(function(){
            if(aa(this,D,true)){
              ar=setTimeout(aw,40)
              }else{
              P.mouseup();
              aa(this,D)
              }
            },this);
        ar=setTimeout(aw,350);
        p(document,P,true)
        }else{
        P.mouseup()
        }
      }else{
    if("year"==D){
      this.els.yearInput.focus();
      this.els.yearInput.select()
      }else{
      if(ax=="time-am"){
        p(document,P,true)
        }else{
        if(/^time/.test(ax)){
          var aw=v(function(aB){
            N.call(this,aB);
            ar=setTimeout(aw,100)
            },this,ax);
          N.call(this,ax);
          ar=setTimeout(aw,350);
          p(document,P,true)
          }else{
          if(av&&at.type){
            if(at.type==y.SEL_MULTIPLE){
              if(ay.shiftKey&&this._selRangeStart){
                at.selectRange(this._selRangeStart,av)
                }else{
                if(!ay.ctrlKey&&!at.isSelected(av)){
                  at.clear(true)
                  }
                  at.set(av,true);
                this._selRangeStart=av
                }
              }else{
            at.set(av);
            this.moveTo(B(av),2)
            }
            au=this._getDateDiv(av);
          T.call(this,true,{
            target:au
          })
          }
          p(document,P,true)
        }
      }
  }
}
}
if(j&&P&&/dbl/i.test(ay.type)){
  P.mouseup()
  }
  if(/^(DynarchCalendar-(topBar|bottomBar|weekend|weekNumber|menu(-sep)?))?$/.test(au.className)&&!this.args.cont){
  P.mousemove=v(g,this);
  this._mouseDiff=f(ay,J(this.els.topCont));
  p(document,P,true)
  }
}else{
  if("today"==D){
    if(!this._menuVisible&&at.type==y.SEL_SINGLE){
      at.set(new Date())
      }
      this.moveTo(new Date(),true);
    u(this,false)
    }else{
    if(/^m([0-9]+)/.test(D)){
      var av=new Date(this.date);
      av.setDate(1);
      av.setMonth(RegExp.$1);
      av.setFullYear(this._getInputYear());
      this.moveTo(av,true);
      u(this,false)
      }else{
      if(ax=="time-am"){
        this.setHours(this.getHours()+12)
        }
      }
  }
}
if(!j){
  an(ay)
  }
}
}
function g(P){
  P=P||window.event;
  var D=this.els.topCont.style,ar=f(P,this._mouseDiff);
  D.left=ar.x+"px";
  D.top=ar.y+"px"
  }
  function o(P){
  var D=P.target||P.srcElement,ar=D;
  while(D&&D.getAttribute&&!D.getAttribute("dyc-type")){
    D=D.parentNode
    }
    return D.getAttribute&&D||ar
  }
  function ao(D,P){
  return"DynarchCalendar-"+D.split(/,/)[P]
  }
  function T(au,at){
  at=at||window.event;
  var ar=o(at);
  if(ar){
    var P=ar.getAttribute("dyc-type");
    if(P&&!ar.getAttribute("disabled")){
      if(!au||!this._bodyAnim||P!="date"){
        var D=ar.getAttribute("dyc-cls");
        D=D?ao(D,0):"DynarchCalendar-hover-"+P;
        if(P!="date"||this.selection.type){
          ae(au,ar,D)
          }
          if(P=="date"){
          ae(au,ar.parentNode.parentNode,"DynarchCalendar-hover-week");
          this._showTooltip(ar.getAttribute("dyc-date"))
          }
          if(/^time-hour/.test(P)){
          ae(au,this.els.timeHour,"DynarchCalendar-hover-time")
          }
          if(/^time-min/.test(P)){
          ae(au,this.els.timeMinute,"DynarchCalendar-hover-time")
          }
          aj(this._getDateDiv(this._lastHoverDate),"DynarchCalendar-hover-date");
        this._lastHoverDate=null
        }
      }
  }
if(!au){
  this._showTooltip()
  }
}
function E(ar){
  ar=ar||window.event;
  var P=o(ar);
  if(P){
    var at=P.getAttribute("dyc-btn"),D=P.getAttribute("dyc-type"),au=ar.wheelDelta?ar.wheelDelta/120:-ar.detail/3;
    au=au<0?-1:au>0?1:0;
    if(this.args.reverseWheel){
      au=-au
      }
      if(/^(time-(hour|min))/.test(D)){
      switch(RegExp.$1){
        case"time-hour":
          this.setHours(this.getHours()+au);
          break;
        case"time-min":
          this.setMinutes(this.getMinutes()+this.args.minuteStep*au);
          break
          }
          an(ar)
      }else{
      if(/Y/i.test(at)){
        au*=2
        }
        aa(this,-au);
      an(ar)
      }
    }
}
function R(){
  this.refresh();
  var D=this.inputField,P=this.selection;
  if(D){
    var ar=P.print(this.dateFormat);
    (/input|textarea/i.test(D.tagName))?D.value=ar:D.innerHTML=ar
    }
    this.callHooks("onSelect",this,P)
  }
  var ag={
  37:-1,
  38:-2,
  39:1,
  40:2
},Q={
  33:-1,
  34:1
};

function L(aB){
  if(this._menuAnim){
    return
  }
  aB=aB||window.event;
  var ar=aB.target||aB.srcElement,aC=ar.getAttribute("dyc-btn"),aD=aB.keyCode,ay=aB.charCode||aD,D=ag[aD];
  if("year"==aC&&aD==13){
    var au=new Date(this.date);
    au.setDate(1);
    au.setFullYear(this._getInputYear());
    this.moveTo(au,true);
    u(this,false);
    return an(aB)
    }
    if(this._menuVisible){
    if(aD==27){
      u(this,false);
      return an(aB)
      }
    }else{
  if(!aB.ctrlKey){
    D=null
    }
    if(D==null&&!aB.ctrlKey){
    D=Q[aD]
    }
    if(aD==36){
    D=0
    }
    if(D!=null){
    aa(this,D);
    return an(aB)
    }
    ay=String.fromCharCode(ay).toLowerCase();
  var ax=this.els.yearInput,P=this.selection;
  if(ay==" "){
    u(this,true);
    this.focus();
    ax.focus();
    ax.select();
    return an(aB)
    }
    if(ay>="0"&&ay<="9"){
    u(this,true);
    this.focus();
    ax.value=ay;
    ax.focus();
    return an(aB)
    }
    var av=aq("mn"),az=aB.shiftKey?-1:this.date.getMonth(),aw=0,at;
  while(++aw<12){
    at=av[(az+aw)%12].toLowerCase();
    if(at.indexOf(ay)==0){
      var au=new Date(this.date);
      au.setDate(1);
      au.setMonth((az+aw)%12);
      this.moveTo(au,true);
      return an(aB)
      }
    }
  if(aD>=37&&aD<=40){
  var au=this._lastHoverDate;
  if(!au&&!P.isEmpty()){
    au=aD<39?P.getFirstDate():P.getLastDate();
    if(au<this._firstDateVisible||au>this._lastDateVisible){
      au=null
      }
    }
  if(!au){
  au=aD<39?this._lastDateVisible:this._firstDateVisible
  }else{
  var aA=au;
  au=B(au);
  var az=100;
  while(az-->0){
    switch(aD){
      case 37:
        au.setDate(au.getDate()-1);
        break;
      case 38:
        au.setDate(au.getDate()-7);
        break;
      case 39:
        au.setDate(au.getDate()+1);
        break;
      case 40:
        au.setDate(au.getDate()+7);
        break
        }
        if(!this.isDisabled(au)){
      break
    }
  }
  au=V(au);
if(au<this._firstDateVisible||au>this._lastDateVisible){
  this.moveTo(au)
  }
}
aj(this._getDateDiv(aA),M(this._getDateDiv(au),"DynarchCalendar-hover-date"));
this._lastHoverDate=au;
return an(aB)
}
if(aD==13){
  if(this._lastHoverDate){
    if(P.type==y.SEL_MULTIPLE&&(aB.shiftKey||aB.ctrlKey)){
      if(aB.shiftKey&&this._selRangeStart){
        P.clear(true);
        P.selectRange(this._selRangeStart,this._lastHoverDate)
        }
        if(aB.ctrlKey){
        P.set(this._selRangeStart=this._lastHoverDate,true)
        }
      }else{
    P.reset(this._selRangeStart=this._lastHoverDate)
    }
    return an(aB)
  }
}
if(aD==27&&!this.args.cont){
  this.hide()
  }
}
}
l._getDateDiv=function(D){
  var ar=null;
  if(D){
    try{
      t(this.els.body,function(at){
        if(at.getAttribute("dyc-date")==D){
          throw ar=at
          }
        })
    }catch(P){}
}
return ar
};

function k(D,P){
  return D.replace(/\$\{([^:\}]+)(:[^\}]+)?\}/g,function(av,au,at){
    var aw=P[au],ar;
    if(at){
      ar=at.substr(1).split(/\s*\|\s*/);
      aw=(aw>=ar.length?ar[ar.length-1]:ar[aw]).replace(/##?/g,function(ax){
        return ax.length==2?"#":aw
        })
      }
      return aw
    })
  }
  function aq(ar,P){
  var D=q.__.data[ar];
  if(P&&typeof D=="string"){
    D=k(D,P)
    }
    return D
  }(y.Selection=function(ar,P,D,at){
  this.type=P;
  this.sel=ar instanceof Array?ar:[ar];
  this.onChange=v(D,at);
  this.cal=at
  }).prototype={
  get:function(){
    return this.type==y.SEL_SINGLE?this.sel[0]:this.sel
    },
  isEmpty:function(){
    return this.sel.length==0
    },
  set:function(P,D,ar){
    var at=this.type==y.SEL_SINGLE;
    if(P instanceof Array){
      this.sel=P;
      this.normalize();
      if(!ar){
        this.onChange(this)
        }
      }else{
    P=V(P);
    if(at||!this.isSelected(P)){
      at?this.sel=[P]:this.sel.splice(this.findInsertPos(P),0,P);
      this.normalize();
      if(!ar){
        this.onChange(this)
        }
      }else{
    if(D){
      this.unselect(P,ar)
      }
    }
}
},
reset:function(){
  this.sel=[];
  this.set.apply(this,arguments)
  },
countDays:function(){
  var av=0,D=this.sel,P=D.length,at,au,ar;
  while(--P>=0){
    at=D[P];
    if(at instanceof Array){
      au=B(at[0]);
      ar=B(at[1]);
      av+=Math.round(Math.abs(ar.getTime()-au.getTime())/86400000)
      }
      ++av
    }
    return av
  },
unselect:function(P,ar){
  P=V(P);
  var at=false;
  for(var ay=this.sel,au=ay.length,D;--au>=0;){
    D=ay[au];
    if(D instanceof Array){
      if(P>=D[0]&&P<=D[1]){
        var av=B(P),ax=av.getDate();
        if(P==D[0]){
          av.setDate(ax+1);
          D[0]=V(av);
          at=true
          }else{
          if(P==D[1]){
            av.setDate(ax-1);
            D[1]=V(av);
            at=true
            }else{
            var aw=new Date(av);
            aw.setDate(ax+1);
            av.setDate(ax-1);
            ay.splice(au+1,0,[V(aw),D[1]]);
            D[1]=V(av);
            at=true
            }
          }
      }
  }else{
  if(P==D){
    ay.splice(au,1);
    at=true
    }
  }
}
if(at){
  this.normalize();
  if(!ar){
    this.onChange(this)
    }
  }
},
normalize:function(){
  this.sel=this.sel.sort(function(ay,ax){
    if(ay instanceof Array){
      ay=ay[0]
      }
      if(ax instanceof Array){
      ax=ax[0]
      }
      return ay-ax
    });
  for(var P=this.sel,ar=P.length,av,au;--ar>=0;){
    av=P[ar];
    if(av instanceof Array){
      if(av[0]>av[1]){
        P.splice(ar,1);
        continue
      }
      if(av[0]==av[1]){
        av=P[ar]=av[0]
        }
      }
    if(au){
    var at=au,aw=av instanceof Array?av[1]:av;
    aw=B(aw);
    aw.setDate(aw.getDate()+1);
    aw=V(aw);
    if(aw>=at){
      var D=P[ar+1];
      if(av instanceof Array&&D instanceof Array){
        av[1]=D[1];
        P.splice(ar+1,1)
        }else{
        if(av instanceof Array){
          av[1]=au;
          P.splice(ar+1,1)
          }else{
          if(D instanceof Array){
            D[0]=av;
            P.splice(ar,1)
            }else{
            P[ar]=[av,D];
            P.splice(ar+1,1)
            }
          }
      }
  }
}
au=av instanceof Array?av[0]:av
}
},
findInsertPos:function(P){
  for(var D=this.sel,ar=D.length,at;--ar>=0;){
    at=D[ar];
    if(at instanceof Array){
      at=at[0]
      }
      if(at<=P){
      break
    }
  }
  return ar+1
},
clear:function(D){
  this.sel=[];
  if(!D){
    this.onChange(this)
    }
  },
selectRange:function(au,at){
  au=V(au);
  at=V(at);
  if(au>at){
    var ar=au;
    au=at;
    at=ar
    }
    var D=this.cal.args.checkRange;
  if(!D){
    return this._do_selectRange(au,at)
    }
    try{
    m(new y.Selection([[au,at]],y.SEL_MULTIPLE,ad).getDates(),v(function(av){
      if(this.isDisabled(av)){
        if(D instanceof Function){
          D(av,this)
          }
          throw"OUT"
        }
      },this.cal));
  this._do_selectRange(au,at)
  }catch(P){}
},
_do_selectRange:function(P,D){
  this.sel.push([P,D]);
  this.normalize();
  this.onChange(this)
  },
isSelected:function(D){
  for(var P=this.sel.length,ar;--P>=0;){
    ar=this.sel[P];
    if(ar instanceof Array&&D>=ar[0]&&D<=ar[1]||D==ar){
      return true
      }
    }
  return false
},
getFirstDate:function(){
  var D=this.sel[0];
  if(D&&D instanceof Array){
    D=D[0]
    }
    return D
  },
getLastDate:function(){
  if(this.sel.length>0){
    var D=this.sel[this.sel.length-1];
    if(D&&D instanceof Array){
      D=D[1]
      }
      return D
    }
  },
print:function(ar,at){
  var P=[],au=0,aw,av=this.cal.getHours(),D=this.cal.getMinutes();
  if(!at){
    at=" -> "
    }while(au<this.sel.length){
    aw=this.sel[au++];
    if(aw instanceof Array){
      P.push(ab(B(aw[0],av,D),ar)+at+ab(B(aw[1],av,D),ar))
      }else{
      P.push(ab(B(aw,av,D),ar))
      }
    }
  return P
},
getDates:function(P){
  var D=[],ar=0,au,at;
  while(ar<this.sel.length){
    at=this.sel[ar++];
    if(at instanceof Array){
      au=B(at[0]);
      at=at[1];
      while(V(au)<at){
        D.push(P?ab(au,P):new Date(au));
        au.setDate(au.getDate()+1)
        }
      }else{
    au=B(at)
    }
    D.push(P?ab(au,P):au)
  }
  return D
}
};

function a(P){
  P = new Date(P.getFullYear(), P.getMonth(), P.getDate(), 0, 0, 0);
  var ar=P.getDay();
  P.setDate(P.getDate()-(ar+6)%7+3);
  var D=P.valueOf();
  P.setMonth(0);
  P.setDate(4);
  return Math.round((D-P.valueOf())/(7*86400000))+1
  }
  function C(D){
  D=new Date(D.getFullYear(),D.getMonth(),D.getDate(),12,0,0);
  var ar = new Date(D.getFullYear(), 0, 1, 0, 0, 0);
  var P=D-ar;
  return Math.floor(P/86400000)
  }
  function V(D){
  if(D instanceof Date){
    return 10000*D.getFullYear()+100*(D.getMonth()+1)+D.getDate()
    }
    if(typeof D=="string"){
    return parseInt(D,10)
    }
    return D
  }
  function B(ar,au,av,at,P){
  if(!(ar instanceof Date)){
    ar=parseInt(ar,10);
    var aw=Math.floor(ar/10000);
    ar=ar%10000;
    var D=Math.floor(ar/100);
    ar=ar%100;
    ar = new Date(aw, D - 1, ar, au || 0, av || 0, at || 0, P || 0);
    }
    return ar
  }
  function af(aw,au,ar){
  var av=aw.getFullYear(),ay=aw.getMonth(),P=aw.getDate(),at=au.getFullYear(),ax=au.getMonth(),D=au.getDate();
  return av<at?-3:av>at?3:ay<ax?-2:ay>ax?2:ar?0:P<D?-1:P>D?1:0
  }
  function ab(D,ax){
  var P=D.getMonth(),aw=D.getDate(),ay=D.getFullYear(),az=a(D),aA=D.getDay(),aB=D.getHours(),ar=(aB>=12),au=(ar)?(aB-12):aB,aD=C(D),at=D.getMinutes(),av=D.getSeconds(),aC=/%./g,aE;
  if(au===0){
    au=12
    }
    aE={
    "%a":aq("sdn")[aA],
    "%A":aq("dn")[aA],
    "%b":aq("smn")[P],
    "%B":aq("mn")[P],
    "%C":1+Math.floor(ay/100),
    "%d":aw<10?"0"+aw:aw,
    "%e":aw,
    "%H":aB<10?"0"+aB:aB,
    "%I":au<10?"0"+au:au,
    "%j":aD<10?"00"+aD:aD<100?"0"+aD:aD,
    "%k":aB,
    "%l":au,
    "%m":P<9?"0"+(1+P):1+P,
    "%o":1+P,
    "%M":at<10?"0"+at:at,
    "%n":"\n",
    "%p":ar?"PM":"AM",
    "%P":ar?"pm":"am",
    "%s":Math.floor(D.getTime()/1000),
    "%S":av<10?"0"+av:av,
    "%t":"\t",
    "%U":az<10?"0"+az:az,
    "%W":az<10?"0"+az:az,
    "%V":az<10?"0"+az:az,
    "%u":aA+1,
    "%w":aA,
    "%y":(""+ay).substr(2,2),
    "%Y":ay,
    "%%":"%"
  };
  
  return ax.replace(aC,function(aF){
    return aE.hasOwnProperty(aF)?aE[aF]:aF
    })
  }
  function Y(P){
  if(P){
    if(typeof P=="number"){
      return B(P)
      }
      if(!(P instanceof Date)){
      var D=P.split(/-/);
      return new Date(parseInt(D[0], 10), parseInt(D[1], 10) - 1, parseInt(D[2], 10), 0, 0, 0, 0);
      }
    }
  return P
}
function A(ar){
  if(/\S/.test(ar)){
    ar=ar.toLowerCase();
    function P(at){
      for(var au=at.length;--au>=0;){
        if(at[au].toLowerCase().indexOf(ar)==0){
          return au
          }
        }
      }
    var D=P(aq("smn"))||P(aq("mn"));
if(D!=null){
  D++
}
return D
}
}
y.parseDate=function(au,D,aw){
  if(!/\S/.test(au)){
    return""
    }
    au=au.replace(/^\s+/,"").replace(/\s+$/,"");
  aw=aw||new Date();
  var aB=null,P=null,aD=null,av=null,ar=null,aC=null;
  var ay=au.match(/([0-9]{1,2}):([0-9]{1,2})(:[0-9]{1,2})?\s*(am|pm)?/i);
  if(ay){
    av=parseInt(ay[1],10);
    ar=parseInt(ay[2],10);
    aC=ay[3]?parseInt(ay[3].substr(1),10):0;
    au=au.substring(0,ay.index)+au.substr(ay.index+ay[0].length);
    if(ay[4]){
      if(ay[4].toLowerCase()=="pm"&&av<12){
        av+=12
        }else{
        if(ay[4].toLowerCase()=="am"&&av>=12){
          av-=12
          }
        }
    }
}
var az=au.split(/\W+/);
var ax=[];
for(var at=0;at<az.length;++at){
  var aA=az[at];
  if(/^[0-9]{4}$/.test(aA)){
    aB=parseInt(aA,10);
    if(!P&&!aD&&D==null){
      D=true
      }
    }else{
  if(/^[0-9]{1,2}$/.test(aA)){
    aA=parseInt(aA,10);
    if(aA>=60){
      aB=aA
      }else{
      if(aA>=0&&aA<=12){
        ax.push(aA)
        }else{
        if(aA>=1&&aA<=31){
          aD=aA
          }
        }
    }
}else{
  P=A(aA)
  }
}
}
if(ax.length>=2){
  if(D){
    if(!P){
      P=ax.shift()
      }
      if(!aD){
      aD=ax.shift()
      }
    }else{
  if(!aD){
    aD=ax.shift()
    }
    if(!P){
    P=ax.shift()
    }
  }
}else{
  if(ax.length==1){
    if(!aD){
      aD=ax.shift()
      }else{
      if(!P){
        P=ax.shift()
        }
      }
  }
}
if(!aB){
  aB=ax.length>0?ax.shift():aw.getFullYear()
  }
  if(aB<30){
  aB+=2000
  }else{
  if(aB<99){
    aB+=1900
    }
  }
if(!P){
  P=aw.getMonth()+1
  }
  return aB&&P&&aD?new Date(Date.UTC(aB,P-1,aD,av,ar,aC)):null
};

function al(D,at,P,ar){
  ar={};
  
  for(P in at){
    if(at.hasOwnProperty(P)){
      ar[P]=at[P]
      }
    }
  for(P in D){
  if(D.hasOwnProperty(P)){
    ar[P]=D[P]
    }
  }
return ar
}
function p(ar,au,at,D){
  if(ar instanceof Array){
    for(var P=ar.length;--P>=0;){
      p(ar[P],au,at,D)
      }
    }else{
  if(typeof au=="object"){
    for(var P in au){
      if(au.hasOwnProperty(P)){
        p(ar,P,au[P],at)
        }
      }
    }else{
  if(ar.addEventListener){
    ar.addEventListener(au,at,j?true:!!D)
    }else{
    if(ar.attachEvent){
      ar.attachEvent("on"+au,at)
      }else{
      ar["on"+au]=at
      }
    }
}
}
}
function d(ar,au,at,D){
  if(ar instanceof Array){
    for(var P=ar.length;--P>=0;){
      d(ar[P],au,at)
      }
    }else{
  if(typeof au=="object"){
    for(var P in au){
      if(au.hasOwnProperty(P)){
        d(ar,P,au[P],at)
        }
      }
    }else{
  if(ar.removeEventListener){
    ar.removeEventListener(au,at,j?true:!!D)
    }else{
    if(ar.detachEvent){
      ar.detachEvent("on"+au,at)
      }else{
      ar["on"+au]=null
      }
    }
}
}
}
function an(D){
  D=D||window.event;
  if(j){
    D.cancelBubble=true;
    D.returnValue=false
    }else{
    D.preventDefault();
    D.stopPropagation()
    }
    return false
  }
  function aj(au,at,av){
  if(au){
    var D=au.className.replace(/^\s+|\s+$/,"").split(/\x20/),P=[],ar;
    for(ar=D.length;ar>0;){
      if(D[--ar]!=at){
        P.push(D[ar])
        }
      }
    if(av){
    P.push(av)
    }
    au.className=P.join(" ")
  }
  return av
}
function M(P,D){
  return aj(P,D,D)
  }
  function ae(at,ar,P){
  if(ar instanceof Array){
    for(var D=ar.length;--D>=0;){
      ae(at,ar[D],P)
      }
    }else{
  aj(ar,P,at?P:null)
  }
  return at
}
function G(at,D,ar){
  var P=null;
  if(document.createElementNS){
    P=document.createElementNS("http://www.w3.org/1999/xhtml",at)
    }else{
    P=document.createElement(at)
    }
    if(D){
    P.className=D
    }
    if(ar){
    ar.appendChild(P)
    }
    return P
  }
  function b(au,av){
  if(av==null){
    av=0
    }
    var D,at,P;
  try{
    D=Array.prototype.slice.call(au,av)
    }catch(ar){
    D=new Array(au.length-av);
    for(at=av,P=0;at<au.length;++at,++P){
      D[P]=au[at]
      }
    }
    return D
}
function v(P,ar){
  var D=b(arguments,2);
  return(ar==undefined?function(){
    return P.apply(this,D.concat(b(arguments)))
    }:function(){
    return P.apply(ar,D.concat(b(arguments)))
    })
  }
  function t(P,ar){
  if(!ar(P)){
    for(var D=P.firstChild;D;D=D.nextSibling){
      if(D.nodeType==1){
        t(D,ar)
        }
      }
    }
}
function ap(D,aw,ar){
  D=al(D,{
    fps:50,
    len:15,
    onUpdate:ad,
    onStop:ad
  });
  if(j){
    D.len=Math.round(D.len/2)
    }
    function at(aA,az,ax,ay){
    return ay?ax+aA*(az-ax):az+aA*(ax-az)
    }
    function av(){
    if(aw){
      P()
      }
      ar=0;
    aw=setInterval(au,1000/D.fps)
    }
    function P(){
    if(aw){
      clearInterval(aw);
      aw=null
      }
      D.onStop(ar/D.len,at)
    }
    function au(){
    var ax=D.len;
    D.onUpdate(ar/ax,at);
    if(ar==ax){
      P()
      }
      ++ar
    }
    av();
  return{
    start:av,
    stop:P,
    update:au,
    args:D,
    map:at
  }
}
var Z={
  elastic_b:function(D){
    return 1-Math.cos(-D*5.5*Math.PI)/Math.pow(2,7*D)
    },
  magnetic:function(D){
    return 1-Math.cos(D*D*D*10.5*Math.PI)/Math.exp(4*D)
    },
  accel_b:function(D){
    D=1-D;
    return 1-D*D*D*D
    },
  accel_a:function(D){
    return D*D*D
    },
  accel_ab:function(D){
    D=1-D;
    return 1-Math.sin(D*D*Math.PI/2)
    },
  accel_ab2:function(D){
    return(D/=0.5)<1?1/2*D*D:-1/2*((--D)*(D-2)-1)
    },
  brakes:function(D){
    D=1-D;
    return 1-Math.sin(D*D*Math.PI)
    },
  shake:function(D){
    return D<0.5?-Math.cos(D*11*Math.PI)*D*D:(D=1-D,Math.cos(D*11*Math.PI)*D*D)
    }
  };

function am(D,P){
  if(P===""){
    j?D.style.filter="":D.style.opacity=""
    }else{
    if(P!=null){
      j?D.style.filter="alpha(opacity="+P*100+")":D.style.opacity=P
      }else{
      if(!j){
        P=parseFloat(D.style.opacity)
        }else{
        if(/alpha\(opacity=([0-9.])+\)/.test(D.style.opacity)){
          P=parseFloat(RegExp.$1)/100
          }
        }
    }
}
return P
}
function O(ar,D){
  var P=ar.style;
  if(D!=null){
    P.display=D?"":"none"
    }
    return P.display!="none"
  }
  function f(P,ar){
  var D=j?P.clientX+document.body.scrollLeft:P.pageX;
  var at=j?P.clientY+document.body.scrollTop:P.pageY;
  if(ar){
    D-=ar.x;
    at-=ar.y
    }
    return{
    x:D,
    y:at
  }
}
function J(au){
  var D=0,at=0,ar=/^div$/i.test(au.tagName),av,P;
  if(ar&&au.scrollLeft){
    D=au.scrollLeft
    }
    if(ar&&au.scrollTop){
    at=au.scrollTop
    }
    av={
    x:au.offsetLeft-D,
    y:au.offsetTop-at
    };
    
  if(au.offsetParent){
    P=J(au.offsetParent);
    av.x+=P.x;
    av.y+=P.y
    }
    return av
  }
  function X(){
  var P=document.documentElement,D=document.body;
  return{
    x:P.scrollLeft||D.scrollLeft,
    y:P.scrollTop||D.scrollTop,
    w:P.clientWidth||window.innerWidth||D.clientWidth,
    h:P.clientHeight||window.innerHeight||D.clientHeight
    }
  }
function m(D,ar,P){
  for(P=0;P<D.length;++P){
    ar(D[P])
    }
  }
  var ad=new Function();
function W(D){
  if(typeof D=="string"){
    D=document.getElementById(D)
    }
    return D
  }
  return y
})();
