(function(D)
{
  D.fn.extend(
  {
    renderCalendar:function(P)
    {
      var X=function(Y)
      {
        return document.createElement(Y)
      };
      P=D.extend(
      {
      }
      ,D.fn.datePicker.defaults,P);
      if(P.showHeader!=D.dpConst.SHOW_HEADER_NONE)
      {
        var M=D(X("tr"));
        for(var S=Date.firstDayOfWeek;S<Date.firstDayOfWeek+7;S++)
        {
          var H=S%7;
          var R=Date.dayNames[H];
          M.append(jQuery(X("th")).attr(
          {
            scope:"col",abbr:R,title:R,"class":(H==0||H==6?"weekend":"weekday")
          }
          ).html(P.showHeader==D.dpConst.SHOW_HEADER_SHORT?R.substr(0,1):R))
        }
      }
      var E=D(X("table")).attr(
      {
        cellspacing:2,className:"jCalendar"
      }
      ).append((P.showHeader!=D.dpConst.SHOW_HEADER_NONE?D(X("thead")).append(M):X("thead")));
      var F=D(X("tbody"));
      var U=(new Date()).zeroTime();
      var W=P.month==undefined?U.getMonth():P.month;
      var N=P.year||U.getFullYear();
      var K=new Date(N,W,1);
      var J=Date.firstDayOfWeek-K.getDay()+1;
      if(J>1)
      {
        J-=7
      }
      var O=Math.ceil(((-1*J+1)+K.getDaysInMonth())/7);
      K.addDays(J-1);
      var V=function()
      {
        if(P.hoverClass)
        {
          D(this).addClass(P.hoverClass)
        }
      };
      var G=function()
      {
        if(P.hoverClass)
        {
          D(this).removeClass(P.hoverClass)
        }
      };
      var L=0;
      while(L++<O)
      {
        var Q=jQuery(X("tr"));
        for(var S=0;S<7;S++)
        {
          var I=K.getMonth()==W;
          var T=D(X("td")).text(K.getDate()+"").attr("className",(I?"current-month ":"other-month ")+(K.isWeekend()?"weekend ":"weekday ")+(I&&K.getTime()==U.getTime()?"today ":"")).hover(V,G);
          if(P.renderCallback)
          {
            P.renderCallback(T,K,W,N)
          }
          Q.append(T);
          K.addDays(1)
        }
        F.append(Q)
      }
      E.append(F);
return this.each(function()
{
  D(this).empty().append(E)
}
)
}
,datePicker:function(E)
{
if(!D.event._dpCache)
{
  D.event._dpCache=[]
}
E=D.extend(
{
}
,D.fn.datePicker.defaults,E);
return this.each(function()
{
  var G=D(this);
  var I=true;
  if(!this._dpId)
  {
    this._dpId=D.event.guid++;
    D.event._dpCache[this._dpId]=new A(this);
    I=false
  }
  if(E.inline)
  {
    E.createButton=false;
    E.displayClose=false;
    E.closeOnSelect=false;
    G.empty()
  }
  var F=D.event._dpCache[this._dpId];
  F.init(E);
  if(!I&&E.createButton)
  {
    F.button=D('<a href="#" class="dp-choose-date" title="'+D.dpText.TEXT_CHOOSE_DATE+'">'
	+"<img src='/images/vip/member_time.gif'>"
	+"</a>").bind("click",function()
    {
      G.dpDisplay(this);
      this.blur();
      return false
    }
    );
    G.after(F.button)
  }
  if(!I&&G.is(":text"))
  {
    G.bind("dateSelected",function(K,J,L)
    {
      this.value=J.asString()
      this.focus();
    }
    ).bind("change",function()
    {
      if(this.value!="")
      {
        var J=Date.fromString(this.value);
        if(J)
        {
          F.setSelected(J,true,true)
        }
      }
    }
    );
    if(E.clickInput)
    {
      G.bind("click",function()
      {
        G.dpDisplay()
      }
      )
    }
    var H=Date.fromString(this.value);
    if(this.value!=""&&H)
    {
      F.setSelected(H,true,true)
    }
  }
  G.addClass("dp-applied")
}
)
}
,dpSetDisabled:function(E)
{
return B.call(this,"setDisabled",E)
}
,dpSetStartDate:function(E)
{
return B.call(this,"setStartDate",E)
}
,dpSetEndDate:function(E)
{
return B.call(this,"setEndDate",E)
}
,dpGetSelected:function()
{
var E=C(this[0]);
if(E)
{
  return E.getSelected()
}
return null
}
,dpSetSelected:function(G,F,E)
{
if(F==undefined)
{
  F=true
}
if(E==undefined)
{
  E=true
}
return B.call(this,"setSelected",Date.fromString(G),F,E,true)
}
,dpSetDisplayedMonth:function(E,F)
{
return B.call(this,"setDisplayedMonth",Number(E),Number(F),true)
}
,dpDisplay:function(E)
{
return B.call(this,"display",E)
}
,dpSetRenderCallback:function(E)
{
return B.call(this,"setRenderCallback",E)
}
,dpSetPosition:function(E,F)
{
return B.call(this,"setPosition",E,F)
}
,dpSetOffset:function(E,F)
{
return B.call(this,"setOffset",E,F)
}
,dpClose:function()
{
return B.call(this,"_closeCalendar",false,this[0])
}
,_dpDestroy:function()
{
}
}
);
var B=function(G,F,E,I,H)
{
return this.each(function()
{
  var J=C(this);
  if(J)
  {
    J[G](F,E,I,H)
  }
}
)
};
function A(E)
{
  this.ele=E;
  this.displayedMonth=null;
  this.displayedYear=null;
  this.startDate=null;
  this.endDate=null;
  this.showYearNavigation=null;
  this.closeOnSelect=null;
  this.displayClose=null;
  this.selectMultiple=null;
  this.verticalPosition=null;
  this.horizontalPosition=null;
  this.verticalOffset=null;
  this.horizontalOffset=null;
  this.button=null;
  this.renderCallback=[];
  this.selectedDates=
  {
  };
  this.inline=null;
  this.context="#dp-popup"
}
D.extend(A.prototype,
{
  init:function(E)
  {
    this.setStartDate(E.startDate);
    this.setEndDate(E.endDate);
    this.setDisplayedMonth(Number(E.month),Number(E.year));
    this.setRenderCallback(E.renderCallback);
    this.showYearNavigation=E.showYearNavigation;
    this.closeOnSelect=E.closeOnSelect;
    this.displayClose=E.displayClose;
    this.selectMultiple=E.selectMultiple;
    this.verticalPosition=E.verticalPosition;
    this.horizontalPosition=E.horizontalPosition;
    this.hoverClass=E.hoverClass;
    this.setOffset(E.verticalOffset,E.horizontalOffset);
    this.inline=E.inline;
    if(this.inline)
    {
      this.context=this.ele;
      this.display()
    }
  }
  ,setStartDate:function(E)
  {
    if(E)
    {
      this.startDate=Date.fromString(E)
    }
    if(!this.startDate)
    {
      this.startDate=(new Date()).zeroTime()
    }
    this.setDisplayedMonth(this.displayedMonth,this.displayedYear)
  }
  ,setEndDate:function(E)
  {
    if(E)
    {
      this.endDate=Date.fromString(E)
    }
    if(!this.endDate)
    {
      this.endDate=(new Date("12/31/2999"))
    }
    if(this.endDate.getTime()<this.startDate.getTime())
    {
      this.endDate=this.startDate
    }
    this.setDisplayedMonth(this.displayedMonth,this.displayedYear)
  }
  ,setPosition:function(E,F)
  {
    this.verticalPosition=E;
    this.horizontalPosition=F
  }
  ,setOffset:function(E,F)
  {
    this.verticalOffset=parseInt(E)||0;
    this.horizontalOffset=parseInt(F)||0
  }
  ,setDisabled:function(E)
  {
    $e=D(this.ele);
    $e[E?"addClass":"removeClass"]("dp-disabled");
    if(this.button)
    {
      $but=D(this.button);
      $but[E?"addClass":"removeClass"]("dp-disabled");
      $but.attr("title",E?"":D.dpText.TEXT_CHOOSE_DATE)
    }
    if($e.is(":text"))
    {
      $e.attr("disabled",E?"disabled":"")
    }
  }
  ,setDisplayedMonth:function(E,L,I)
  {
    if(this.startDate==undefined||this.endDate==undefined)
    {
      return
    }
    var H=new Date(this.startDate.getTime());
    H.setDate(1);
    var K=new Date(this.endDate.getTime());
    K.setDate(1);
    var G;
    if((!E&&!L)||(isNaN(E)&&isNaN(L)))
    {
      G=new Date().zeroTime();
      G.setDate(1)
    }
    else
    {
      if(isNaN(E))
      {
        G=new Date(L,this.displayedMonth,1)
      }
      else
      {
        if(isNaN(L))
        {
          G=new Date(this.displayedYear,E,1)
        }
        else
        {
          G=new Date(L,E,1)
        }
      }
    }
    if(G.getTime()<H.getTime())
    {
      G=H
    }
    else
    {
      if(G.getTime()>K.getTime())
      {
        G=K
      }
    }
    var F=this.displayedMonth;
    var J=this.displayedYear;
    this.displayedMonth=G.getMonth();
    this.displayedYear=G.getFullYear();
    if(I&&(this.displayedMonth!=F||this.displayedYear!=J))
    {
      this._rerenderCalendar();
      D(this.ele).trigger("dpMonthChanged",[this.displayedMonth,this.displayedYear])
    }
  }
  ,setSelected:function(K,E,F,H)
  {
    if(E==this.isSelected(K))
    {
      return
    }
    if(this.selectMultiple==false)
    {
      this.selectedDates=
      {
      };
      D("td.selected",this.context).removeClass("selected")
    }
    if(F&&this.displayedMonth!=K.getMonth())
    {
      this.setDisplayedMonth(K.getMonth(),K.getFullYear(),true)
    }
    this.selectedDates[K.toString()]=E;
    var I="td.";
    I+=K.getMonth()==this.displayedMonth?"current-month":"other-month";
    I+=':contains("'+K.getDate()+'")';
    var J;
D(I,this.ele).each(function()
{
  if(D(this).text()==K.getDate())
  {
    J=D(this);
    J[E?"addClass":"removeClass"]("selected")
  }
}
);
if(H)
{
  var G=this.isSelected(K);
  $e=D(this.ele);
  $e.trigger("dateSelected",[K,J,G]);
  $e.trigger("change")
}
}
,isSelected:function(E)
{
return this.selectedDates[E.toString()]
}
,getSelected:function()
{
var E=[];
for(s in this.selectedDates)
{
  if(this.selectedDates[s]==true)
  {
    E.push(Date.parse(s))
  }
}
return E
}
,display:function(E)
{
if(D(this.ele).is(".dp-disabled"))
{
  return
}
E=E||this.ele;
var L=this;
var H=D(E);
var K=H.offset();
var M;
var N;
var G;
var I;
if(L.inline)
{
  M=D(this.ele);
  N=
  {
    id:"calendar-"+this.ele._dpId,className:"dp-popup dp-popup-inline"
  };
  I=
  {
  }
}
else
{
  M=D("body");
  N=
  {
    id:"dp-popup",className:"dp-popup"
  };
  I=
  {
    top:K.top+L.verticalOffset+20,left:K.left+L.horizontalOffset
  };
  var $wrapper = $('#wrapper');
  if ($wrapper.size()>0)	{
	 I.left -= $wrapper.offset().left;
  }
  var J=function(Q)
  {
    var O=Q.target;
    var P=D("#dp-popup")[0];
    while(true)
    {
      if(O==P)
      {
        return true
      }
      else
      {
        if(O==document)
        {
          L._closeCalendar();
          return false
        }
        else
        {
          O=D(O).parent()[0]
        }
      }
    }
  };
  this._checkMouse=J;
  this._closeCalendar(true)
}
M.append(D("<div></div>").attr(N).css(I).append(D("<h2></h2>"),D('<div class="dp-nav-prev"></div>').append(D('<a class="dp-nav-prev-year" href="#" title="'+D.dpText.TEXT_PREV_YEAR+'">&lt;&lt;</a>').bind("click",function()
{
  return L._displayNewMonth.call(L,this,0,-1)
}
),D('<a class="dp-nav-prev-month" href="#" title="'+D.dpText.TEXT_PREV_MONTH+'">&lt;</a>').bind("click",function()
{
  return L._displayNewMonth.call(L,this,-1,0)
}
)),D('<div class="dp-nav-next"></div>').append(D('<a class="dp-nav-next-year" href="#" title="'+D.dpText.TEXT_NEXT_YEAR+'">&gt;&gt;</a>').bind("click",function()
{
  return L._displayNewMonth.call(L,this,0,1)
}
),D('<a class="dp-nav-next-month" href="#" title="'+D.dpText.TEXT_NEXT_MONTH+'">&gt;</a>').bind("click",function()
{
  return L._displayNewMonth.call(L,this,1,0)
}
)),D("<div></div>").attr("className","dp-calendar")).bgIframe());
var F=this.inline?D(".dp-popup",this.context):D("#dp-popup");
if(this.showYearNavigation==false)
{
  D(".dp-nav-prev-year, .dp-nav-next-year",L.context).css("display","none")
}
if(this.displayClose)
{
  F.append(D('<a href="#" id="dp-close">'+D.dpText.TEXT_CLOSE+"</a>").bind("click",function()
  {
    L._closeCalendar();
    return false
  }
  ))
}
L._renderCalendar();
D(this.ele).trigger("dpDisplayed",F);
if(!L.inline)
{
  if(this.verticalPosition==D.dpConst.POS_BOTTOM)
  {
    F.css("top",K.top+H.height()-F.height()+L.verticalOffset)
  }
  if(this.horizontalPosition==D.dpConst.POS_RIGHT)
  {
    F.css("left",K.left+H.width()-F.width()+L.horizontalOffset)
  }
  D(document).bind("mousedown",this._checkMouse)
}
}
,setRenderCallback:function(E)
{
if(E==null)
{
  return
}
if(E&&typeof(E)=="function")
{
  E=[E]
}
this.renderCallback=this.renderCallback.concat(E)
}
,cellRender:function(J,E,H,G)
{
var K=this.dpController;
var I=new Date(E.getTime());
J.bind("click",function()
{
  var L=D(this);
  if(!L.is(".disabled"))
  {
    K.setSelected(I,!L.is(".selected")||!K.selectMultiple,false,true);
    if(K.closeOnSelect)
    {
      K._closeCalendar()
    }
  }
}
);
if(K.isSelected(I))
{
  J.addClass("selected")
}
for(var F=0;F<K.renderCallback.length;F++)
{
  K.renderCallback[F].apply(this,arguments)
}
}
,_displayNewMonth:function(F,E,G)
{
if(!D(F).is(".disabled"))
{
  this.setDisplayedMonth(this.displayedMonth+E,this.displayedYear+G,true)
}
F.blur();
return false
}
,_rerenderCalendar:function()
{
this._clearCalendar();
this._renderCalendar()
}
,_renderCalendar:function()
{
D("h2",this.context).html(Date.monthNames[this.displayedMonth]+" "+this.displayedYear);
D(".dp-calendar",this.context).renderCalendar(
{
  month:this.displayedMonth,year:this.displayedYear,renderCallback:this.cellRender,dpController:this,hoverClass:this.hoverClass
}
);
if(this.displayedYear==this.startDate.getFullYear()&&this.displayedMonth==this.startDate.getMonth())
{
  D(".dp-nav-prev-year",this.context).addClass("disabled");
  D(".dp-nav-prev-month",this.context).addClass("disabled");
D(".dp-calendar td.other-month",this.context).each(function()
{
  var H=D(this);
  if(Number(H.text())>20)
  {
    H.addClass("disabled")
  }
}
);
var G=this.startDate.getDate();
D(".dp-calendar td.current-month",this.context).each(function()
{
  var H=D(this);
  if(Number(H.text())<G)
  {
    H.addClass("disabled")
  }
}
)
}
else
{
D(".dp-nav-prev-year",this.context).removeClass("disabled");
D(".dp-nav-prev-month",this.context).removeClass("disabled");
var G=this.startDate.getDate();
if(G>20)
{
  var F=new Date(this.startDate.getTime());
  F.addMonths(1);
  if(this.displayedYear==F.getFullYear()&&this.displayedMonth==F.getMonth())
  {
D("dp-calendar td.other-month",this.context).each(function()
{
  var H=D(this);
  if(Number(H.text())<G)
  {
    H.addClass("disabled")
  }
}
)
}
}
}
if(this.displayedYear==this.endDate.getFullYear()&&this.displayedMonth==this.endDate.getMonth())
{
D(".dp-nav-next-year",this.context).addClass("disabled");
D(".dp-nav-next-month",this.context).addClass("disabled");
D(".dp-calendar td.other-month",this.context).each(function()
{
  var H=D(this);
  if(Number(H.text())<14)
  {
    H.addClass("disabled")
  }
}
);
var G=this.endDate.getDate();
D(".dp-calendar td.current-month",this.context).each(function()
{
  var H=D(this);
  if(Number(H.text())>G)
  {
    H.addClass("disabled")
  }
}
)
}
else
{
D(".dp-nav-next-year",this.context).removeClass("disabled");
D(".dp-nav-next-month",this.context).removeClass("disabled");
var G=this.endDate.getDate();
if(G<13)
{
  var E=new Date(this.endDate.getTime());
  E.addMonths(-1);
  if(this.displayedYear==E.getFullYear()&&this.displayedMonth==E.getMonth())
  {
D(".dp-calendar td.other-month",this.context).each(function()
{
  var H=D(this);
  if(Number(H.text())>G)
  {
    H.addClass("disabled")
  }
}
)
}
}
}
}
,_closeCalendar:function(E,F)
{
if(!F||F==this.ele)
{
D(document).unbind("mousedown",this._checkMouse);
this._clearCalendar();
D("#dp-popup a").unbind();
D("#dp-popup").empty().remove();
if(!E)
{
D(this.ele).trigger("dpClosed",[this.getSelected()])
}
}
}
,_clearCalendar:function()
{
D(".dp-calendar td",this.context).unbind();
D(".dp-calendar",this.context).empty()
}
}
);
D.dpConst=
{
SHOW_HEADER_NONE:0,SHOW_HEADER_SHORT:1,SHOW_HEADER_LONG:2,POS_TOP:0,POS_BOTTOM:1,POS_LEFT:0,POS_RIGHT:1
};
D.dpText=
{
TEXT_PREV_YEAR:"上一年",TEXT_PREV_MONTH:"上一月",TEXT_NEXT_YEAR:"下一年",TEXT_NEXT_MONTH:"下一月",TEXT_CLOSE:"关闭",TEXT_CHOOSE_DATE:"Choose date"
};
D.dpVersion="$Id: jquery.datePicker.js 15 2008-12-17 04:40:18Z kelvin.luck $";
D.fn.datePicker.defaults=
{
month:undefined,year:undefined,showHeader:D.dpConst.SHOW_HEADER_SHORT,startDate:undefined,endDate:undefined,inline:false,renderCallback:null,createButton:true,showYearNavigation:true,closeOnSelect:true,displayClose:false,selectMultiple:false,clickInput:false,verticalPosition:D.dpConst.POS_TOP,horizontalPosition:D.dpConst.POS_LEFT,verticalOffset:0,horizontalOffset:0,hoverClass:"dp-hover"
};
function C(E)
{
  if(E._dpId)
  {
    return D.event._dpCache[E._dpId]
  }
  return false
}
if(D.fn.bgIframe==undefined)
{
  D.fn.bgIframe=function()
  {
    return this
  }
}
D(window).bind("unload",function()
{
  var F=D.event._dpCache||[];
  for(var E in F)
  {
    D(F[E].ele)._dpDestroy()
  }
}
)
}
)(jQuery);
