(function($){
var PROP_NAME='datepick';
if(!$.browser_is_supported_datepick){
var uaMatch=function(ua){
ua=ua.toLowerCase();
var match=/(chrome)[ \/]([\w.]+)/.exec(ua)||/(webkit)[ \/]([\w.]+)/.exec(ua)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua)||/(msie) ([\w.]+)/.exec(ua)||ua.indexOf('compatible') < 0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)||[];
return match[2]||'0';
};
$.browser_is_supported_datepick={
mozilla: /mozilla/.test(navigator.userAgent.toLowerCase())&&!/webkit/.test(navigator.userAgent.toLowerCase()),
webkit: /webkit/.test(navigator.userAgent.toLowerCase()),
opera: /opera/.test(navigator.userAgent.toLowerCase()),
msie: /msie/.test(navigator.userAgent.toLowerCase()),
android: (navigator.userAgent.toLowerCase().indexOf('mozilla/5.0') > -1&&navigator.userAgent.toLowerCase().indexOf('android ') > -1&&navigator.userAgent.toLowerCase().indexOf('applewebkit') > -1),
version: uaMatch(navigator.userAgent)
};}
function Datepick(){
this._uuid=new Date().getTime();
this._curInst=null;
this._keyEvent=false;
this._disabledInputs=[];
this._datepickerShowing=false;
this._inDialog=false;
this.regional=[];
this.regional['']={
clearText: 'Clear',
clearStatus: 'Erase the current date',
closeText: 'Close',
closeStatus: 'Close without change',
prevText: '&#x3c;Prev',
prevStatus: 'Show the previous month',
prevBigText: '&#x3c;&#x3c;',
prevBigStatus: 'Show the previous year',
nextText: 'Next&#x3e;',
nextStatus: 'Show the next month',
nextBigText: '&#x3e;&#x3e;',
nextBigStatus: 'Show the next year',
currentText: 'Today',
currentStatus: 'Show the current month',
monthNames: ['January','February','March','April','May','June',
'July','August','September','October','November','December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
monthStatus: 'Show a different month',
yearStatus: 'Show a different year',
weekHeader: 'Wk',
weekStatus: 'Week of the year',
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
dayStatus: 'Set DD as first week day',
dateStatus: 'Select DD, M d',
dateFormat: 'mm/dd/yy',
firstDay: 0,
initStatus: 'Select a date',
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
this._defaults={
wpbc_resource_id: 0, // ID of booking resource - customization	// FixIn: 9.4.4.13.
useThemeRoller: false,
showOn: 'focus', // 'focus' for popup on focus,
showAnim: 'show',
showOptions: {},
duration: 'normal',
buttonText: '...',
buttonImage: '',
buttonImageOnly: false,
alignment: 'bottom',
autoSize: false,
defaultDate: null,
showDefault: false,
appendText: '',
closeAtTop: true,
mandatory: false,
hideIfNoPrevNext: false,
navigationAsDateFormat: false,
showBigPrevNext: false,
stepMonths: 1,
stepBigMonths: 12,
gotoCurrent: false,
changeMonth: true,
changeYear: true,
yearRange: '-10:+10',
changeFirstDay: false,
showOtherMonths: false,
selectOtherMonths: false,
highlightWeek: false,
showWeeks: false,
calculateWeek: this.iso8601Week,
shortYearCutoff: '+10',
showStatus: false,
statusForDate: this.dateStatus,
minDate: null,
maxDate: null,
numberOfMonths: 1,
showCurrentAtPos: 0,
rangeSelect: false,
rangeSeparator: ' - ',
multiSelect: 0,
multiSeparator: ',',
beforeShow: null,
beforeShowDay: null,
onChangeMonthYear: null,
onHover: null,
onSelect: null,
onClose: null,
altField: '',
altFormat: '',
constrainInput: true
};
$.extend(this._defaults, this.regional['']);
this.dpDiv=$('<div style="display: none;"></div>');
}
$.extend(Datepick.prototype, {
version: '3.7.0',
markerClassName: 'hasDatepick',
_mainDivId: ['datepick-div', 'ui-datepicker-div'],
_mainDivClass: ['', 'ui-datepicker ' +
'ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'],
_inlineClass: ['datepick-inline', 'ui-datepicker-inline ui-datepicker ' +
'ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'],
_multiClass: ['datepick-multi', 'ui-datepicker-multi'],
_rtlClass: ['datepick-rtl', 'ui-datepicker-rtl'],
_appendClass: ['datepick-append', 'ui-datepicker-append'],
_triggerClass: ['datepick-trigger', 'ui-datepicker-trigger'],
_dialogClass: ['datepick-dialog', 'ui-datepicker-dialog'],
_promptClass: ['datepick-prompt', 'ui-datepicker-prompt'],
_disableClass: ['datepick-disabled', 'ui-datepicker-disabled'],
_controlClass: ['datepick-control', 'ui-datepicker-header ' +
'ui-widget-header ui-helper-clearfix ui-corner-all'],
_clearClass: ['datepick-clear', 'ui-datepicker-clear'],
_closeClass: ['datepick-close', 'ui-datepicker-close'],
_linksClass: ['datepick-links', 'ui-datepicker-header ' +
'ui-widget-header ui-helper-clearfix ui-corner-all'],
_prevClass: ['datepick-prev', 'ui-datepicker-prev'],
_nextClass: ['datepick-next', 'ui-datepicker-next'],
_currentClass: ['datepick-current', 'ui-datepicker-current'],
_oneMonthClass: ['datepick-one-month', 'ui-datepicker-group'],
_newRowClass: ['datepick-new-row', 'ui-datepicker-row-break'],
_monthYearClass: ['datepick-header', 'ui-datepicker-header ' +
'ui-widget-header ui-helper-clearfix ui-corner-all'],
_monthSelectClass: ['datepick-new-month', 'ui-datepicker-month'],
_monthClass: ['', 'ui-datepicker-month'],
_yearSelectClass: ['datepick-new-year', 'ui-datepicker-year'],
_yearClass: ['', 'ui-datepicker-year'],
_tableClass: ['datepick wpbc_calendar', 'ui-datepicker-calendar'], // Month table class		// FixIn: 9.7.3.7
_tableHeaderClass: ['datepick-title-row', ''],
_weekColClass: ['datepick-week-col', 'ui-datepicker-week-col'],
_weekRowClass: ['datepick-days-row', ''],
_weekendClass: ['datepick-week-end-cell', 'ui-datepicker-week-end'],
_dayClass: ['datepick-days-cell', ''],
_otherMonthClass: ['datepick-other-month', 'ui-datepicker-other-month'],
_todayClass: ['datepick-today', 'ui-state-highlight'],
_selectableClass: ['', 'ui-state-default'],
_unselectableClass: ['datepick-unselectable',
'ui-datepicker-unselectable ui-state-disabled'],
_selectedClass: ['datepick-current-day', 'ui-state-active'],
_dayOverClass: ['datepick-days-cell-over', 'ui-state-hover'],
_weekOverClass: ['datepick-week-over', 'ui-state-hover'],
_statusClass: ['datepick-status', 'ui-datepicker-status'],
_statusId: ['datepick-status-', 'ui-datepicker-status-'],
_coverClass: ['datepick-cover', 'ui-datepicker-cover'],
setDefaults: function(settings){
extendRemove(this._defaults, settings||{});
return this;
},
_attachDatepick: function(target, settings){
if(!target.id)
target.id='dp' + (++this._uuid);
var nodeName=target.nodeName.toLowerCase();
var inst=this._newInst($(target), (nodeName=='div'||nodeName=='span'));
var inlineSettings=($.fn.metadata ? $(target).metadata():{});
inst.settings=$.extend({}, settings||{}, inlineSettings||{});
this._adjustInstDate(inst);	// FixIn: Adjust cursor date (currently  rendering Month,  if we define the minDate in the future !!!  // FixIn: 10.13.1.4.
if(inst.inline){
inst.dpDiv.addClass(this._inlineClass[
this._get(inst, 'useThemeRoller') ? 1:0]);
this._inlineDatepick(target, inst);
}
else
this._connectDatepick(target, inst);
},
_newInst: function(target, inline){
var id=target[0].id.replace(/([:\[\]\.\$])/g, '\\\\$1');
return {id: id, input: target,
cursorDate: this._daylightSavingAdjust(new Date()),
drawMonth: 0, drawYear: 0,
dates: [],
inline: inline,
dpDiv: (!inline ? this.dpDiv:$('<div></div>')),
siblings: $([])};},
_connectDatepick: function(target, inst){
var input=$(target);
if(input.hasClass(this.markerClassName))
return;
var appendText=this._get(inst, 'appendText');
var isRTL=this._get(inst, 'isRTL');
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if(appendText){
var append=$('<span class="' + this._appendClass[useTR] + '">' + appendText + '</span>');
input[isRTL ? 'before':'after'](append);
inst.siblings=inst.siblings.add(append);
}
var showOn=this._get(inst, 'showOn');
if(showOn=='focus'||showOn=='both')
input.on('focus.wpbc_datepick', this._showDatepick);
if(showOn=='button'||showOn=='both'){
var buttonText=this._get(inst, 'buttonText');
var buttonImage=this._get(inst, 'buttonImage');
var trigger=$(this._get(inst, 'buttonImageOnly') ?
$('<img/>').addClass(this._triggerClass[useTR]).
attr({src: buttonImage, alt: buttonText, title: buttonText}) :
$('<button type="button"></button>').addClass(this._triggerClass[useTR]).
html(buttonImage=='' ? buttonText:$('<img/>').attr({src: buttonImage, alt: buttonText, title: buttonText})));
input[isRTL ? 'before':'after'](trigger);
inst.siblings=inst.siblings.add(trigger);
trigger.on('click', function (){
if($.datepick._datepickerShowing&&$.datepick._lastInput==target)
$.datepick._hideDatepick();
else
$.datepick._showDatepick(target);
return false;
});
}
input.addClass(this.markerClassName).on('keydown.wpbc_datepick', this._doKeyDown).on('keypress.wpbc_datepick', this._doKeyPress).on('keyup.wpbc_datepick', this._doKeyUp);	//FixIn: 10.0.0.45	// FixIn: 8.7.11.12.
if(this._get(inst, 'showDefault')&&!inst.input.val()){
inst.dates=[this._getDefaultDate(inst)];
this._showDate(inst);
}
this._autoSize(inst);
$.data(target, PROP_NAME, inst);
},
_autoSize: function(inst){
if(this._get(inst, 'autoSize')&&!inst.inline){
var date=new Date(2009, 12 - 1, 20);
var dateFormat=this._get(inst, 'dateFormat');
if(dateFormat.match(/[DM]/)){
var findMax=function(names){
var max=0;
var maxI=0;
for (var i=0; i < names.length; i++){
if(names[i].length > max){
max=names[i].length;
maxI=i;
}}
return maxI;
};
date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
'monthNames':'monthNamesShort'))));
date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
'dayNames':'dayNamesShort'))) + 20 - date.getDay());
}
inst.input.attr('size', this._formatDate(inst, date).length);
}},
_inlineDatepick: function(target, inst){
var divSpan=$(target);
if(divSpan.hasClass(this.markerClassName))
return;
divSpan.addClass(this.markerClassName);
$.data(target, PROP_NAME, inst);
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
$('body').append(inst.dpDiv);
this._updateDatepick(inst);
divSpan.append(inst.dpDiv);
this._updateAlternate(inst);
var resource_id=parseInt(divSpan.get(0).getAttribute('id').replace('calendar_booking', '') );
inst.settings.wpbc_resource_id=resource_id;
$('body').trigger('wpbc_datepick_inline_calendar_loaded'
, [
divSpan.get(0).getAttribute('id').replace('calendar_booking', '')
, divSpan
, inst
]
);
},
_dialogDatepick: function(input, date, onSelect, settings, pos){
var inst=this._dialogInst;
if(!inst){
var id='dp' + (++this._uuid);
this._dialogInput=$('<input type="text" id="' + id +
'" style="position: absolute; width: 1px; z-index: -1"/>');
this._dialogInput.on('keydown.wpbc_datepick', this._doKeyDown);
$('body').append(this._dialogInput);
inst=this._dialogInst=this._newInst(this._dialogInput, false);
inst.settings={};
$.data(this._dialogInput[0], PROP_NAME, inst);
}
extendRemove(inst.settings, settings||{});
date=(date&&date.constructor==Date ? this._formatDate(inst, date):date);
this._dialogInput.val(date);
this._pos=(pos ? (isArray(pos) ? pos:[pos.pageX, pos.pageY]):null);
if(!this._pos){
var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;
var scrollY=document.documentElement.scrollTop||document.body.scrollTop;
this._pos =
[(document.documentElement.clientWidth / 2) - 100 + scrollX,
(document.documentElement.clientHeight / 2) - 150 + scrollY];
}
this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');
inst.settings.onSelect=onSelect;
this._inDialog=true;
this.dpDiv.addClass(this._dialogClass[this._get(inst, 'useThemeRoller') ? 1:0]);
this._showDatepick(this._dialogInput[0]);
if($.blockUI)
$.blockUI(this.dpDiv);
$.data(this._dialogInput[0], PROP_NAME, inst);
},
_destroyDatepick: function(target){
var $target=$(target);
if(!$target.hasClass(this.markerClassName)){
return;
}
var inst=$.data(target, PROP_NAME);
$.removeData(target, PROP_NAME);
if(inst.inline)
$target.removeClass(this.markerClassName).empty();
else {
$(inst.siblings).remove();
$target.removeClass(this.markerClassName).off('focus.wpbc_datepick').off('keydown.wpbc_datepick').off('keypress.wpbc_datepick').off('keyup.wpbc_datepick');
}},
_enableDatepick: function(target){
var $target=$(target);
if(!$target.hasClass(this.markerClassName))
return;
var inst=$.data(target, PROP_NAME);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if(inst.inline)
$target.children('.' + this._disableClass[useTR]).remove().end().
find('select').attr('disabled', '');
else {
target.disabled=false;
inst.siblings.filter('button.' + this._triggerClass[useTR]).
each(function(){ this.disabled=false; }).end().
filter('img.' + this._triggerClass[useTR]).
css({opacity: '1.0', cursor: ''});
}
this._disabledInputs=$.map(this._disabledInputs,
function(value){ return (value==target ? null:value); });
},
_disableDatepick: function(target){
var $target=$(target);
if(!$target.hasClass(this.markerClassName))
return;
var inst=$.data(target, PROP_NAME);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if(inst.inline){
var inline=$target.children('.' + this._inlineClass[useTR]);
var offset=inline.offset();
var relOffset={left: 0, top: 0};
inline.parents().each(function(){
if($(this).css('position')=='relative'){
relOffset=$(this).offset();
return false;
}});
$target.prepend('<div class="' + this._disableClass[useTR] + '" style="' +
'width: ' + inline.width() + 'px; height: ' + inline.height() +
'px; left: ' + (offset.left - relOffset.left) +
'px; top: ' + (offset.top - relOffset.top) + 'px;"></div>').
find('select').attr('disabled', 'disabled');
}else{
target.disabled=true;
inst.siblings.filter('button.' + this._triggerClass[useTR]).
each(function(){ this.disabled=true; }).end().
filter('img.' + this._triggerClass[useTR]).
css({opacity: '0.5', cursor: 'default'});
}
this._disabledInputs=$.map(this._disabledInputs,
function(value){ return (value==target ? null:value); });
this._disabledInputs.push(target);
},
_isDisabledDatepick: function(target){
return (!target ? false:$.inArray(target, this._disabledInputs) > -1);
},
_getInst: function(target){
try {
return $.data(target, PROP_NAME);
}
catch (err){
throw 'Missing instance data for this datepicker';
}},
_optionDatepick: function(target, name, value){
var inst=this._getInst(target);
if(arguments.length==2&&typeof name=='string'){
return (name=='defaults' ? $.extend({}, $.datepick._defaults) :
(inst ? (name=='all' ? $.extend({}, inst.settings) :
this._get(inst, name)):null));
}
var settings=name||{};
if(typeof name=='string'){
settings={};
settings[name]=value;
}
if(inst){
if(this._curInst==inst){
this._hideDatepick(null);
}
var dates=this._getDateDatepick(target);
extendRemove(inst.settings, settings);
this._autoSize(inst);
extendRemove(inst, {dates: []});
var blank=(!dates||isArray(dates));
if(isArray(dates))
for (var i=0; i < dates.length; i++)
if(dates[i]){
blank=false;
break;
}
if(!blank)
this._setDateDatepick(target, dates);
if(inst.inline)
$(target).children('div').removeClass(this._inlineClass.join(' ')).
addClass(this._inlineClass[this._get(inst, 'useThemeRoller') ? 1:0]);
this._updateDatepick(inst);
}},
_changeDatepick: function(target, name, value){
this._optionDatepick(target, name, value);
},
_refreshDatepick: function(target){
var inst=this._getInst(target);
if(inst){
this._updateDatepick(inst);
}},
_setDateDatepick: function(target, date, endDate){
var inst=this._getInst(target);
if(inst){
this._setDate(inst, date, endDate);
this._updateDatepick(inst);
this._updateAlternate(inst);
}},
_getDateDatepick: function(target){
var inst=this._getInst(target);
if(inst&&!inst.inline)
this._setDateFromField(inst);
return (inst ? this._getDate(inst):null);
},
_doKeyDown: function(event){
var inst=$.datepick._getInst(event.target);
inst.keyEvent=true;
var handled=true;
var isRTL=$.datepick._get(inst, 'isRTL');
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
if($.datepick._datepickerShowing)
switch (event.keyCode){
case 9:  $.datepick._hideDatepick(null, '');
break;
case 13: var sel=$('td.' + $.datepick._dayOverClass[useTR], inst.dpDiv);
if(sel.length==0)
sel=$('td.' + $.datepick._selectedClass[useTR] + ':first', inst.dpDiv);
if(sel[0])
$.datepick._selectDay(sel[0], event.target, inst.cursorDate.getTime());
else
$.datepick._hideDatepick(null, $.datepick._get(inst, 'duration'));
break;
case 27: $.datepick._hideDatepick(null, $.datepick._get(inst, 'duration'));
break;
case 33: $.datepick._adjustDate(event.target, (event.ctrlKey ?
-$.datepick._get(inst, 'stepBigMonths') :
-$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 34: $.datepick._adjustDate(event.target, (event.ctrlKey ?
+$.datepick._get(inst, 'stepBigMonths') :
+$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 35: if(event.ctrlKey||event.metaKey)
$.datepick._clearDate(event.target);
handled=event.ctrlKey||event.metaKey;
break;
case 36: if(event.ctrlKey||event.metaKey)
$.datepick._gotoToday(event.target);
handled=event.ctrlKey||event.metaKey;
break;
case 37: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, (isRTL ? +1:-1), 'D');
handled=event.ctrlKey||event.metaKey;
if(event.originalEvent.altKey)
$.datepick._adjustDate(event.target,
(event.ctrlKey ? -$.datepick._get(inst, 'stepBigMonths') :
-$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 38: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, -7, 'D');
handled=event.ctrlKey||event.metaKey;
break;
case 39: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, (isRTL ? -1:+1), 'D');
handled=event.ctrlKey||event.metaKey;
if(event.originalEvent.altKey)
$.datepick._adjustDate(event.target,
(event.ctrlKey ? +$.datepick._get(inst, 'stepBigMonths') :
+$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 40: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, +7, 'D');
handled=event.ctrlKey||event.metaKey;
break;
default: handled=false;
}
else if(event.keyCode==36&&event.ctrlKey)
$.datepick._showDatepick(this);
else
handled=false;
if(handled){
event.preventDefault();
event.stopPropagation();
}
inst.ctrlKey=(event.keyCode < 48);
return !handled;
},
_doKeyPress: function(event){
var inst=$.datepick._getInst(event.target);
if($.datepick._get(inst, 'constrainInput')){
var chars=$.datepick._possibleChars(inst);
var chr=String.fromCharCode(event.keyCode||event.charCode);
return inst.ctrlKey||(chr < ' '||!chars||chars.indexOf(chr) > -1);
}},
_doKeyUp: function(event){
var inst=$.datepick._getInst(event.target);
if(inst.input.val()!=inst.lastVal){
try {
var separator=($.datepick._get(inst, 'rangeSelect') ?
$.datepick._get(inst, 'rangeSeparator') :
($.datepick._get(inst, 'multiSelect') ?
$.datepick._get(inst, 'multiSeparator'):''));
var dates=(inst.input ? inst.input.val():'');
dates=(separator ? dates.split(separator):[dates]);
var ok=true;
for (var i=0; i < dates.length; i++){
if(!$.datepick.parseDate($.datepick._get(inst, 'dateFormat'),
dates[i], $.datepick._getFormatConfig(inst))){
ok=false;
break;
}}
if(ok){
$.datepick._setDateFromField(inst);
$.datepick._updateAlternate(inst);
$.datepick._updateDatepick(inst);
}}
catch (event){
}}
return true;
},
_possibleChars: function (inst){
var dateFormat=$.datepick._get(inst, 'dateFormat');
var chars=($.datepick._get(inst, 'rangeSelect') ?
$.datepick._get(inst, 'rangeSeparator') :
($.datepick._get(inst, 'multiSelect') ?
$.datepick._get(inst, 'multiSeparator'):''));
var literal=false;
for (var iFormat=0; iFormat < dateFormat.length; iFormat++)
if(literal)
if(dateFormat.charAt(iFormat)=="'"&&!lookAhead("'"))
literal=false;
else
chars +=dateFormat.charAt(iFormat);
else
switch (dateFormat.charAt(iFormat)){
case 'd': case 'm': case 'y': case '@':
chars +='0123456789';
break;
case 'D': case 'M':
return null;
case "'":
if(lookAhead("'"))
chars +="'";
else
literal=true;
break;
default:
chars +=dateFormat.charAt(iFormat);
}
return chars;
},
_doMouseOver: function(td, id, timestamp){
var inst=$.datepick._getInst($('#' + id)[0]);
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
if($(td).find('a').length)
$(td).parents('tbody').find('td').
removeClass($.datepick._dayOverClass[useTR]).end().end().
addClass($.datepick._dayOverClass[useTR]);
if($.datepick._get(inst, 'highlightWeek'))
$(td).parent().parent().find('tr').
removeClass($.datepick._weekOverClass[useTR]).end().end().
addClass($.datepick._weekOverClass[useTR]);
if($(td).text()){
var date=new Date(timestamp);
if($.datepick._get(inst, 'showStatus')){
var status=($.datepick._get(inst, 'statusForDate').apply((inst.input ? inst.input[0]:null), [date, inst]) ||
$.datepick._get(inst, 'initStatus'));
$('#' + $.datepick._statusId[useTR] + id).html(status);
}
if($.datepick._get(inst, 'onHover'))
$.datepick._doHover(td, '#' + id, date.getFullYear(), date.getMonth());
}},
_doMouseOut: function(td, id){
var inst=$.datepick._getInst($('#' + id)[0]);
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
$(td).removeClass($.datepick._dayOverClass[useTR]).
removeClass($.datepick._weekOverClass[useTR]);
if($.datepick._get(inst, 'showStatus'))
$('#' + $.datepick._statusId[useTR] + id).html($.datepick._get(inst, 'initStatus'));
if($.datepick._get(inst, 'onHover'))
$.datepick._doHover(td, '#' + id);
},
_doHover: function(td, id, year, month){
var inst=this._getInst($(id)[0]);
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
var onHover=this._get(inst, 'onHover');
var temp_daylight_day=($(td).find('a').length) ? new Date(year, month, $(td).find('a').text()):null;
temp_daylight_day=(( null===temp_daylight_day)&&($(td).find('span').length) ) ? new Date(year, month, $(td).find('span').text()):temp_daylight_day;
var date=(year ?
this._daylightSavingAdjust(temp_daylight_day):null);
onHover.apply((inst.input ? inst.input[0]:null),
[(date ? this._formatDate(inst, date):''), date, inst]);
},
_showDatepick: function(input){
input=input.target||input;
if($.datepick._isDisabledDatepick(input)||$.datepick._lastInput==input)
return;
var inst=$.datepick._getInst(input);
var beforeShow=$.datepick._get(inst, 'beforeShow');
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]):{}));
$.datepick._hideDatepick(null, '');
$.datepick._lastInput=input;
$.datepick._setDateFromField(inst);
if($.datepick._inDialog)
input.value='';
if(!$.datepick._pos){
$.datepick._pos=$.datepick._findPos(input);
$.datepick._pos[1] +=input.offsetHeight;
}
var isFixed=false;
$(input).parents().each(function(){
isFixed |=$(this).css('position')=='fixed';
return !isFixed;
});
if(isFixed&&$.browser_is_supported_datepick.opera){
$.datepick._pos[0] -=document.documentElement.scrollLeft;
$.datepick._pos[1] -=document.documentElement.scrollTop;
}
var offset={left: $.datepick._pos[0], top: $.datepick._pos[1]};
$.datepick._pos=null;
inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
$.datepick._updateDatepick(inst);
inst.dpDiv.width($.datepick._getNumberOfMonths(inst)[1] *
$('.' + $.datepick._oneMonthClass[useTR], inst.dpDiv).width());
offset=$.datepick._checkOffset(inst, offset, isFixed);
inst.dpDiv.css({position: ($.datepick._inDialog&&$.blockUI ?
'static':(isFixed ? 'fixed':'absolute')), display: 'none',
left: offset.left + 'px', top: offset.top + 'px'});
if(!inst.inline){
var showAnim=$.datepick._get(inst, 'showAnim')||'show';
var duration=$.datepick._get(inst, 'duration');
var postProcess=function(){
$.datepick._datepickerShowing=true;
var borders=$.datepick._getBorders(inst.dpDiv);
inst.dpDiv.find('iframe.' + $.datepick._coverClass[useTR]).
css({left: -borders[0], top: -borders[1],
width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
};
if($.effects&&$.effects[showAnim])
inst.dpDiv.show(showAnim, $.datepick._get(inst, 'showOptions'), duration, postProcess);
else
inst.dpDiv[showAnim](duration, postProcess);
if(duration=='')
postProcess();
if(inst.input[0].type!='hidden')
$(inst.input).trigger('focus');
$.datepick._curInst=inst;
}},
_updateDatepick: function(inst){
if(null===inst){
return;
}
var borders=this._getBorders(inst.dpDiv);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
inst.dpDiv.empty().append(this._generateHTML(inst)).
find('iframe.' + this._coverClass[useTR]).
css({left: -borders[0], top: -borders[1],
width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
var numMonths=this._getNumberOfMonths(inst);
if(!inst.inline)
inst.dpDiv.attr('id', this._mainDivId[useTR]);
if(!inst.inline) inst.dpDiv.attr('class', 'datepick-inline');
inst.dpDiv.removeClass(this._mainDivClass[1 - useTR]).
addClass(this._mainDivClass[useTR]).
removeClass(this._multiClass.join(' ')).
addClass(numMonths[0]!=1||numMonths[1]!=1 ? this._multiClass[useTR]:'').
removeClass(this._rtlClass.join(' ')).
addClass(this._get(inst, 'isRTL') ? this._rtlClass[useTR]:'');
if(inst.input&&inst.input[0].type!='hidden'&&inst==$.datepick._curInst)
$(inst.input).trigger('focus');
var resource_id=this._get(inst, 'wpbc_resource_id');
if(resource_id > 0){
$('body').trigger('wpbc_datepick_inline_calendar_refresh'
, [
resource_id
, inst
]
);
}},
_getBorders: function(elem){
var convert=function(value){
var extra=($.browser_is_supported_datepick.msie ? 1:0);
return {thin: 1 + extra, medium: 3 + extra, thick: 5 + extra}[value]||value;
};
return [parseFloat(convert(elem.css('border-left-width'))),
parseFloat(convert(elem.css('border-top-width')))];
},
_checkOffset: function(inst, offset, isFixed){
var alignment=this._get(inst, 'alignment');
var isRTL=this._get(inst, 'isRTL');
var pos=inst.input ? this._findPos(inst.input[0]):null;
var browserWidth=document.documentElement.clientWidth;
var browserHeight=document.documentElement.clientHeight;
if(browserWidth==0)
return offset;
var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;
var scrollY=document.documentElement.scrollTop||document.body.scrollTop;
var above=pos[1] - (this._inDialog ? 0:inst.dpDiv.outerHeight()) -
(isFixed&&$.browser_is_supported_datepick.opera ? document.documentElement.scrollTop:0);
var below=offset.top;
var alignL=offset.left;
var alignR=pos[0] + (inst.input ? inst.input.outerWidth():0) - inst.dpDiv.outerWidth() -
(isFixed&&$.browser_is_supported_datepick.opera ? document.documentElement.scrollLeft:0);
var tooWide=(offset.left + inst.dpDiv.outerWidth() - scrollX) > browserWidth;
var tooHigh=(offset.top + inst.dpDiv.outerHeight() - scrollY) > browserHeight;
if(alignment=='topLeft'){
offset={left: alignL, top: above};}
else if(alignment=='topRight'){
offset={left: alignR, top: above};}
else if(alignment=='bottomLeft'){
offset={left: alignL, top: below};}
else if(alignment=='bottomRight'){
offset={left: alignR, top: below};}
else if(alignment=='top'){
offset={left: (isRTL||tooWide ? alignR:alignL), top: above};}else{
offset={left: (isRTL||tooWide ? alignR:alignL),
top: (tooHigh ? above:below)};}
offset.left=Math.max((isFixed ? 0:scrollX), offset.left - (isFixed ? scrollX:0));
offset.top=Math.max((isFixed ? 0:scrollY), offset.top - (isFixed ? scrollY:0));
return offset;
},
_findPos: function(elem){
while (elem&&(elem.type=='hidden'||elem.nodeType!=1)){
elem=elem.nextSibling;
}
var position=$(elem).offset();
return [position.left, position.top];
},
_hideDatepick: function(input, duration){
var inst=this._curInst;
if(!inst||(input&&inst!=$.data(input, PROP_NAME)))
return false;
var rangeSelect=this._get(inst, 'rangeSelect');
if(rangeSelect&&inst.stayOpen)
this._updateInput('#' + inst.id);
inst.stayOpen=false;
if(this._datepickerShowing){
duration=(duration!=null ? duration:this._get(inst, 'duration'));
var showAnim=this._get(inst, 'showAnim');
var postProcess=function(){
$.datepick._tidyDialog(inst);
};
if(duration!=''&&$.effects&&$.effects[showAnim])
inst.dpDiv.hide(showAnim, $.datepick._get(inst, 'showOptions'),
duration, postProcess);
else
inst.dpDiv[(duration=='' ? 'hide':(showAnim=='slideDown' ? 'slideUp' :
(showAnim=='fadeIn' ? 'fadeOut':'hide')))](duration, postProcess);
if(duration=='')
this._tidyDialog(inst);
var onClose=this._get(inst, 'onClose');
if(onClose)
onClose.apply((inst.input ? inst.input[0]:null),
[(inst.input ? inst.input.val():''), this._getDate(inst), inst]);
this._datepickerShowing=false;
this._lastInput=null;
inst.settings.prompt=null;
if(this._inDialog){
this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });
this.dpDiv.removeClass(this._dialogClass[this._get(inst, 'useThemeRoller') ? 1:0]);
if($.blockUI){
$.unblockUI();
$('body').append(this.dpDiv);
}}
this._inDialog=false;
}
this._curInst=null;
return false;
},
_tidyDialog: function(inst){
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
inst.dpDiv.removeClass(this._dialogClass[useTR]).off('.datepick');
$('.' + this._promptClass[useTR], inst.dpDiv).remove();
},
_checkExternalClick: function(event){
if(!$.datepick._curInst)
return;
var $target=$(event.target);
var useTR=$.datepick._get($.datepick._curInst, 'useThemeRoller') ? 1:0;
if(!$target.parents().addBack().is('#' + $.datepick._mainDivId[useTR]) &&
!$target.hasClass($.datepick.markerClassName) &&
!$target.parents().addBack().hasClass($.datepick._triggerClass[useTR]) &&
$.datepick._datepickerShowing&&!($.datepick._inDialog&&$.blockUI))
$.datepick._hideDatepick(null, '');
},
_adjustDate: function(id, offset, period){
var inst=this._getInst($(id)[0]);
this._adjustInstDate(inst, offset +
(period=='M' ? this._get(inst, 'showCurrentAtPos'):0),
period);
this._updateDatepick(inst);
return false;
},
_gotoToday: function(id){
var target=$(id);
var inst=this._getInst(target[0]);
if(this._get(inst, 'gotoCurrent')&&inst.dates[0])
inst.cursorDate=new Date(inst.dates[0].getTime());
else
inst.cursorDate=this._daylightSavingAdjust(new Date());
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
this._notifyChange(inst);
this._adjustDate(target);
return false;
},
_selectMonthYear: function(id, select, period){
var target=$(id);
var inst=this._getInst(target[0]);
inst.selectingMonthYear=false;
var value=parseInt(select.options[select.selectedIndex].value, 10);
inst['selected' + (period=='M' ? 'Month':'Year')] =
inst['draw' + (period=='M' ? 'Month':'Year')]=value;
inst.cursorDate.setDate(Math.min(inst.cursorDate.getDate(),
$.datepick._getDaysInMonth(inst.drawYear, inst.drawMonth)));
inst.cursorDate['set' + (period=='M' ? 'Month':'FullYear')](value);
this._notifyChange(inst);
this._adjustDate(target);
},
_clickMonthYear: function(id){
var inst=this._getInst($(id)[0]);
if(inst.input&&inst.selectingMonthYear&&!$.browser_is_supported_datepick.msie)
$(inst.input).trigger('focus');
inst.selectingMonthYear = !inst.selectingMonthYear;
},
_changeFirstDay: function(id, day){
var inst=this._getInst($(id)[0]);
inst.settings.firstDay=day;
this._updateDatepick(inst);
return false;
},
_selectDay: function(td, id, timestamp){
var inst=this._getInst($(id)[0]);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if($(td).hasClass(this._unselectableClass[useTR]))
return false;
var rangeSelect=this._get(inst, 'rangeSelect');
var multiSelect=this._get(inst, 'multiSelect');
if(rangeSelect)
inst.stayOpen = !inst.stayOpen;
else if(multiSelect)
inst.stayOpen=true;
if(inst.stayOpen){
$('.datepick td', inst.dpDiv).removeClass(this._selectedClass[useTR]);
$(td).addClass(this._selectedClass[useTR]);
}
inst.cursorDate=this._daylightSavingAdjust(new Date(timestamp));
var date=new Date(inst.cursorDate.getTime());
if(rangeSelect&&!inst.stayOpen)
inst.dates[1]=date;
else if(multiSelect){
var pos=-1;
for (var i=0; i < inst.dates.length; i++)
if(inst.dates[i]&&date.getTime()==inst.dates[i].getTime()){
pos=i;
break;
}
if(pos > -1)
inst.dates.splice(pos, 1);
else if(inst.dates.length < multiSelect){
if(inst.dates[0])
inst.dates.push(date);
else
inst.dates=[date];
inst.stayOpen=(inst.dates.length!=multiSelect);
}}
else
inst.dates=[date];
this._updateInput(id);
if(inst.stayOpen)
this._updateDatepick(inst);
else if((rangeSelect||multiSelect)&&inst.inline)
this._updateDatepick(inst);
return false;
},
_clearDate: function(id){
var target=$(id);
var inst=this._getInst(target[0]);
if(this._get(inst, 'mandatory'))
return false;
inst.stayOpen=false;
inst.dates=(this._get(inst, 'showDefault') ?
[this._getDefaultDate(inst)]:[]);
this._updateInput(target);
return false;
},
_updateInput: function(id){
var inst=this._getInst($(id)[0]);
var dateStr=this._showDate(inst);
this._updateAlternate(inst);
var onSelect=this._get(inst, 'onSelect');
if(onSelect)
onSelect.apply((inst.input ? inst.input[0]:null),
[dateStr, this._getDate(inst), inst]);
else if(inst.input)
inst.input.trigger('change');
if(inst.inline)
this._updateDatepick(inst);
else if(!inst.stayOpen){
this._hideDatepick(null, this._get(inst, 'duration'));
this._lastInput=inst.input[0];
if(typeof(inst.input[0])!='object')
$(inst.input).trigger('focus');		//FixIn: 8.7.11.12	// Restore focus
this._lastInput=null;
}
return false;
},
_showDate: function(inst){
var dateStr='';
if(inst.input){
dateStr=(inst.dates.length==0 ? '':this._formatDate(inst, inst.dates[0]));
if(dateStr){
if(this._get(inst, 'rangeSelect'))
dateStr +=this._get(inst, 'rangeSeparator') +
this._formatDate(inst, inst.dates[1]||inst.dates[0]);
else if(this._get(inst, 'multiSelect'))
for (var i=1; i < inst.dates.length; i++)
dateStr +=this._get(inst, 'multiSeparator') +
this._formatDate(inst, inst.dates[i]);
}
inst.input.val(dateStr);
}
return dateStr;
},
_updateAlternate: function(inst){
var altField=this._get(inst, 'altField');
if(altField){
var altFormat=this._get(inst, 'altFormat')||this._get(inst, 'dateFormat');
var settings=this._getFormatConfig(inst);
var dateStr=this.formatDate(altFormat, inst.dates[0], settings);
if(dateStr&&this._get(inst, 'rangeSelect'))
dateStr +=this._get(inst, 'rangeSeparator') + this.formatDate(altFormat, inst.dates[1]||inst.dates[0], settings);
else if(this._get(inst, 'multiSelect'))
for (var i=1; i < inst.dates.length; i++)
dateStr +=this._get(inst, 'multiSeparator') +
this.formatDate(altFormat, inst.dates[i], settings);
$(altField).val(dateStr);
}},
noWeekends: function(date){
return [(date.getDay()||7) < 6, ''];
},
iso8601Week: function(date){
var checkDate=new Date(date.getTime());
checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay()||7));
var time=checkDate.getTime();
checkDate.setMonth(0);
checkDate.setDate(1);
return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
},
dateStatus: function(date, inst){
return $.datepick.formatDate($.datepick._get(inst, 'dateStatus'),
date, $.datepick._getFormatConfig(inst));
},
parseDate: function (format, value, settings){
if(format==null||value==null)
throw 'Invalid arguments';
value=(typeof value=='object' ? value.toString():value + '');
if(value=='')
return null;
settings=settings||{};
var shortYearCutoff=settings.shortYearCutoff||this._defaults.shortYearCutoff;
shortYearCutoff=(typeof shortYearCutoff!='string' ? shortYearCutoff :
new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
var dayNamesShort=settings.dayNamesShort||this._defaults.dayNamesShort;
var dayNames=settings.dayNames||this._defaults.dayNames;
var monthNamesShort=settings.monthNamesShort||this._defaults.monthNamesShort;
var monthNames=settings.monthNames||this._defaults.monthNames;
var year=-1;
var month=-1;
var day=-1;
var doy=-1;
var literal=false;
var lookAhead=function(match){
var matches=(iFormat + 1 < format.length&&format.charAt(iFormat + 1)==match);
if(matches)
iFormat++;
return matches;
};
var getNumber=function(match){
lookAhead(match);
var size=(match=='@' ? 14:(match=='!' ? 20 :
(match=='y' ? 4:(match=='o' ? 3:2))));
var digits=new RegExp('^\\d{1,' + size + '}');
var num=value.substring(iValue).match(digits);
if(!num)
throw 'Missing number at position ' + iValue;
iValue +=num[0].length;
return parseInt(num[0], 10);
};
var getName=function(match, shortNames, longNames){
var names=(lookAhead(match) ? longNames:shortNames);
for (var i=0; i < names.length; i++){
if(value.substr(iValue, names[i].length)==names[i]){
iValue +=names[i].length;
return i + 1;
}}
throw 'Unknown name at position ' + iValue;
};
var checkLiteral=function(){
if(value.charAt(iValue)!=format.charAt(iFormat))
throw 'Unexpected literal at position ' + iValue;
iValue++;
};
var iValue=0;
for (var iFormat=0; iFormat < format.length; iFormat++){
if(literal)
if(format.charAt(iFormat)=="'"&&!lookAhead("'"))
literal=false;
else
checkLiteral();
else
switch (format.charAt(iFormat)){
case 'd':
day=getNumber('d');
break;
case 'D':
getName('D', dayNamesShort, dayNames);
break;
case 'o':
doy=getNumber('o');
break;
case 'w':
getNumber('w');
break;
case 'm':
month=getNumber('m');
break;
case 'M':
month=getName('M', monthNamesShort, monthNames);
break;
case 'y':
year=getNumber('y');
break;
case '@':
var date=new Date(getNumber('@'));
year=date.getFullYear();
month=date.getMonth() + 1;
day=date.getDate();
break;
case '!':
var date=new Date((getNumber('!') - this._ticksTo1970) / 10000);
year=date.getFullYear();
month=date.getMonth() + 1;
day=date.getDate();
break;
case "'":
if(lookAhead("'"))
checkLiteral();
else
literal=true;
break;
default:
checkLiteral();
}}
if(iValue < value.length)
throw 'Additional text found at end';
if(year==-1)
year=new Date().getFullYear();
else if(year < 100)
year +=(shortYearCutoff==-1 ? 1900:new Date().getFullYear() -
new Date().getFullYear() % 100 - (year <=shortYearCutoff ? 0:100));
if(doy > -1){
month=1;
day=doy;
do {
var dim=this._getDaysInMonth(year, month - 1);
if(day <=dim)
break;
month++;
day -=dim;
} while (true);
}
var date=this._daylightSavingAdjust(new Date(year, month - 1, day));
if(date.getFullYear()!=year||date.getMonth() + 1!=month||date.getDate()!=day)
throw 'Invalid date';
return date;
},
ATOM: 'yy-mm-dd',
COOKIE: 'D, dd M yy',
ISO_8601: 'yy-mm-dd',
RFC_822: 'D, d M y',
RFC_850: 'DD, dd-M-y',
RFC_1036: 'D, d M y',
RFC_1123: 'D, d M yy',
RFC_2822: 'D, d M yy',
RSS: 'D, d M y',
TICKS: '!',
TIMESTAMP: '@',
W3C: 'yy-mm-dd',
_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
formatDate: function (format, date, settings){
if(!date)
return '';
settings=settings||{};
var dayNamesShort=settings.dayNamesShort||this._defaults.dayNamesShort;
var dayNames=settings.dayNames||this._defaults.dayNames;
var monthNamesShort=settings.monthNamesShort||this._defaults.monthNamesShort;
var monthNames=settings.monthNames||this._defaults.monthNames;
var calculateWeek=settings.calculateWeek||this._defaults.calculateWeek;
var lookAhead=function(match){
var matches=(iFormat + 1 < format.length&&format.charAt(iFormat + 1)==match);
if(matches)
iFormat++;
return matches;
};
var formatNumber=function(match, value, len){
var num='' + value;
if(lookAhead(match))
while (num.length < len)
num='0' + num;
return num;
};
var formatName=function(match, value, shortNames, longNames){
return (lookAhead(match) ? longNames[value]:shortNames[value]);
};
var output='';
var literal=false;
if(date)
for (var iFormat=0; iFormat < format.length; iFormat++){
if(literal)
if(format.charAt(iFormat)=="'"&&!lookAhead("'"))
literal=false;
else
output +=format.charAt(iFormat);
else
switch (format.charAt(iFormat)){
case 'd':
output +=formatNumber('d', date.getDate(), 2);
break;
case 'D':
output +=formatName('D', date.getDay(), dayNamesShort, dayNames);
break;
case 'o':
output +=formatNumber('o',
(date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3);
break;
case 'w':
output +=formatNumber('w', calculateWeek(date), 2);
break;
case 'm':
output +=formatNumber('m', date.getMonth() + 1, 2);
break;
case 'M':
output +=formatName('M', date.getMonth(), monthNamesShort, monthNames);
break;
case 'y':
output +=(lookAhead('y') ? date.getFullYear() :
(date.getFullYear() % 100 < 10 ? '0':'') + date.getFullYear() % 100);
break;
case '@':
output +=date.getTime();
break;
case '!':
output +=date.getTime() * 10000 + this._ticksTo1970;
break;
case "'":
if(lookAhead("'"))
output +="'";
else
literal=true;
break;
default:
output +=format.charAt(iFormat);
}}
return output;
},
_get: function(inst, name){
return inst.settings[name]!==undefined ?
inst.settings[name]:this._defaults[name];
},
_setDateFromField: function(inst){
var dateFormat=this._get(inst, 'dateFormat');
var rangeSelect=this._get(inst, 'rangeSelect');
var multiSelect=this._get(inst, 'multiSelect');
inst.lastVal=(inst.input ? inst.input.val():'');
var dates=inst.lastVal;
dates=(rangeSelect ? dates.split(this._get(inst, 'rangeSeparator')) :
(multiSelect ? dates.split(this._get(inst, 'multiSeparator')):[dates]));
inst.dates=[];
var settings=this._getFormatConfig(inst);
for (var i=0; i < dates.length; i++)
try {
inst.dates[i]=this.parseDate(dateFormat, dates[i], settings);
}
catch (event){
inst.dates[i]=null;
}
for (var i=inst.dates.length - 1; i >=0; i--)
if(!inst.dates[i])
inst.dates.splice(i, 1);
if(rangeSelect&&inst.dates.length < 2)
inst.dates[1]=inst.dates[0];
if(multiSelect&&inst.dates.length > multiSelect)
inst.dates.splice(multiSelect, inst.dates.length);
inst.cursorDate=new Date((inst.dates[0]||this._getDefaultDate(inst)).getTime());
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
this._adjustInstDate(inst);
},
_getDefaultDate: function(inst){
return this._restrictMinMax(inst,
this._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));
},
_determineDate: function(inst, date, defaultDate){
var offsetNumeric=function(offset){
var date=new Date();
date.setDate(date.getDate() + offset);
return date;
};
var offsetString=function(offset){
try {
return $.datepick.parseDate($.datepick._get(inst, 'dateFormat'),
offset, $.datepick._getFormatConfig(inst));
}
catch (e){
}
var date=(offset.toLowerCase().match(/^c/) ?
$.datepick._getDate(inst):null)||new Date();
var year=date.getFullYear();
var month=date.getMonth();
var day=date.getDate();
var pattern=/([+-]?[0-9]+)\s*(d|w|m|y)?/g;
var matches=pattern.exec(offset.toLowerCase());
while (matches){
switch (matches[2]||'d'){
case 'd':
day +=parseInt(matches[1], 10); break;
case 'w':
day +=parseInt(matches[1], 10) * 7; break;
case 'm':
month +=parseInt(matches[1], 10);
day=Math.min(day, $.datepick._getDaysInMonth(year, month));
break;
case 'y':
year +=parseInt(matches[1], 10);
day=Math.min(day, $.datepick._getDaysInMonth(year, month));
break;
}
matches=pattern.exec(offset.toLowerCase());
}
return new Date(year, month, day);
};
date=(date==null ? defaultDate:(typeof date=='string' ? offsetString(date) :
(typeof date=='number' ? (isNaN(date)||date==Infinity||date==-Infinity ?
defaultDate:offsetNumeric(date)):date)));
date=(date&&(date.toString()=='Invalid Date' ||
date.toString()=='NaN') ? defaultDate:date);
if(date){
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
date.setMilliseconds(0);
}
return this._daylightSavingAdjust(date);
},
_daylightSavingAdjust: function(date){
if(!date) return null;
date.setHours(date.getHours() > 12 ? date.getHours() + 2:0);
return date;
},
_setDate: function(inst, date, endDate){
date=(!date ? []:(isArray(date) ? date:[date]));
if(endDate)
date.push(endDate);
var clear=(date.length==0);
var origMonth=inst.cursorDate.getMonth();
var origYear=inst.cursorDate.getFullYear();
inst.dates=[this._restrictMinMax(inst, this._determineDate(inst, date[0], new Date()))];
inst.cursorDate=new Date(inst.dates[0].getTime());
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
if(this._get(inst, 'rangeSelect'))
inst.dates[1]=(date.length < 1 ? inst.dates[0] :
this._restrictMinMax(inst, this._determineDate(inst, date[1], null)));
else if(this._get(inst, 'multiSelect'))
for (var i=1; i < date.length; i++)
inst.dates[i]=this._restrictMinMax(inst, this._determineDate(inst, date[i], null));
if(origMonth!=inst.cursorDate.getMonth()||origYear!=inst.cursorDate.getFullYear())
this._notifyChange(inst);
this._adjustInstDate(inst);
this._showDate(inst);
},
_getDate: function(inst){
var startDate=(inst.input&&inst.input.val()=='' ? null:inst.dates[0]);
if(this._get(inst, 'rangeSelect'))
return (startDate ? [inst.dates[0], inst.dates[1]||inst.dates[0]]:[null, null]);
else if(this._get(inst, 'multiSelect'))
return inst.dates.slice(0, inst.dates.length);
else
return startDate;
},
_generateHTML: function(inst){
var today=new Date();
today=this._daylightSavingAdjust(new Date(today.getFullYear(), today.getMonth(), today.getDate()));
var showStatus=this._get(inst, 'showStatus');
var initStatus=this._get(inst, 'initStatus')||'&#xa0;';
var isRTL=this._get(inst, 'isRTL');
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
var clear=(this._get(inst, 'mandatory') ? '' :
'<div class="' + this._clearClass[useTR] + '"><a href="javascript:void(0)" ' +
'onclick="jQuery.datepick._clearDate(\'#' + inst.id + '\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'clearStatus'), initStatus) +
'>' + this._get(inst, 'clearText') + '</a></div>');
var controls='<div class="' + this._controlClass[useTR] + '">' + (isRTL ? '':clear) +
'<div class="' + this._closeClass[useTR] + '"><a href="javascript:void(0)" ' +
'onclick="jQuery.datepick._hideDatepick();"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'closeStatus'), initStatus) +
'>' + this._get(inst, 'closeText') + '</a></div>' + (isRTL ? clear:'')  + '</div>';
var prompt=this._get(inst, 'prompt');
var closeAtTop=this._get(inst, 'closeAtTop');
var hideIfNoPrevNext=this._get(inst, 'hideIfNoPrevNext');
var navigationAsDateFormat=this._get(inst, 'navigationAsDateFormat');
var showBigPrevNext=this._get(inst, 'showBigPrevNext');
var numMonths=this._getNumberOfMonths(inst);
var showCurrentAtPos=this._get(inst, 'showCurrentAtPos');
var stepMonths=this._get(inst, 'stepMonths');
var stepBigMonths=this._get(inst, 'stepBigMonths');
var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);
var minDate=this._getMinMaxDate(inst, 'min', true);
var maxDate=this._getMinMaxDate(inst, 'max');
var drawMonth=inst.drawMonth - showCurrentAtPos;
var drawYear=inst.drawYear;
if(drawMonth < 0){
drawMonth +=12;
drawYear--;
}
if(maxDate){
var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
maxDraw=(minDate&&maxDraw < minDate ? minDate:maxDraw);
while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw){
drawMonth--;
if(drawMonth < 0){
drawMonth=11;
drawYear--;
}}
}
inst.drawMonth=drawMonth;
inst.drawYear=drawYear;
var prevText=this._get(inst, 'prevText');
prevText=(!navigationAsDateFormat ? prevText:this.formatDate(prevText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
this._getFormatConfig(inst)));
var prevBigText=(showBigPrevNext ? this._get(inst, 'prevBigText'):'');
prevBigText=(!navigationAsDateFormat ? prevBigText:this.formatDate(prevBigText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepBigMonths, 1)),
this._getFormatConfig(inst)));
var prev='<div class="' + this._prevClass[useTR] + '">' +
(this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
(showBigPrevNext ? '<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', -' + stepBigMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'prevBigStatus'), initStatus) +
'>' + prevBigText + '</a>':'') +
'<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', -' + stepMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'prevStatus'), initStatus) +
'>' + prevText + '</a>' :
(hideIfNoPrevNext ? '&#xa0;':(showBigPrevNext ? '<label>' + prevBigText + '</label>':'') +
'<label>' + prevText + '</label>')) + '</div>';
var nextText=this._get(inst, 'nextText');
nextText=(!navigationAsDateFormat ? nextText:this.formatDate(nextText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
this._getFormatConfig(inst)));
var nextBigText=(showBigPrevNext ? this._get(inst, 'nextBigText'):'');
nextBigText=(!navigationAsDateFormat ? nextBigText:this.formatDate(nextBigText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepBigMonths, 1)),
this._getFormatConfig(inst)));
var next='<div class="' + this._nextClass[useTR] + '">' +
(this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
'<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', +' + stepMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'nextStatus'), initStatus) +
'>' + nextText + '</a>' +
(showBigPrevNext ? '<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', +' + stepBigMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'nextBigStatus'), initStatus) +
'>' + nextBigText + '</a>':'') :
(hideIfNoPrevNext ? '&#xa0;':'<label>' + nextText + '</label>' +
(showBigPrevNext ? '<label>' + nextBigText + '</label>':''))) + '</div>';
var currentText=this._get(inst, 'currentText');
var gotoDate=(this._get(inst, 'gotoCurrent')&&inst.dates[0] ? inst.dates[0]:today);
currentText=(!navigationAsDateFormat ? currentText :
this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
var html=(closeAtTop&&!inst.inline ? controls:'');
html +='<div class="calendar-links">' + (isRTL ? next:prev)   ;
html +=(isRTL ? prev:next) + '</div>' ;
var firstDay=parseInt(this._get(inst, 'firstDay'), 10);
firstDay=(isNaN(firstDay) ? 0:firstDay);
var changeFirstDay=this._get(inst, 'changeFirstDay');
var dayNames=this._get(inst, 'dayNames');
var dayNamesShort=this._get(inst, 'dayNamesShort');
var dayNamesMin=this._get(inst, 'dayNamesMin');
var monthNames=this._get(inst, 'monthNames');
var beforeShowDay=this._get(inst, 'beforeShowDay');
var showOtherMonths=this._get(inst, 'showOtherMonths');
var selectOtherMonths=this._get(inst, 'selectOtherMonths');
var showWeeks=this._get(inst, 'showWeeks');
var calculateWeek=this._get(inst, 'calculateWeek')||this.iso8601Week;
var weekStatus=this._get(inst, 'weekStatus');
var status=(showStatus ? this._get(inst, 'dayStatus')||initStatus:'');
var dateStatus=this._get(inst, 'statusForDate')||this.dateStatus;
var defaultDate=this._getDefaultDate(inst);
for (var row=0; row < numMonths[0]; row++){
for (var col=0; col < numMonths[1]; col++){
var cursorDate=this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.cursorDate.getDate()));
html +='<div class="' + this._oneMonthClass[useTR] +
(col==0&&!useTR ? ' ' + this._newRowClass[useTR]:'') + '">' +
this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
cursorDate, row > 0||col > 0, useTR, showStatus, initStatus, monthNames) +
'<table class="' + this._tableClass[useTR] + '" cellpadding="0" cellspacing="0"><thead>' +
'<tr class="' + this._tableHeaderClass[useTR] + '">' + (showWeeks ? '<th' +
this._addStatus(useTR, showStatus, inst.id, weekStatus, initStatus) + '>' +
this._get(inst, 'weekHeader') + '</th>':'');
for (var dow=0; dow < 7; dow++){
var day=(dow + firstDay) % 7;
var dayStatus=(!showStatus||!changeFirstDay ? '' :
status.replace(/DD/, dayNames[day]).replace(/D/, dayNamesShort[day]));
html +='<th' + ((dow + firstDay + 6) % 7 < 5 ? '' :
' class="' + this._weekendClass[useTR] + '"') + '>' +
(!changeFirstDay ? '<span' +
this._addStatus(useTR, showStatus, inst.id, dayNames[day], initStatus) :
'<a href="javascript:void(0)" onclick="jQuery.datepick._changeFirstDay(\'#' +
inst.id + '\', ' + day + ');"' +
this._addStatus(useTR, showStatus, inst.id, dayStatus, initStatus)) +
' title="' + dayNames[day] + '">' +
dayNamesMin[day] + (changeFirstDay ? '</a>':'</span>') + '</th>';
}
html +='</tr></thead><tbody>';
var daysInMonth=this._getDaysInMonth(drawYear, drawMonth);
if(drawYear==inst.cursorDate.getFullYear()&&drawMonth==inst.cursorDate.getMonth())
inst.cursorDate.setDate(Math.min(inst.cursorDate.getDate(), daysInMonth));
var leadDays=(this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
var numRows=(isMultiMonth ? 6:Math.ceil((leadDays + daysInMonth) / 7));
var printDate=this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
for (var dRow=0; dRow < numRows; dRow++){
html +='<tr class="' + this._weekRowClass[useTR] + '">' +
(showWeeks ? '<td class="' + this._weekColClass[useTR] + '"' +
this._addStatus(useTR, showStatus, inst.id, weekStatus, initStatus) + '>' +
calculateWeek(printDate) + '</td>':'');
for (var dow=0; dow < 7; dow++){
var daySettings=(beforeShowDay ?
beforeShowDay.apply((inst.input ? inst.input[0]:null), [printDate]):[true, '']);
var otherMonth=(printDate.getMonth()!=drawMonth);
var unselectable=(otherMonth&&!selectOtherMonths)||!daySettings[0] ||
(minDate&&printDate < minDate)||(maxDate&&printDate > maxDate);
var selected=(this._get(inst, 'rangeSelect')&&inst.dates[0] &&
printDate.getTime() >=inst.dates[0].getTime() &&
printDate.getTime() <=(inst.dates[1]||inst.dates[0]).getTime());
for (var i=0; i < inst.dates.length; i++)
selected=selected||(inst.dates[i] &&
printDate.getTime()==inst.dates[i].getTime());
var empty=otherMonth&&!showOtherMonths;
html +='<td data-content="" class="' + this._dayClass[useTR] +
((dow + firstDay + 6) % 7 >=5 ? ' ' + this._weekendClass[useTR]:'') +
(otherMonth ? ' ' + this._otherMonthClass[useTR]:'') +
((printDate.getTime()==cursorDate.getTime() &&
drawMonth==inst.cursorDate.getMonth()&&inst.keyEvent) ||
(defaultDate.getTime()==printDate.getTime() &&
defaultDate.getTime()==cursorDate.getTime()) ?
' ' :'') + // Highlight selected day		// FixIn: 9.2.1.7.
(unselectable ? ' ' + this._unselectableClass[useTR] :
' ' + this._selectableClass[useTR]) +
(empty ? '':' ' + daySettings[1] +
(selected ? ' ' + this._selectedClass[useTR]:'') +
(printDate.getTime()==today.getTime() ? ' ' + this._todayClass[useTR]:'')) + '"' +
(!empty&&daySettings[2] ? ' title="' + daySettings[2] + '"':'') +
(false ? '':' onmouseover="' + 'jQuery.datepick._doMouseOver(this,\'' +
inst.id + '\',' + printDate.getTime() + ')"' +
' onmouseout="jQuery.datepick._doMouseOut(this,\'' + inst.id + '\')"' +
' onclick="jQuery.datepick._selectDay(this,\'#' +
inst.id + '\',' + printDate.getTime() + ')"') + '>';
html +='<div class="wpbc-cell-box">' +
'<div class="wpbc-diagonal-el">' +
'<div class="wpbc-co-out">' +
'<svg height="100%" width="100%" viewBox="0 0 100 100" preserveAspectRatio="none">' +
'<polygon points="0,0 0,99 99,0"></polygon>' +
'<polygon points="0,0 0,100 49,100 49,0"></polygon>' +
'</svg>' +
'</div>' +
'<div class="wpbc-co-in">' +
'<svg height="100%" width="100%" viewBox="0 0 98 98" preserveAspectRatio="none">' +
'<polygon points="0,99 99,99 99,0"></polygon>' +
'<polygon points="50,98 98,98 98,0 50,0"></polygon>' +
'</svg>' +
'</div>' +
'</div>' +
'<div class="date-cell-content">' +
'<div class="date-content-top">' +
(unselectable ? '':((typeof (wpbc_show_date_info_top)=='function') ? wpbc_show_date_info_top(inst.id, printDate.getTime()):'')) +
'</div>' +
(empty ? '&#xa0;':// Not showing other months // FixIn: 6.0.1.2.
(unselectable ? '<span>' + printDate.getDate()+ '</span>':'<a href="javascript:void(0)" >' + printDate.getDate() + '</a>')) +
'<div class="date-content-bottom">'+
(unselectable ? '':((typeof (wpbc_show_date_info_bottom)=='function') ? wpbc_show_date_info_bottom(inst.id, printDate.getTime()):'')) +
'</div>' +
'</div>' +
'</div>';
html +='</td>';
printDate.setDate(printDate.getDate() + 1);
printDate=this._daylightSavingAdjust(printDate);
}
html +='</tr>';
}
drawMonth++;
if(drawMonth > 11){
drawMonth=0;
drawYear++;
}
html +='</tbody></table></div>';
}
if(useTR)
html +='<div class="' + this._newRowClass[useTR] + '"></div>';
}
html +=(showStatus ? '<div style="clear: both;"></div><div id="' + this._statusId[useTR] +
inst.id +'" class="' + this._statusClass[useTR] + '">' + initStatus + '</div>':'') +
(!closeAtTop&&!inst.inline ? controls:'') +
'<div style="clear: both;"></div>' +
($.browser_is_supported_datepick.msie&&parseInt($.browser_is_supported_datepick.version, 10) < 7&&!inst.inline ?
'<iframe src="javascript:false;" class="' + this._coverClass[useTR] + '"></iframe>':'');
inst.keyEvent=false;
return html;
},
_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
cursorDate, secondary, useTR, showStatus, initStatus, monthNames){
var minDraw=this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1));
minDate=(minDate&&minDraw < minDate ? minDraw:minDate);
var changeMonth=this._get(inst, 'changeMonth');
var changeYear=this._get(inst, 'changeYear');
var showMonthAfterYear=this._get(inst, 'showMonthAfterYear');
var html='<div class="' + this._monthYearClass[useTR] + '">';
var monthHtml='';
if(secondary||!changeMonth)
monthHtml +='<span class="' + this._monthClass[useTR] + '">' +
monthNames[drawMonth] + '</span>';
else {
var inMinYear=(minDate&&minDate.getFullYear()==drawYear);
var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);
monthHtml +='<select class="' + this._monthSelectClass[useTR] + '" ' +
'onchange="jQuery.datepick._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
'onclick="jQuery.datepick._clickMonthYear(\'#' + inst.id + '\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'monthStatus'),
initStatus) + '>';
for (var month=0; month < 12; month++){
if((!inMinYear||month >=minDate.getMonth()) &&
(!inMaxYear||month <=maxDate.getMonth()))
monthHtml +='<option value="' + month + '"' +
(month==drawMonth ? ' selected="selected"':'') +
'>' + monthNames[month] + '</option>';
}
monthHtml +='</select>';
}
if(!showMonthAfterYear)
html +=monthHtml + (secondary||!changeMonth||!changeYear ? '&#xa0;':'');
if(secondary||!changeYear)
html +='<span class="' + this._yearClass[useTR] + '">' + drawYear + '</span>';
else {
var years=this._get(inst, 'yearRange').split(':');
var year=0;
var endYear=0;
if(years.length!=2){
year=drawYear - 10;
endYear=drawYear + 10;
}else if(years[0].charAt(0)=='+'||years[0].charAt(0)=='-'){
year=drawYear + parseInt(years[0], 10);
endYear=drawYear + parseInt(years[1], 10);
}else{
year=parseInt(years[0], 10);
endYear=parseInt(years[1], 10);
}
year=(minDate ? Math.max(year, minDate.getFullYear()):year);
endYear=(maxDate ? Math.min(endYear, maxDate.getFullYear()):endYear);
html +='<select class="' + this._yearSelectClass[useTR] + '" ' +
'onchange="jQuery.datepick._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
'onclick="jQuery.datepick._clickMonthYear(\'#' + inst.id + '\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'yearStatus'),
initStatus) + '>';
for (; year <=endYear; year++){
html +='<option value="' + year + '"' +
(year==drawYear ? ' selected="selected"':'') +
'>' + year + '</option>';
}
html +='</select>';
}
html +=this._get(inst, 'yearSuffix');
if(showMonthAfterYear)
html +=(secondary||!changeMonth||!changeYear ? '&#xa0;':'') + monthHtml;
html +='</div>';
return html;
},
_addStatus: function(useTR, showStatus, id, text, initStatus){
return (showStatus ? ' onmouseover="jQuery(\'#' + this._statusId[useTR] + id +
'\').html(\'' + (text||initStatus) + '\');" ' +
'onmouseout="jQuery(\'#' + this._statusId[useTR] + id +
'\').html(\'' + initStatus + '\');"':'');
},
_adjustInstDate: function(inst, offset, period){
var yearMonth=inst.drawYear + '/' + inst.drawMonth;
var year=inst.drawYear + (period=='Y' ? offset:0);
var month=inst.drawMonth + (period=='M' ? offset:0);
var day=Math.min(inst.cursorDate.getDate(), this._getDaysInMonth(year, month)) +
(period=='D' ? offset:0);
inst.cursorDate=this._restrictMinMax(inst,
this._daylightSavingAdjust(new Date(year, month, day)));
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
if(yearMonth!=inst.drawYear + '/' + inst.drawMonth)
this._notifyChange(inst);
},
_restrictMinMax: function(inst, date){
var minDate=this._getMinMaxDate(inst, 'min', true);
var maxDate=this._getMinMaxDate(inst, 'max');
date=(minDate&&date < minDate ? new Date(minDate.getTime()):date);
date=(maxDate&&date > maxDate ? new Date(maxDate.getTime()):date);
return date;
},
_notifyChange: function(inst){
var onChange=this._get(inst, 'onChangeMonthYear');
if(onChange)
onChange.apply((inst.input ? inst.input[0]:null),
[inst.cursorDate.getFullYear(), inst.cursorDate.getMonth() + 1,
this._daylightSavingAdjust(new Date(
inst.cursorDate.getFullYear(), inst.cursorDate.getMonth(), 1)), inst]);
},
_getNumberOfMonths: function(inst){
var numMonths=this._get(inst, 'numberOfMonths');
return (numMonths==null ? [1, 1] :
(typeof numMonths=='number' ? [1, numMonths]:numMonths));
},
_getMinMaxDate: function(inst, minMax, checkRange){
var date=this._determineDate(inst, this._get(inst, minMax + 'Date'), null);
var rangeMin=this._getRangeMin(inst);
return (checkRange&&rangeMin&&(!date||rangeMin > date) ? rangeMin:date);
},
_getRangeMin: function(inst){
return (this._get(inst, 'rangeSelect')&&inst.dates[0] &&
!inst.dates[1] ? inst.dates[0]:null);
},
_getDaysInMonth: function(year, month){
return 32 - new Date(year, month, 32).getDate();
},
_getFirstDayOfMonth: function(year, month){
return new Date(year, month, 1).getDay();
},
_canAdjustMonth: function(inst, offset, curYear, curMonth){
var numMonths=this._getNumberOfMonths(inst);
var date=this._daylightSavingAdjust(new Date(curYear,
curMonth + (offset < 0 ? offset:numMonths[0] * numMonths[1]), 1));
if(offset < 0)
date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
return this._isInRange(inst, date);
},
_isInRange: function(inst, date){
var minDate=this._getRangeMin(inst)||this._getMinMaxDate(inst, 'min');
var maxDate=this._getMinMaxDate(inst, 'max');
return ((!minDate||date >=minDate)&&(!maxDate||date <=maxDate));
},
_getFormatConfig: function(inst){
return {shortYearCutoff: this._get(inst, 'shortYearCutoff'),
dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};},
_formatDate: function(inst, year, month, day){
if(!year)
inst.dates[0]=new Date(inst.cursorDate.getTime());
var date=(year ? (typeof year=='object' ? year :
this._daylightSavingAdjust(new Date(year, month, day))):inst.dates[0]);
return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
}});
function extendRemove(target, props){
$.extend(target, props);
for (var name in props)
if(props[name]==null||props[name]==undefined)
target[name]=props[name];
return target;
};
function isArray(a){
return (a&&a.constructor==Array);
};
$.fn.datepick=function(options){
var otherArgs=Array.prototype.slice.call(arguments, 1);
if(typeof options=='string'&&(options=='isDisabled' ||
options=='getDate'||options=='settings'))
return $.datepick['_' + options + 'Datepick'].
apply($.datepick, [this[0]].concat(otherArgs));
if(options=='option'&&arguments.length==2&&typeof arguments[1]=='string')
return $.datepick['_' + options + 'Datepick'].
apply($.datepick, [this[0]].concat(otherArgs));
return this.each(function(){
typeof options=='string' ?
$.datepick['_' + options + 'Datepick'].
apply($.datepick, [this].concat(otherArgs)) :
$.datepick._attachDatepick(this, options);
});
};
$.datepick=new Datepick();
$(function(){
$(document).on('mousedown', $.datepick._checkExternalClick).find('body').append($.datepick.dpDiv);
});
})(jQuery);