!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../ie","../version","../widget"],e):e(jQuery)}(function(o){"use strict";var n=!1;return o(document).on("mouseup",function(){n=!1}),o.widget("ui.mouse",{version:"1.13.3",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.on("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).on("click."+this.widgetName,function(e){if(!0===o.data(e.target,t.widgetName+".preventClickEvent"))return o.removeData(e.target,t.widgetName+".preventClickEvent"),e.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){var t,i,s;if(!n)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),i=1===(this._mouseDownEvent=e).which,s=!("string"!=typeof(t=this).options.cancel||!e.target.nodeName)&&o(e.target).closest(this.options.cancel).length,i&&!s&&this._mouseCapture(e)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){t.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?e.preventDefault():(!0===o.data(e.target,this.widgetName+".preventClickEvent")&&o.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return t._mouseMove(e)},this._mouseUpDelegate=function(e){return t._mouseUp(e)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0)),!0},_mouseMove:function(e){if(this._mouseMoved){if(o.ui.ie&&(!document.documentMode||document.documentMode<9)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&o.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})});
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","./mouse","../keycode","../version","../widget"],e):e(jQuery)}(function(o){"use strict";return o.widget("ui.slider",o.ui.mouse,{version:"1.13.3",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,t=this.options,i=this.element.find(".ui-slider-handle"),s=[],a=t.values&&t.values.length||1;for(i.length>a&&(i.slice(a).remove(),i=i.slice(0,a)),e=i.length;e<a;e++)s.push("<span tabindex='0'></span>");this.handles=i.add(o(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){o(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:Array.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=o("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,a,n,t,h,l=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var t=Math.abs(i-l.values(e));(t<s||s===t&&(e===l._lastChangedValue||l.values(e)===u.min))&&(s=t,a=o(this),n=e)}),!1!==this._start(e,n))&&(this._mouseSliding=!0,this._handleIndex=n,this._addClass(a,null,"ui-state-active"),a.trigger("focus"),t=a.offset(),h=!o(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-t.left-a.width()/2,top:e.pageY-t.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,n,i),this._animateOff=!0)},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},t=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,t),!1},_mouseStop:function(e){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,e="horizontal"===this.orientation?(t=this.elementSize.width,e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),e=e/t;return(e=1<e?1:e)<0&&(e=0),"vertical"===this.orientation&&(e=1-e),t=this._valueMax()-this._valueMin(),e=this._valueMin()+e*t,this._trimAlignValue(e)},_uiHash:function(e,t,i){var s={handle:this.handles[e],handleIndex:e,value:void 0!==t?t:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==t?t:this.values(e),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(e,t){return this._trigger("start",e,this._uiHash(t))},_slide:function(e,t,i){var s,a=this.value(),n=this.values();this._hasMultipleValues()&&(s=this.values(t?0:1),a=this.values(t),2===this.options.values.length&&!0===this.options.range&&(i=0===t?Math.min(s,i):Math.max(s,i)),n[t]=i),i!==a&&!1!==this._trigger("slide",e,this._uiHash(t,i,n))&&(this._hasMultipleValues()?this.values(t,i):this.value(i))},_stop:function(e,t){this._trigger("stop",e,this._uiHash(t))},_change:function(e,t){this._keySliding||this._mouseSliding||(this._lastChangedValue=t,this._trigger("change",e,this._uiHash(t)))},value:function(e){if(!arguments.length)return this._value();this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0)},values:function(e,t){var i,s,a;if(1<arguments.length)this.options.values[e]=this._trimAlignValue(t),this._refreshValue(),this._change(null,e);else{if(!arguments.length)return this._values();if(!Array.isArray(e))return this._hasMultipleValues()?this._values(e):this.value();for(i=this.options.values,s=e,a=0;a<i.length;a+=1)i[a]=this._trimAlignValue(s[a]),this._change(null,a);this._refreshValue()}},_setOption:function(e,t){var i,s=0;switch("range"===e&&!0===this.options.range&&("min"===t?(this.options.value=this._values(0),this.options.values=null):"max"===t&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(e,t),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(t),this.handles.css("horizontal"===t?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(e){this._super(e),this._toggleClass(null,"ui-state-disabled",!!e)},_value:function(){var e=this.options.value;return this._trimAlignValue(e)},_values:function(e){var t,i;if(arguments.length)return e=this.options.values[e],this._trimAlignValue(e);if(this._hasMultipleValues()){for(t=this.options.values.slice(),i=0;i<t.length;i+=1)t[i]=this._trimAlignValue(t[i]);return t}return[]},_trimAlignValue:function(e){var t,i;return e<=this._valueMin()?this._valueMin():e>=this._valueMax()?this._valueMax():(t=0<this.options.step?this.options.step:1,i=e-(e=(e-this._valueMin())%t),2*Math.abs(e)>=t&&(i+=0<e?t:-t),parseFloat(i.toFixed(5)))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step;(e=Math.round((e-t)/i)*i+t)>this.options.max&&(e-=i),this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return e=null!==this.options.min?Math.max(e,this._precisionOf(this.options.min)):e},_precisionOf:function(e){var e=e.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(e){"vertical"===e&&this.range.css({width:"",left:""}),"horizontal"===e&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var t,i,e,s,a,n=this.options.range,h=this.options,l=this,u=!this._animateOff&&h.animate,r={};this._hasMultipleValues()?this.handles.each(function(e){i=(l.values(e)-l._valueMin())/(l._valueMax()-l._valueMin())*100,r["horizontal"===l.orientation?"left":"bottom"]=i+"%",o(this).stop(1,1)[u?"animate":"css"](r,h.animate),!0===l.options.range&&("horizontal"===l.orientation?(0===e&&l.range.stop(1,1)[u?"animate":"css"]({left:i+"%"},h.animate),1===e&&l.range[u?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:h.animate})):(0===e&&l.range.stop(1,1)[u?"animate":"css"]({bottom:i+"%"},h.animate),1===e&&l.range[u?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:h.animate}))),t=i}):(e=this.value(),s=this._valueMin(),a=this._valueMax(),i=a!==s?(e-s)/(a-s)*100:0,r["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[u?"animate":"css"](r,h.animate),"min"===n&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:i+"%"},h.animate),"max"===n&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:100-i+"%"},h.animate),"min"===n&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:i+"%"},h.animate),"max"===n&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:100-i+"%"},h.animate))},_handleEvents:{keydown:function(e){var t,i,s,a=o(e.target).data("ui-slider-handle-index");switch(e.keyCode){case o.ui.keyCode.HOME:case o.ui.keyCode.END:case o.ui.keyCode.PAGE_UP:case o.ui.keyCode.PAGE_DOWN:case o.ui.keyCode.UP:case o.ui.keyCode.RIGHT:case o.ui.keyCode.DOWN:case o.ui.keyCode.LEFT:if(e.preventDefault(),this._keySliding||(this._keySliding=!0,this._addClass(o(e.target),null,"ui-state-active"),!1!==this._start(e,a)))break;return}switch(s=this.options.step,t=i=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case o.ui.keyCode.HOME:i=this._valueMin();break;case o.ui.keyCode.END:i=this._valueMax();break;case o.ui.keyCode.PAGE_UP:i=this._trimAlignValue(t+(this._valueMax()-this._valueMin())/this.numPages);break;case o.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(t-(this._valueMax()-this._valueMin())/this.numPages);break;case o.ui.keyCode.UP:case o.ui.keyCode.RIGHT:if(t===this._valueMax())return;i=this._trimAlignValue(t+s);break;case o.ui.keyCode.DOWN:case o.ui.keyCode.LEFT:if(t===this._valueMin())return;i=this._trimAlignValue(t-s)}this._slide(e,a,i)},keyup:function(e){var t=o(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,t),this._change(e,t),this._removeClass(o(e.target),null,"ui-state-active"))}}})});
(function($){
$.fn.DOPSelect=function(options){
var Data={},
Container=this,
ID='',
id='',
name='',
classes='',
onChange='',
isDisabled=false,
isMultiple=false,
thisItem='',
values=new Array(),
labels=new Array(),
selectedOption=0,
firstClick=false,
wasChanged=false,
methods={
init:function(){
return this.each(function(){
if(options){
$.extend(Data, options);
}
methods.parse();
});
},
parse:function(){
id=$(Container).attr('id')!==undefined ? $(Container).attr('id'):'';
name=$(Container).attr('name')!==undefined ? $(Container).attr('name'):'';
classes=$(Container).attr('class')!==undefined ? $(Container).attr('class'):'';
onChange=$(Container).attr('onchange')!==undefined ? $(Container).attr('onchange'):'';
isDisabled=$(Container).attr('disabled')!==undefined ? true:false;
thisItem=id!=='' ? '#'+id:'select[name*="'+name+'"]';
isMultiple=$(thisItem+'[multiple]').length ? true:false;
ID=id!=='' ? id:name;
$(thisItem+' option').each(function(){
values.push($(this).attr('value'));
labels.push($(this).html());
if($(this).is(':selected')){
selectedOption=values.length-1;
}});
methods.display();
},
display:function(){
var HTML=new Array(),
i;
HTML.push('<div id="DOPSelect-'+ID+'" class="DOPSelect '+(isMultiple ? 'dopselect-multiple':'dopselect-single')+' '+(isDisabled ? 'dopselect-disabled':'')+' '+classes+'">');
HTML.push(' <input type="hidden" id="'+ID+'" name="'+name+'" value="'+(isMultiple ? '':values[selectedOption])+'">');
if(!isMultiple){
HTML.push(' <div class="dopselect-select">');
HTML.push('     <div class="dopselect-selection">'+(values.length!==0 ? labels[selectedOption]:'')+'</div>');
HTML.push('     <div class="dopselect-icon">&#x25BE;</div>');
HTML.push(' </div>');
}
HTML.push(' <ul>');
for (i=0; i<values.length; i++){
if(!isMultiple){
HTML.push('     <li id="DOPSelect-'+ID+'-'+values[i]+'"'+(selectedOption===i ? ' class="dopselect-selected"':'')+'>'+labels[i]+'</li>');
}else{
HTML.push('     <li>');
HTML.push('         <input type="checkbox" name="DOPSelect-'+ID+'-'+values[i]+'" id="DOPSelect-'+ID+'-'+values[i]+'"'+(isDisabled ? ' disabled="disabled"':'')+' '+(selectedOption===i&&selectedOption!==0 ? ' checked="checked"':'')+'/>');
HTML.push('         <label for="DOPSelect-'+ID+'-'+values[i]+'">'+labels[i]+'</label>');
HTML.push('     </li>');
}}
HTML.push(' </ul>');
HTML.push('</div>');
$(Container).replaceWith(HTML.join(''));
if(!isDisabled){
methods.events();
}},
events:function(){
if(isMultiple){
$('#DOPSelect-'+ID+' ul li').unbind('click');
$('#DOPSelect-'+ID+' ul li').bind('click', function(){
var selected=new Array(),
id;
$('#DOPSelect-'+ID+' ul li input[type=checkbox]').each(function(){
if($(this).is(':checked')){
id=$(this).attr('id').split('DOPSelect-'+ID+'-')[1];
selected.push(id);
}});
$('#'+ID).val(selected)
.trigger('change');
if(onChange!==''){
eval(onChange.replace(/this.value/g, selected));
}});
}else{
$(document).mousedown(function(event){
if($(event.target).parents('#DOPSelect-'+ID).length===0){
$('#DOPSelect-'+ID+' ul').css('display', 'none')
.scrollTop(0);
}});
$('#DOPSelect-'+ID+' .dopselect-select').unbind('click');
$('#DOPSelect-'+ID+' .dopselect-select').bind('click', function(){
if($('#DOPSelect-'+ID+' ul').css('display')==='block'){
$('#DOPSelect-'+ID+' ul').css('display', 'none')
.scrollTop(0);
}else{
var scrollTo;
$('.DOPSelect.dopselect-single ul').css('display', 'none');
$('#DOPSelect-'+ID+' ul').css('display', 'block');
scrollTo=$('#DOPSelect-'+ID+' ul li.dopselect-selected').position().top-$('#DOPSelect-'+ID+' ul li.dopselect-selected').height();
$('#DOPSelect-'+ID+' ul').scrollTop(scrollTo);
if(wasChanged
|| firstClick){
scrollTo=$('#DOPSelect-'+ID+' ul li.dopselect-selected').position().top-$('#DOPSelect-'+ID+' ul li.dopselect-selected').height();
$('#DOPSelect-'+ID+' ul').scrollTop(scrollTo);
}
if(!firstClick){
firstClick=true;
}}
});
$('#DOPSelect-'+ID+' ul li').unbind('click');
$('#DOPSelect-'+ID+' ul li').bind('click', function(){
if(!$(this).hasClass('dopselect-selected')){
wasChanged=true;
$('#DOPSelect-'+ID+' ul li').removeClass('dopselect-selected');
$(this).addClass('dopselect-selected');
$('#DOPSelect-'+ID+' .dopselect-selection').html($(this).html());
$('#'+ID).val($(this).attr('id').split('DOPSelect-'+ID+'-')[1])
.trigger('change');
if(onChange!==''){
eval(onChange.replace(/this.value/g, "'"+$(this).attr('id').split('DOPSelect-'+ID+'-')[1]+"'"));
}}
$('#DOPSelect-'+ID+' ul').css('display', 'none')
.scrollTop(0);
});
}}
};
return methods.init.apply(this);
};})(jQuery);
(function($){
'use strict';
$.fn.DOPBSPCalendar=function(options){
var Data={"calendar": {"data": {"bookingStop": 0,
"bookingStartDate": "",
"hidePrice": false,
"hideNoAvailable": false,
"minimumNoAvailable": 1,
"maximumNoAvailable": 1000,
"dateType": 1,
"language": "en",
"languages": [],
"pluginURL": "",
"maxYear": new Date().getFullYear(),
"reinitialize": false,
"view": false},
"text": {"addMonth": "Add month view",
"available": "available",
"availableMultiple": "available",
"booked": "booked",
"nextMonth": "Next month",
"previousMonth": "Previous month",
"removeMonth": "Remove month view",
"unavailable": "unavailable"}},
"cart": {"data": {"enabled": false},
"text": {"isEmpty": "Cart is empty.",
"title": "Cart"}},
"coupons": {"data": {"coupon": {},
"id": 0},
"text": {"byDay": "day",
"byHour": "hour",
"code": "Enter code",
"title": "Coupon",
"use": "Use coupon",
"verify": "Verify code",
"verifyError": "The coupon code is invalid. Please enter another one.",
"verifySuccess": "The coupon code is valid."}},
"currency": {"data": {"code": "USD",
"position": "before",
"sign": "$"},
"text": {}},
"days": {"data": {"available": [true, true, true, true, true, true, true],
"first": 1,
"firstDisplayed": "",
"morningCheckOut": false,
"multipleSelect": true},
"text": {"names": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"shortNames": ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]}},
"deposit": {"data": {"deposit": 0,
"type": "percent",
"pay_full_amount": "true"},
"text": {"left": "Left to pay",
"title": "Deposit"}},
"discounts": {"data": {"discount": [],
"extras": false,
"id": 0},
"text": {"byDay": "day",
"byHour": "hour",
"title": "Discount"}},
"extras": {"data": {"extra": [],
"id": 0},
"text": {"byDay": "day",
"byHour": "hour",
"invalid": "Select an option from",
"title": "Extras"}},
"fees": {"data": {"fees": []},
"text": {"byDay": "day",
"byHour": "hour",
"included": "Included in price",
"title": "Taxes & fees"}},
"form": {"data": {"form": [],
"id": 0},
"text": {"checked": "Checked",
"invalidEmail": "is invalid. Please enter a valid email.",
"required": "is required.",
"title": "Contact information",
"unchecked": "Unchecked"}},
"hours": {"data": {"addLastHourToTotalPrice": true,
"ampm": false,
"definitions": [{"value": "00:00"}],
"enabled": false,
"info": true,
"interval": true,
"interval_autobreak": false,
"multipleSelect": true},
"text": {}},
"ID": 0,
"default_schedule": {"available":1,"bind":0,"hours":{},"hours_definitions":[{"value":"00:00"}],"info":"","notes":"","price":0,"promo":0,"status":"none"},
"months": {"data": {"no": 1},
"text": {"names": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
"shortNames": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]}},
"order": {"data": {"address_billing": {"address_first": {"enabled": true,
"required": true},
"address_second": {"enabled": true,
"required": false},
"city": {"enabled": true,
"required": true},
"company": {"enabled": true,
"required": false},
"country": {"enabled": true,
"required": true},
"email": {"enabled": true,
"required": true},
"enabled": false,
"first_name": {"enabled": true,
"required": true},
"last_name": {"enabled": true,
"required": true},
"phone": {"enabled": true,
"required": true},
"state": {"enabled": true,
"required": true},
"zip_code": {"enabled": true,
"required": true}},
"address_shipping": {"address_first": {"enabled": true,
"required": true},
"address_second": {"enabled": true,
"required": false},
"city": {"enabled": true,
"required": true},
"company": {"enabled": true,
"required": false},
"country": {"enabled": true,
"required": true},
"email": {"enabled": true,
"required": true},
"enabled": false,
"first_name": {"enabled": true,
"required": true},
"last_name": {"enabled": true,
"required": true},
"phone": {"enabled": true,
"required": true},
"state": {"enabled": true,
"required": true},
"zip_code": {"enabled": true,
"required": true}},
"countries": [],
"paymentArrival": true,
"paymentArrivalWithApproval": false,
"paymentGateways": [],
"privacy": false,
"privacyLink": "",
"redirect": "",
"terms": false,
"termsLink": ""},
"text": {"addressAddressFirst": "Address line 1",
"addressAddressSecond": "Address line 2",
"addressBilling": "Billing address",
"addressBillingDisabled": "Billing address is not enabled.",
"addressCity": "City",
"addressCompany": "Company",
"addressCountry": "Country",
"addressEmail": "Email",
"addressFirstName": "First name",
"addressLastName": "Last name",
"addressPhone": "Phone number",
"addressSelectPaymentMethod": "Select payment method.",
"addressShipping": "Shipping address",
"addressShippingDisabled": "Shipping address is not enabled.",
"addressShippingCopy": "Use billing address",
"addressState": "State/Province",
"addressZipCode": "Zip code",
"book": "Book now",
"paymentArrival": "Pay on arrival (instant booking)",
"paymentArrivalWithApproval": "Pay on arrival (need to be approved)",
"paymentArrivalSuccess": "Your request has been successfully received. We are waiting you!",
"paymentArrivalWithApprovalSuccess": "Your request has been successfully sent. Please wait for approval.",
"paymentMethod": "Payment method",
"paymentFull": "Pay full amount",
"paymentMethodNone": "None",
"paymentMethodArrival": "On arrival",
"paymentMethodTransactionID": "Transaction ID",
"paymentMethodWooCommerce": "WooCommerce",
"paymentMethodWooCommerceOrderID": "Order ID",
"privacy": "I accept to agree to the Privacy Policy.",
"privacyInvalid": "You must agree with our Privacy Policy to continue.",
"success": "Reservation has been added!",
"terms": "I accept to agree to the Terms & Conditions.",
"termsInvalid": "You must agree with our Terms & Conditions to continue.",
"title": "Order",
"unavailable": "The period you selected is not available anymore. The calendar will refresh to update the schedule.",
"unavailableCoupon": "The coupon you entered is not available anymore."}},
"reservation": {"data": {},
"text": {"addressShippingCopy": "Same as billing address.",
"buttonApprove": "Approve",
"buttonCancel": "Cancel",
"buttonClose": "Close",
"buttonDelete": "Delete",
"buttonReject": "Reject",
"dateCreated": "Date created",
"id": "ID",
"instructions": "Click to edit the reservation.",
"language": "Selected language",
"noAddressBilling": "No billing address.",
"noAddressShipping": "No shipping address.",
"noExtras": "No extras.",
"noDiscount": "No discount.",
"noCoupon": "No coupon.",
"noFees": "No taxes or fees.",
"noForm": "Form was not completed.",
"noFormField": "Form field was not completed.",
"price": "Price",
"priceChange": "Price change",
"priceTotal": "Total",
"selectDays": "Please select the days from calendar.",
"selectHours": "Please select the days and hours from calendar.",
"title": "Reservation",
"titleDetails": "Details"}},
"rules": {"data": {"rule": {},
"id": 0},
"text": {"maxTimeLapseDaysWarning": "You can book only a maximum number of %d days.",
"maxTimeLapseHoursWarning": "You can book only a maximum number of %d hours.",
"minTimeLapseDaysWarning": "You need to book a minimum number of %d days.",
"minTimeLapseHoursWarning": "You need to book a minimum number of %d hours."}},
"search": {"data": {},
"text": {"checkIn": "Check in",
"checkOut": "Check out",
"hourEnd": "Finish at",
"hourStart": "Start at",
"noItems": "No. book items",
"noServices": "There are no services available for the period you selected.",
"noServicesSplitGroup": "You cannot add divided groups to a reservation.",
"title": "Search"}},
"sidebar": {"data": {"noItems": true,
"positions": {"search": {"column": 1,
"row": 1},
"extras": {"column": 1,
"row": 2},
"coupons": {"column": 1,
"row": 3},
"reservation": {"column": 1,
"row": 4},
"cart": {"column": 1,
"row": 5},
"form": {"column": 1,
"row": 6},
"order": {"column": 1,
"row": 7}},
"style": 5},
"text": {}},
"woocommerce": {"data": {"addToCart": false,
"cartURL": "",
"enabled": false,
"productID": 0,
"redirect": false},
"text": {"addToCart": "Add to cart"}}},
ajaxURL='',
Container=this,
ID=0,
methods={
init:function(){
return this.each(function(){
if(options){
$.extend(Data, options);
}
if(!$(Container).hasClass('dopbsp-initialized')
|| Data['calendar']['data']['reinitialize']){
$(Container).addClass('dopbsp-initialized');
methods.parse();
$(window).bind('resize.DOPBSPCalendar', methods.rp);
}});
},
parse:function(){
ajaxURL=DOPPrototypes.acaoBuster($('a', Container).attr('href'));
DOT.ajax.url=ajaxURL;
DOPBSPFrontEnd.calendar[Data['ID']]=Data;
ID=Data['ID'];
methods_calendar.data=Data['calendar']['data'];
methods_calendar.text=Data['calendar']['text'];
methods_cart.data=Data['cart']['data'];
methods_cart.text=Data['cart']['text'];
methods_coupons.data=Data['coupons']['data'];
methods_coupons.text=Data['coupons']['text'];
methods_currency.data=Data['currency']['data'];
methods_currency.text=Data['currency']['text'];
DOT.methods.calendar_days.settings[ID]=Data['days']['data'];
DOT.methods.calendar_days.text[ID]=Data['days']['text'];
methods_extras.data=Data['extras']['data'];
methods_extras.text=Data['extras']['text'];
methods_form.data=Data['form']['data'];
methods_form.text=Data['form']['text'];
methods_hours.data=Data['hours']['data'];
methods_hours.text=Data['hours']['text'];
methods_months.data=Data['months']["data"];
methods_months.text=Data['months']["text"];
methods_order.data=Data['order']["data"];
methods_order.text=Data['order']["text"];
methods_reservation.data=Data['reservation']["data"];
methods_reservation.text=Data['reservation']["text"];
methods_search.data=Data['search']["data"];
methods_search.text=Data['search']["text"];
DOT.methods.calendar_schedule.default[ID]=Data['default_schedule'];
methods_sidebar.data=Data['sidebar']["data"];
methods_sidebar.text=Data['sidebar']["text"];
methods_woocommerce.data=Data['woocommerce']["data"];
methods_woocommerce.text=Data['woocommerce']["text"];
Container.html('<div class="dopbsp-loader"></div>');
methods_order.payment.verify();
methods_months.init();
methods_search.verify();
DOT.methods.calendar_schedule.data[ID]={};
methods_schedule.get(ID);
},
rp:function(force){
if(Container.width() > 1024
|| (force!==undefined&&force===true)){
methods_sidebar.rp();
methods_calendar.container.rp();
methods_calendar.navigation.rp();
methods_day.rp();
}}
},
methods_schedule={
get: function (id){
var post=new Array();
post.push(DOT.ajax.var + '=' + DOT.ajax.keys['user_calendars_data']);
post.push('calendar_id=' + id);
$.post(DOT.ajax.url, post.join('&'), function (data){
data=JSON.parse($.trim(data));
DOT.methods.calendar_availability.data[id]=data['availability'];
methods_schedule.parse(new Date().getFullYear());
}).fail(function (data){
});
},
parse:function(year){
var scheduleBuffer={};
$.post(ajaxURL, {action: 'dopbsp_calendar_schedule_get',
dopbsp_frontend_ajax_request: true,
id: ID,
year:year,
firstYear: '"'+methods_calendar.vars.firstYearLoaded+'"'}, function(data){
if($.trim(data)!==''){
scheduleBuffer=JSON.parse($.trim(data));
for (var day in scheduleBuffer){
scheduleBuffer[day]=JSON.parse(scheduleBuffer[day]);
}
$.extend(DOT.methods.calendar_schedule.data[ID], scheduleBuffer);
}
if(methods_calendar.vars.display
&& (methods_calendar.vars.startMonth < 12-methods_months.vars.no+1 
|| methods_calendar.vars.firstYearLoaded
|| year >=methods_calendar.data['maxYear'])){
methods_calendar.vars.display=false;
methods_calendar.display();
methods_components.init();
}
if(!methods_calendar.vars.firstYearLoaded){
methods_calendar.vars.firstYearLoaded=true;
}
if(year < methods_calendar.data['maxYear']){
methods_schedule.parse(year+1);
}});
},
reset:function(){
Container.html('<div class="dopbsp-loader"></div>');
DOT.methods.calendar_schedule.data[ID]={};
methods_calendar.vars.display=true;
methods_calendar.vars.firstYearLoaded=false;
if(DOT.methods.calendar_days.settings[ID]['firstDisplayed']!==''){
methods_schedule.parse(new Date(DOT.methods.calendar_days.settings[ID]['firstDisplayed']).getFullYear());
}else{
methods_schedule.parse(new Date().getFullYear());
}}
},
methods_components={
init:function(){
var startDate;
methods_calendar.vars.todayDate=new Date();
methods_calendar.vars.todayDay=methods_calendar.vars.todayDate.getDate();
methods_calendar.vars.todayMonth=methods_calendar.vars.todayDate.getMonth()+1;
methods_calendar.vars.todayYear=methods_calendar.vars.todayDate.getFullYear();
methods_calendar.vars.startDate=new Date(new Date(methods_calendar.data['bookingStartDate']!=='' ? methods_calendar.data['bookingStartDate'].replace(/-/g, "/"):new Date()).getTime()+methods_calendar.data['bookingStop']*60*1000);
methods_calendar.vars.currMonth=methods_calendar.vars.startDate.getMonth()+1;
methods_calendar.vars.currYear=methods_calendar.vars.startDate.getFullYear();
methods_calendar.vars.startDay=methods_calendar.vars.startDate.getDate();
methods_calendar.vars.startMonth=methods_calendar.vars.startDate.getMonth()+1;
methods_calendar.vars.startYear=methods_calendar.vars.startDate.getFullYear();
methods_tooltip.display();
startDate=DOPPrototypes.getLeadingZero(methods_calendar.vars.startYear)
+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)
+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay);
methods_calendar.container.init();
methods_calendar.navigation.init();
methods_calendar.init(methods_calendar.vars.startYear,
methods_calendar.vars.startMonth+(startDate < DOT.methods.calendar_days.settings[ID]['firstDisplayed'] ? DOPPrototypes.getNoMonths(startDate, DOT.methods.calendar_days.settings[ID]['firstDisplayed'])-1:0));
if(!methods_calendar.data['view']){
methods_search.display();
if(methods_extras.data['id']!=='0'){
methods_extras.display();
}
methods_reservation.display();
if(!methods_woocommerce.data['enabled']){
if(methods_coupons.data['id']!=='0'
&& methods_coupons.data['id']!==''){
methods_coupons.display();
}
methods_cart.display();
methods_form.display();
methods_order.display();
}else{
methods_woocommerce.init();
}
methods_sidebar.init();
if($('#DOPBSPCalendar-check-in'+ID).val()!==''
|| $('#DOPBSPCalendar-check-out'+ID).val()!==''){
if(methods_hours.data['enabled']
&& methods_days.vars.selectionStart!==''){
$('#DOPBSPCalendar-start-hour'+ID).val(DOPPrototypes.$_GET('start_hour')!==undefined ? DOPPrototypes.$_GET('start_hour'):'');
$('#DOPBSPCalendar-end-hour'+ID).val(DOPPrototypes.$_GET('end_hour')!==undefined ? DOPPrototypes.$_GET('end_hour'):'');
methods_hours.vars.selectionInit=false;
methods_hours.vars.selectionStart=DOPPrototypes.$_GET('start_hour')!==undefined ? ID+'_'+DOPPrototypes.$_GET('start_hour'):'';
if(methods_hours.data['multipleSelect']){
methods_hours.vars.selectionEnd=DOPPrototypes.$_GET('end_hour')!==undefined ? ID+'_'+DOPPrototypes.$_GET('end_hour'):'';
}else{
methods_hours.vars.selectionEnd=methods_hours.vars.selectionStart;
}
methods_calendar.vars.startDate=new Date(new Date().getTime()+methods_calendar.data['bookingStop']*60*1000);
methods_calendar.vars.currMonth=methods_calendar.vars.startDate.getMonth()+1;
methods_calendar.vars.currYear=methods_calendar.vars.startDate.getFullYear();
methods_calendar.vars.startDay=methods_calendar.vars.startDate.getDate();
methods_calendar.vars.startMonth=methods_calendar.vars.startDate.getMonth()+1;
methods_calendar.vars.startYear=methods_calendar.vars.startDate.getFullYear();
methods_days.displaySelection(methods_days.vars.selectionStart);
}else{
methods_days.displaySelection(methods_days.vars.selectionEnd);
}
methods_search.set();
$('#DOPBSPCalendar-check-out-view'+ID).removeAttr('disabled');
methods_reservation.set();
}
if(DOPPrototypes.$_GET('items')!==undefined){
methods_search.no_items.set(DOPPrototypes.$_GET('items'));
methods_reservation.set();
}}
methods.rp(true);
}},
methods_currency={
data: {},
text: {}},
methods_tooltip={
display:function(){
if($('#DOPBSPCalendar-tooltip'+ID).length!==undefined){
$('#DOPBSPCalendar-tooltip'+ID).remove();
}
$('body').append('<div class="DOPBSPCalendar-tooltip" id="DOPBSPCalendar-tooltip'+ID+'"></div>');
methods_tooltip.init();
},
init:function(){
var $tooltip=$('#DOPBSPCalendar-tooltip'+ID),
h,
xPos=0,
yPos=0;
if(!DOPPrototypes.isTouchDevice()){
$(document).mousemove(function(e){
xPos=e.pageX+15;
yPos=e.pageY-10;
h=$tooltip.height()
+parseFloat($tooltip.css('padding-top'))
+parseFloat($tooltip.css('padding-bottom'))
+parseFloat($tooltip.css('border-top-width'))
+parseFloat($tooltip.css('border-bottom-width'));
if($(document).scrollTop()+$(window).height() < yPos+h+10){
yPos=$(document).scrollTop()+$(window).height()-h-10;
}
$tooltip.css({'left': xPos,
'top': yPos});
});
}else{
$tooltip.unbind('touchstart');
$tooltip.bind('touchstart', function(e){
e.preventDefault();
methods_tooltip.clear();
});
}},
set:function(day,
hour,
type,
infoData){
var data=(hour==='' ? (DOT.methods.calendar_schedule.data[ID][day]!==undefined ? DOT.methods.calendar_schedule.data[ID][day]:DOT.methods.calendar_schedule.default[ID]):
(DOT.methods.calendar_schedule.data[ID][day]!==undefined ? DOT.methods.calendar_schedule.data[ID][day]['hours'][hour]:DOT.methods.calendar_schedule.default[ID]['hours'][hour])),
info=infoData!==undefined ? infoData:
data[type]+(data['info_info']!==undefined ? (data[type]!==''&&data['info_info'].length > 0 ? '<br /><br />':'')+methods_form.getInfo(data['info_info']):'');
if(type==='info-body'){
info=methods_form.getInfo(data['info_body']);
}
try{
info=decodeURIComponent(escape(info));
}
catch(e){
info=decodeURIComponent(unescape(unescape(info)));
}
if(type==='hours'
|| type==='info-body'){
$('#DOPBSPCalendar-tooltip'+ID).removeClass('dopbsp-text');
}else{
$('#DOPBSPCalendar-tooltip'+ID).addClass('dopbsp-text');
}
$('#DOPBSPCalendar-tooltip'+ID).html(info)
.css('display', 'block');
},
clear:function(){
$('#DOPBSPCalendar-tooltip'+ID).css('display', 'none');
}},
methods_info={
vars: {time: 0},
toggleMessages:function(message,
type){
type=type===undefined ? 'dopbsp-error':type;
$('#DOPBSPCalendar-info-message'+ID+' .dopbsp-text').html(message);
$('#DOPBSPCalendar-info-message'+ID).removeClass('dopbsp-success')
.removeClass('dopbsp-error')
.addClass(type)
.css('display', 'block');
DOPPrototypes.scrollToY($('#DOPBSPCalendar-info-message'+ID).offset().top-100);
if(methods_info.vars.time!==0){
methods_info.vars.time=15;
}else{
methods_info.vars.time=15;
methods_info.timer();
}},
timer:function(){
$('#DOPBSPCalendar-info-message'+ID+' .dopbsp-timer').html('['+DOPPrototypes.getLeadingZero(methods_info.vars.time)+']');
if(methods_info.vars.time===0){
$('#DOPBSPCalendar-info-message'+ID).stop(true, true).fadeOut(300);
}else{
setTimeout(function(){
methods_info.vars.time--;
methods_info.timer();
}, 1000);
}}
},
methods_calendar={
data: {},
text: {},
vars: {currMonth: new Date(),
currYear: new Date(),
display: true,
firstYearLoaded: false,
startDate: new Date(),
startDay: new Date(),
startMonth: new Date(),
startYear: new Date(),
todayDate: new Date(),
todayDay: new Date(),
todayMonth: new Date(),
todayYear: new Date()},
display:function(){
var HTML=new Array();
HTML.push('<div class="DOPBSPCalendar-container">');
HTML.push('    <div class="DOPBSPCalendar-navigation">');
HTML.push('        <div class="dopbsp-month-year"></div>');
HTML.push('        <a href="javascript:void(0)" class="dopbsp-add-btn"><span class="dopbsp-info">'+DOPBSPFrontEnd.text(ID, 'calendar', 'addMonth')+'</span></a>');
HTML.push('        <a href="javascript:void(0)" class="dopbsp-remove-btn"><span class="dopbsp-info">'+DOPBSPFrontEnd.text(ID, 'calendar', 'removeMonth')+'</span></a>');
HTML.push('        <a href="javascript:void(0)" class="dopbsp-next-btn"><span class="dopbsp-info">'+DOPBSPFrontEnd.text(ID, 'calendar', 'nextMonth')+'</span></a>');
HTML.push('        <a href="javascript:void(0)" class="dopbsp-previous-btn"><span class="dopbsp-info">'+DOPBSPFrontEnd.text(ID, 'calendar', 'previousMonth')+'</span></a>');
HTML.push('        <div class="dopbsp-week">');
HTML.push('            <div class="dopbsp-day"></div>');
HTML.push('            <div class="dopbsp-day"></div>');
HTML.push('            <div class="dopbsp-day"></div>');
HTML.push('            <div class="dopbsp-day"></div>');
HTML.push('            <div class="dopbsp-day"></div>');
HTML.push('            <div class="dopbsp-day"></div>');
HTML.push('            <div class="dopbsp-day"></div>');
HTML.push('        </div>');
HTML.push('    </div>');
HTML.push('    <div class="DOPBSPCalendar-calendar"></div>');
HTML.push('</div>');
if(!methods_calendar.data['view']){
if($('#DOPBSPCalendar-outer-sidebar'+ID).length===0){
HTML.push('<div class="DOPBSPCalendar-sidebar dopbsp-style'+methods_sidebar.data['style']+'">'+methods_sidebar.display()+'</div>');
}else{
HTML.push('<div class="DOPBSPCalendar-sidebar dopbsp-hidden"></div>');
$('#DOPBSPCalendar-outer-sidebar'+ID).html(methods_sidebar.display());
}}
HTML.push('    <div class="DOPBSPCalendar-clear"></div>');
Container.html(HTML.join(''));
},
init:function(year,
month){
var i;
methods_calendar.vars.currYear=new Date(year, month, 0).getFullYear();
methods_calendar.vars.currMonth=month;
if(methods_months.vars.no > 1){
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).css('display', 'block');
}else{
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).css('display', 'none');
}
if(methods_months.vars.no===methods_months.vars.maxAllowed){
$('.DOPBSPCalendar-navigation .dopbsp-add-btn', Container).css('display', 'none');
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).addClass('dopbsp-no-add');
}else{
$('.DOPBSPCalendar-navigation .dopbsp-add-btn', Container).css('display', 'block');
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).removeClass('dopbsp-no-add');
}
if(year!==methods_calendar.vars.startYear
|| month!==methods_calendar.vars.startMonth){
$('.DOPBSPCalendar-navigation .dopbsp-previous-btn', Container).css('display', 'block');
}
if(year===methods_calendar.vars.startYear
&& month===methods_calendar.vars.startMonth){
$('.DOPBSPCalendar-navigation .dopbsp-previous-btn', Container).css('display', 'none');
}
methods_day.vars.previousStatus='';
methods_day.vars.previousBind=0;
if(Container.width() <=400){
$('.DOPBSPCalendar-navigation .dopbsp-month-year', Container).html(DOPBSPFrontEnd.text(ID, 'months', 'names')[(methods_calendar.vars.currMonth%12!==0 ? methods_calendar.vars.currMonth%12:12)-1]+' '+methods_calendar.vars.currYear);
}else{
$('.DOPBSPCalendar-navigation .dopbsp-month-year', Container).html(DOPBSPFrontEnd.text(ID, 'months', 'names')[(methods_calendar.vars.currMonth%12!==0 ? methods_calendar.vars.currMonth%12:12)-1]+' '+methods_calendar.vars.currYear);
}
$('.DOPBSPCalendar-calendar', Container).html('');
for (i=1; i<=methods_months.vars.no; i++){
methods_month.display(methods_calendar.vars.currYear,
month=month%12!==0 ? month%12:12,
i);
month++;
if(month % 12===1){
methods_calendar.vars.currYear++;
month=1;
}}
methods_days.displaySelection();
methods_day.events.init();
if(methods_calendar.vars.firstYearLoaded){
methods_day.rp();
}
if(methods_hours.data['enabled']
&& methods_days.vars.selectionStart!==''){
methods_hours.display(methods_days.vars.selectionStart);
}},
container: {
init:function(){
methods_calendar.container.rp();
},
rp:function(){
var hiddenBustedItems=DOPPrototypes.doHiddenBuster($(Container));
if(Container.width() < 500
|| (methods_sidebar.data['style']===1
&& Container.width() < 900)
|| methods_sidebar.data['style']===2
|| methods_sidebar.data['style']===3
|| (methods_sidebar.data['style']===4
&& Container.width() < 660)
|| (methods_sidebar.data['style']===5
&& Container.width() < 800)){
$('.DOPBSPCalendar-container', Container).width(Container.width());
if(methods_sidebar.data['style']===5){
$('.DOPBSPCalendar-sidebar', Container).removeAttr('style');
}}else{
if(methods_sidebar.data['style']===5){
$('.DOPBSPCalendar-container', Container).width((Container.width()-21)/2);
$('.DOPBSPCalendar-sidebar', Container).width((Container.width()-21)/2);
}else{
$('.DOPBSPCalendar-container', Container).width(Container.width()-$('.DOPBSPCalendar-sidebar', Container).width()-parseFloat($('.DOPBSPCalendar-sidebar', Container).css('margin-left'))-1);
}}
DOPPrototypes.undoHiddenBuster(hiddenBustedItems);
}},
navigation: {
init:function(){
methods_calendar.navigation.events();
methods_calendar.navigation.rp();
},
rp:function(){
var no=0,
hiddenBustedItems=DOPPrototypes.doHiddenBuster($(Container));
if($('.DOPBSPCalendar-navigation', Container).width() <=400){
$('.DOPBSPCalendar-navigation', Container).addClass('dopbsp-style-small');
$('.DOPBSPCalendar-navigation .dopbsp-month-year', Container).html(DOPBSPFrontEnd.text(ID, 'months', 'names')[(methods_calendar.vars.currMonth%12!==0 ? methods_calendar.vars.currMonth%12:12)-1]+' '+(new Date(methods_calendar.vars.startYear, methods_calendar.vars.currMonth, 0).getFullYear()));
}else{
$('.DOPBSPCalendar-navigation', Container).removeClass('dopbsp-style-small');
$('.DOPBSPCalendar-navigation .dopbsp-month-year', Container).html(DOPBSPFrontEnd.text(ID, 'months', 'names')[(methods_calendar.vars.currMonth%12!==0 ? methods_calendar.vars.currMonth%12:12)-1]+' '+(new Date(methods_calendar.vars.startYear, methods_calendar.vars.currMonth, 0).getFullYear()));
}
$('.DOPBSPCalendar-navigation .dopbsp-week .dopbsp-day', Container).width(parseInt(($('.DOPBSPCalendar-navigation .dopbsp-week', Container).width()-parseInt($('.DOPBSPCalendar-navigation .dopbsp-week', Container).css('padding-left'))+parseInt($('.DOPBSPCalendar-navigation .dopbsp-week', Container).css('padding-right')))/7));
no=DOT.methods.calendar_days.settings[ID]['first']-1;
$('.DOPBSPCalendar-navigation .dopbsp-week .dopbsp-day', Container).each(function(){
no++;
if(no===7){
no=0;
}
if($(this).width() <=70){
$(this).html(DOPBSPFrontEnd.text(ID, 'days', 'shortNames')[no]);
}else{
$(this).html(DOPBSPFrontEnd.text(ID, 'days', 'names')[no]);
}});
DOPPrototypes.undoHiddenBuster(hiddenBustedItems);
},
events:function(){
$('.DOPBSPCalendar-navigation .dopbsp-previous-btn', Container).unbind('click');
$('.DOPBSPCalendar-navigation .dopbsp-previous-btn', Container).bind('click', function(){
methods_calendar.init(methods_calendar.vars.startYear,
methods_calendar.vars.currMonth-1);
if(methods_calendar.vars.currMonth===methods_calendar.vars.startMonth){
$('.DOPBSPCalendar-navigation .dopbsp-previous-btn', Container).css('display', 'none');
}});
$('.DOPBSPCalendar-navigation .dopbsp-next-btn', Container).unbind('click');
$('.DOPBSPCalendar-navigation .dopbsp-next-btn', Container).bind('click', function(){
methods_calendar.init(methods_calendar.vars.startYear,
methods_calendar.vars.currMonth+1);
$('.DOPBSPCalendar-navigation .dopbsp-previous-btn', Container).css('display', 'block');
});
$('.DOPBSPCalendar-navigation .dopbsp-add-btn', Container).unbind('click');
$('.DOPBSPCalendar-navigation .dopbsp-add-btn', Container).bind('click', function(){
methods_months.vars.no++;
methods_calendar.init(methods_calendar.vars.startYear,
methods_calendar.vars.currMonth);
if(methods_months.vars.no >=methods_months.vars.maxAllowed){
$('.DOPBSPCalendar-navigation .dopbsp-add-btn', Container).css('display', 'none');
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).addClass('dopbsp-no-add');
}
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).css('display', 'block');
DOPPrototypes.scrollToY($('.DOPBSPCalendar-calendar', Container).offset().top+$('.DOPBSPCalendar-calendar', Container).height()-$(window).height()+10);
});
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).unbind('click');
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).bind('click', function(){
methods_months.vars.no--;
methods_calendar.init(methods_calendar.vars.startYear,
methods_calendar.vars.currMonth);
if(methods_months.vars.no < methods_months.vars.maxAllowed){
$('.DOPBSPCalendar-navigation .dopbsp-add-btn', Container).css('display', 'block');
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).removeClass('dopbsp-no-add');
}
if(methods_months.vars.no===1){
$('.DOPBSPCalendar-navigation .dopbsp-remove-btn', Container).css('display', 'none');
}
DOPPrototypes.scrollToY($('.DOPBSPCalendar-calendar', Container).offset().top+$('.DOPBSPCalendar-calendar', Container).height()-$(window).height()+10);
});
}}
},
methods_months={
data: {},
text: {},
vars: {maxAllowed: 6,
no: 1},
init:function(){
methods_months.vars.no=methods_months.data['no'];
}},
methods_month={
display:function(year,
month,
position){
var cmonth,
cday,
cyear,
d,
day=methods_day.default(),
HTML=new Array(),
i,
prevDay,
noDays=new Date(year, month, 0).getDate(),
noDaysPrevMonth=new Date(year, month-1, 0).getDate(),
firstDay=new Date(year, month-1, 2-DOT.methods.calendar_days.settings[ID]['first']).getDay(),
lastDay=new Date(year, month-1, noDays-DOT.methods.calendar_days.settings[ID]['first']+1).getDay(),
schedule=DOT.methods.calendar_schedule.data[ID],
totalDays=0;
if(position > 1){
HTML.push('<div class="DOPBSPCalendar-month-year">'+DOPBSPFrontEnd.text(ID, 'months', 'names')[(month%12!==0 ? month%12:12)-1]+' '+year+'</div>');
}
HTML.push('<div class="DOPBSPCalendar-month" id="DOPBSPCalendar-month-'+ID+'-'+position+'">');
for (i=(firstDay===0 ? 7:firstDay)-1; i>=1; i--){
totalDays++;
d=new Date(year, month-2, noDaysPrevMonth-i+1);
cyear=d.getFullYear();
cmonth=DOPPrototypes.getLeadingZero(d.getMonth()+1);
cday=DOPPrototypes.getLeadingZero(d.getDate());
day=DOT.methods.calendar_day.get(ID,
cyear+'-'+cmonth+'-'+cday);
prevDay=DOPPrototypes.getPrevDay(cyear+'-'+cmonth+'-'+cday);
methods_day.vars.previousStatus=methods_day.vars.previousStatus==='' ? (schedule[prevDay]!==undefined&&schedule[prevDay]!==null ? schedule[prevDay]['status']:'none'):methods_day.vars.previousStatus;
methods_day.vars.previousBind=methods_day.vars.previousBind===0 ? (schedule[prevDay]!==undefined&&schedule[prevDay]!==null ? schedule[prevDay]['group']:0):methods_day.vars.previousBind;
if(methods_calendar.vars.startMonth===month
&& methods_calendar.vars.startYear===year){
HTML.push(methods_day.display('dopbsp-past-day',
ID+'_'+cyear+'-'+cmonth+'-'+cday,
d.getDate(),
'',
'',
'',
'',
'',
'',
'',
'none'));
}else{
HTML.push(methods_day.display('dopbsp-last-month'+(position > 1 ?  ' dopbsp-mask':''),
position > 1 ? ID+'_'+cyear+'-'+cmonth+'-'+cday+'_last':ID+'_'+cyear+'-'+cmonth+'-'+cday,
d.getDate(),
day['available'],
day['bind'],
day['info'],
day['info_body'],
day['info_info'],
day['price'],
day['promo'],
day['status']));
}}
for (i=1; i<=noDays; i++){
totalDays++;
d=new Date(year, month-1, i);
cyear=d.getFullYear();
cmonth=DOPPrototypes.getLeadingZero(d.getMonth()+1);
cday=DOPPrototypes.getLeadingZero(d.getDate());
day=DOT.methods.calendar_day.get(ID,
cyear+'-'+cmonth+'-'+cday);
methods_calendar.vars.startMonth=parseInt(methods_calendar.vars.startMonth);
if(methods_calendar.vars.startMonth===month
&& methods_calendar.vars.startYear===year
&& methods_calendar.vars.startDay > d.getDate()){
HTML.push(methods_day.display('dopbsp-past-day',
ID+'_'+cyear+'-'+cmonth+'-'+cday,
d.getDate(),
'',
'',
'',
'',
'',
'',
'',
'none'));
}else{
HTML.push(methods_day.display('dopbsp-curr-month',
ID+'_'+cyear+'-'+cmonth+'-'+cday,
d.getDate(),
day['available'],
day['bind'],
day['info'],
day['info_body'],
day['info_info'],
day['price'],
day['promo'],
day['status']));
}}
for (i=1; i<=(totalDays+7 < 42 ? 14:7)-lastDay; i++){
d=new Date(year, month, i);
cyear=d.getFullYear();
cmonth=DOPPrototypes.getLeadingZero(d.getMonth()+1);
cday=DOPPrototypes.getLeadingZero(d.getDate());
day=DOT.methods.calendar_day.get(ID,
cyear+'-'+cmonth+'-'+cday);
HTML.push(methods_day.display('dopbsp-next-month'+(position < methods_months.vars.no ?  ' dopbsp-hide':''),
position < methods_months.vars.no ? ID+'_'+cyear+'-'+cmonth+'-'+cday+'_next':ID+'_'+cyear+'-'+cmonth+'-'+cday,
d.getDate(),
day['available'],
day['bind'],
day['info'],
day['info_body'],
day['info_info'],
day['price'],
day['promo'],
day['status']));
}
HTML.push('</div>');
HTML.push('<div class="DOPBSPCalendar-hours" id="'+ID+'_'+year+'-'+DOPPrototypes.getLeadingZero(month)+'_hours"></div>');
$('.DOPBSPCalendar-calendar', Container).append(HTML.join(''));
}},
methods_days={
vars: {selectionEnd: '',
selectionInit: false,
selectionStart: '',
no: 0},
displaySelection:function(id){
var $day,
day,
$nextDay=undefined,
$prevDay=undefined;
id=id===undefined ? methods_days.vars.selectionEnd:id;
methods_days.clearSelection();
if(methods_days.vars.selectionStart!==''){
if(id < methods_days.vars.selectionStart){
$($('.DOPBSPCalendar-day', Container).get().reverse()).each(function(){
if($(this).attr('id').split('_').length===2){
$day=$(this);
day=this;
if($day.attr('id') <=methods_days.vars.selectionStart
&& $day.attr('id') >=id
&& !$day.hasClass('dopbsp-mask')
&& !$day.hasClass('dopbsp-past-day')){
$day.addClass('dopbsp-selected');
if(DOT.methods.calendar_days.settings[ID]['morningCheckOut']){
if($day.attr('id')===methods_days.vars.selectionStart){
$day.addClass('dopbsp-last');
}
if($day.attr('id')!==methods_days.vars.selectionStart){
$day.addClass('dopbsp-first');
if($nextDay!==undefined){
$nextDay.removeClass('dopbsp-first');
}
$nextDay=$day;
}}
}}
});
}else{
$('.DOPBSPCalendar-day', Container).each(function(){
if($(this).attr('id').split('_').length===2){
$day=$(this);
day=this;
if($day.attr('id') >=methods_days.vars.selectionStart
&& $day.attr('id') <=id
&& !$day.hasClass('dopbsp-mask')
&& !$day.hasClass('dopbsp-past-day')){
$day.addClass('dopbsp-selected');
if(DOT.methods.calendar_days.settings[ID]['morningCheckOut']){
if($day.attr('id')===methods_days.vars.selectionStart){
$day.addClass('dopbsp-first');
}
if($day.attr('id')!==methods_days.vars.selectionStart){
$day.addClass('dopbsp-last');
if(methods_days.vars.selectionEnd!==''
&& $day.attr('id') < methods_days.vars.selectionEnd){
$day.removeClass('dopbsp-last');
}
if($prevDay!==undefined){
$prevDay.removeClass('dopbsp-last');
}
$prevDay=$day;
}}
}}
});
}}
},
clearSelection:function(){
$('.DOPBSPCalendar-day', Container).removeClass('dopbsp-selected')
.removeClass('dopbsp-first')
.removeClass('dopbsp-last');
$('#DOPBSPCalendar-submit'+ID).css('display', 'none');
},
getSelected:function(ciDay,
coDay){
var selectedDays=new Array(),
y,
d,
m,
ciy,
cim,
cid,
coy,
com,
cod,
firstMonth,
lastMonth,
firstDay,
lastDay,
currYear,
currMonth,
currDay;
coDay=coDay==='' ? ciDay:coDay;
ciy=parseInt(ciDay.split('-')[0], 10);
cim=parseInt(ciDay.split('-')[1], 10);
cid=parseInt(ciDay.split('-')[2], 10);
coy=parseInt(coDay.split('-')[0], 10);
com=parseInt(coDay.split('-')[1], 10);
cod=parseInt(coDay.split('-')[2], 10);
for (y=ciy; y<=coy; y++){
firstMonth=y===ciy ? cim:1;
lastMonth=y===coy ? com:12;
for (m=firstMonth; m<=lastMonth; m++){
firstDay=y===ciy&&m===cim ? cid:1;
lastDay=y===coy&&m===com ? cod:new Date(y,m,0).getDate();
for (d=firstDay; d<=lastDay; d++){
currYear=String(y);
currMonth=DOPPrototypes.getLeadingZero(m);
currDay=DOPPrototypes.getLeadingZero(d);
selectedDays.push(currYear+'-'+currMonth+'-'+currDay);
}}
}
return selectedDays;
},
getAvailability:function(ciDay,
coDay){
var maxNoDays,
minNoDays,
noDays,
schedule=DOT.methods.calendar_schedule.data[ID];
coDay=coDay===''&&!DOT.methods.calendar_days.settings[ID]['multipleSelect'] ? ciDay:coDay;
if(methods_search.days.validate(ciDay)
&& methods_search.days.validate(coDay)){
maxNoDays=DOPBSPFrontEndRules.getMaxTimeLapse(ID);
minNoDays=DOPBSPFrontEndRules.getMinTimeLapse(ID);
noDays=DOPPrototypes.getNoDays(ciDay, coDay)-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 1:0);
if(noDays < minNoDays){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'rules', 'minTimeLapseDaysWarning').replace(/%d/gi, minNoDays));
return false;
}
if(maxNoDays!==0
&& noDays > maxNoDays){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'rules', 'maxTimeLapseDaysWarning').replace(/%d/gi, maxNoDays));
return false;
}
if(DOT.methods.calendar_days.settings[ID]['morningCheckOut']===true){
if(!DOT.methods.calendar_availability.verify(ID, ciDay, coDay)){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'search', 'noServices'));
return false;
}
coDay=DOPPrototypes.getPrevDay(coDay);
}
if(schedule[ciDay]!==undefined
&& (schedule[ciDay]['bind']===2
|| schedule[ciDay]['bind']===3)
|| schedule[coDay]!==undefined
&& (schedule[coDay]['bind']===1
|| schedule[coDay]['bind']===2)){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'search', 'noServicesSplitGroup'));
return false;
}
if(DOT.methods.calendar_availability.verify(ID, ciDay, coDay)){
return true;
}else{
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'search', 'noServices'));
return false;
}}else{
return false;
}},
getNoAvailable:function(){
var ciDay,
coDay,
currDay,
i,
noAvailable=1000000,
schedule=DOT.methods.calendar_schedule.data[ID],
selectedDays=new Array();
if(DOT.methods.calendar_days.settings[ID]['multipleSelect']){
ciDay=$('#DOPBSPCalendar-check-in'+ID).val();
coDay=$('#DOPBSPCalendar-check-out'+ID).val();
}else{
ciDay=$('#DOPBSPCalendar-check-in'+ID).val();
coDay=$('#DOPBSPCalendar-check-in'+ID).val();
}
if(methods_search.days.validate(ciDay)
&& methods_search.days.validate(coDay)
&& schedule!=={}){
selectedDays=methods_days.getSelected(ciDay,
coDay);
for (i=0; i<selectedDays.length-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 1:0); i++){
currDay=selectedDays[i];
if(schedule[currDay]===undefined ||
schedule[currDay]['available']===''){
if(DOT.methods.calendar_schedule.default[ID]===undefined ||
DOT.methods.calendar_schedule.default[ID]['available']===''){
noAvailable=1;
}
else if(noAvailable > DOT.methods.calendar_schedule.default[ID]['available']){
noAvailable=DOT.methods.calendar_schedule.default[ID]['available'];
}}
else if(noAvailable > schedule[currDay]['available']){
noAvailable=schedule[currDay]['available'];
}}
}
return noAvailable===0||noAvailable===1000000 ? 1:noAvailable;
},
getPrice:function(ciDay,
coDay){
var currDay,
i,
price,
promo,
schedule=DOT.methods.calendar_schedule.data[ID],
selectedDays=new Array(),
totalPrice=0;
coDay=coDay==='' ? ciDay:coDay;
selectedDays=methods_days.getSelected(ciDay,
coDay);
for (i=0; i<selectedDays.length-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 1:0); i++){
currDay=selectedDays[i];
if(schedule[currDay]!==undefined
&& (schedule[currDay]['status']==='available'
|| schedule[currDay]['status']==='special')
&& (schedule[currDay]['bind']===0
|| schedule[currDay]['bind']===1)){
price=parseFloat(schedule[currDay]['price']);
promo=parseFloat(schedule[currDay]['promo']);
if(price!==0){
totalPrice +=promo===0||isNaN(promo)
? price
: promo;
}}
else if(schedule[currDay]===undefined
&& (DOT.methods.calendar_schedule.default[ID]['status']==='available'
|| DOT.methods.calendar_schedule.default[ID]['status']==='special')){
price=parseFloat(DOT.methods.calendar_schedule.default[ID]['price']);
promo=parseFloat(DOT.methods.calendar_schedule.default[ID]['promo']);
if(price!==0){
totalPrice +=promo===0||isNaN(promo)
? price
: promo;
}}
}
return totalPrice;
},
getHistory:function(ciDay,
coDay){
var currDay,
history={},
i,
selectedDays=new Array(),
schedule=DOT.methods.calendar_schedule.data[ID];
coDay=coDay==='' ? ciDay:coDay;
selectedDays=methods_days.getSelected(ciDay,
coDay);
for (i=0; i<selectedDays.length-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 1:0); i++){
currDay=selectedDays[i];
history[currDay]={"available": "",
"bind": 0,
"price": 0,
"promo": 0,
"status": ""};
if(schedule[currDay]===undefined){
schedule[currDay]=DOT.methods.calendar_schedule.default[ID];
}
history[currDay]['available']=schedule[currDay]['available'];
history[currDay]['bind']=schedule[currDay]['bind'];
history[currDay]['price']=schedule[currDay]['price'];
history[currDay]['promo']=schedule[currDay]['promo'];
history[currDay]['status']=schedule[currDay]['status'];
}
return history;
}},
methods_day={
vars: {displayedHours: false,
previousBind: 0,
previousStatus: ''},
display:function(type,
id,
day,
available,
bind,
info,
infoBody,
infoInfo,
price,
promo,
status){
var dayHTML=Array(),
keyTime,
contentLine1='&nbsp;',
contentLine2='&nbsp;',
currDate=new Date,
today=currDate.getFullYear()+'-'+DOPPrototypes.getLeadingZero(currDate.getMonth()+1)+'-'+DOPPrototypes.getLeadingZero(currDate.getDate()),
startTime=currDate.getTime() + methods_calendar.data['bookingStop']*60*1000;
if(methods_hours.data['enabled']){
if(DOT.methods.calendar_schedule.data[ID][id.split('_')[1]]!==undefined){
var hours=DOT.methods.calendar_schedule.data[ID][id.split('_')[1]]['hours'];
available=0;
var i=0;
for(var key in hours){
if(!methods_hours.data['interval_autobreak']){
if((hours[key]['status']==='available'||hours[key]['status']==='special')&&(hours[key]['bind']===0||hours[key]['bind']===1)){
available +=hours[key]['available'];
}
if((id.split('_')[1])===today){
keyTime=new Date(currDate.getFullYear(), currDate.getMonth(), currDate.getDate(), parseInt(key.split(':')[0],10), parseInt(key.split(':')[1], 10));
if(startTime > keyTime.getTime()){
available -=hours[key]['available'];
}}
}
else if(methods_hours.data['interval_autobreak']&&i%2===0){
if(hours[key]['status']==='available'||hours[key]['status']==='special'){
available +=hours[key]['available'];
}
if((id.split('_')[1])===today){
keyTime=new Date(currDate.getFullYear(), currDate.getMonth(), currDate.getDate(), parseInt(key.split(':')[0],10), parseInt(key.split(':')[1], 10));
if(startTime > keyTime.getTime()){
available -=hours[key]['available'];
}}
}
i++;
}}else{
if(DOT.methods.calendar_schedule.default[ID]!==undefined){
var hours=DOT.methods.calendar_schedule.default[ID]['hours'];
available=0;
var i=0;
for(var key in hours){
if(!methods_hours.data['interval_autobreak']){
if(hours[key]['status']==='available'){
available +=hours[key]['available'];
}
if((id.split('_')[1])===today){
keyTime=new Date(currDate.getFullYear(), currDate.getMonth(), currDate.getDate(), parseInt(key.split(':')[0],10), parseInt(key.split(':')[1], 10));
if(startTime > keyTime.getTime()){
available -=hours[key]['available'];
}}
}
else if(methods_hours.data['interval_autobreak']&&i%2===0){
if(hours[key]['status']==='available'){
available +=hours[key]['available'];
}
if((id.split('_')[1])===today){
keyTime=new Date(currDate.getFullYear(), currDate.getMonth(), currDate.getDate(), parseInt(key.split(':')[0],10), parseInt(key.split(':')[1], 10));
if(startTime > keyTime.getTime()){
available -=hours[key]['available'];
}}
}
i++;
}}
}
if(available < 1
&& status==='available'){
status='booked';
price=0;
}}
price=parseFloat(price);
promo=parseFloat(promo);
methods_days.vars.no++;
if(price > 0 
&& (bind===0 
|| bind===1)){
contentLine1=DOPBSPFrontEnd.setPrice(ID, price);
}
if(promo > 0 
&& (bind===0 
|| bind===1)){
contentLine1=DOPBSPFrontEnd.setPrice(ID, promo);;
}
if(type!=='dopbsp-past-day'){
switch (status){
case 'available':
type +=' dopbsp-available';
if(bind===0 
|| bind===1 
|| methods_hours.data['enabled']){
if(methods_calendar.data['hideNoAvailable']){
available='';
}
if(available > 1){
contentLine2=available+' '+'<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'availableMultiple')+'</span>';
}
else if(available===1){
contentLine2=available+' '+'<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'available')+'</span>';
}
else if(methods_calendar.data['hideNoAvailable']){
contentLine2=available+' '+'<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'available')+'</span>';
}else{
contentLine2='<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'available')+'</span>';
}}
break;
case 'booked':
type +=' dopbsp-booked';
contentLine2='<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'booked')+'</span>';
break;
case 'special':
type +=' dopbsp-special';
if(bind===0 
|| bind===1 
|| methods_hours.data['enabled']){
if(methods_calendar.data['hideNoAvailable']){
available='';
}
if(available > 1){
contentLine2=available+' '+'<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'availableMultiple')+'</span>';
}
else if(available===1){
contentLine2=available+' '+'<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'available')+'</span>';
}else{
contentLine2='<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'available')+'</span>';
}}
break;
case 'unavailable':
type +=' dopbsp-unavailable';
contentLine2='<span class="dopbsp-no-available-text">'+DOPBSPFrontEnd.text(ID, 'calendar', 'unavailable')+'</span>';
break;
}
if(type.indexOf('mask')!==-1){
type +=' dopbsp-no-cursor-pointer';
}else{
if(methods_hours.data['enabled']
|| (!DOT.methods.calendar_days.settings[ID]['morningCheckOut']
&& (status==='available'
|| status==='special'))){
type +=' dopbsp-cursor-pointer';
}}
}
if(methods_days.vars.no % 7===1){
type +=' dopbsp-first-column';
}
if(methods_days.vars.no % 7===0){
type +=' dopbsp-last-column';
}
var date=id.split('_')[1],
year=date.split('-')[0],
month=date.split('-')[1],
day=date.split('-')[2],
season='winter';
switch(month){
case "03": case "04": case "05":
season='spring';
break;
case "06": case "07": case "08":
season='summer';
break;
case "09": case "10": case "11":
season='autumn';
break;
default:
season='winter';
break;
}
dayHTML.push('<div class="DOPBSPCalendar-day dopbsp-season-'+season+' '+type+'" id="'+id+'"'+(bind===1 ? ' style="margin: 0 !important;"':'')+'>');
dayHTML.push('  <div class="dopbsp-bind-left'+((bind===2||bind===3)&&(status==='available'||status==='special')&&!methods_hours.data['enabled'] ? ' dopbsp-enabled':'')+(methods_day.vars.previousBind===3&&DOT.methods.calendar_days.settings[ID]['morningCheckOut']&&(methods_day.vars.previousStatus==='available'||methods_day.vars.previousStatus==='special')&&!methods_hours.data['enabled'] ? ' dopbsp-extended dopbsp-'+methods_day.vars.previousStatus:'')+'">');
dayHTML.push('      <div class="dopbsp-head">&nbsp;</div>');
dayHTML.push('      <div class="dopbsp-body">&nbsp;</div>');
dayHTML.push('  </div>');
dayHTML.push('  <div class="dopbsp-bind-middle dopbsp-group'+((status==='available'||status==='special')&&!methods_hours.data['enabled'] ? bind:'0')+(bind===3&&DOT.methods.calendar_days.settings[ID]['morningCheckOut']&&(status==='available'||status==='special')&&!methods_hours.data['enabled'] ? ' dopbsp-extended':'')+(methods_day.vars.previousBind===3&&DOT.methods.calendar_days.settings[ID]['morningCheckOut']&&(methods_day.vars.previousStatus==='available'||methods_day.vars.previousStatus==='special')&&!methods_hours.data['enabled'] ? ' dopbsp-extended':'')+'">');
dayHTML.push('      <div class="dopbsp-head">');
dayHTML.push('          <div class="dopbsp-co dopbsp-'+(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? methods_day.vars.previousStatus:status)+'"></div>');
dayHTML.push('          <div class="dopbsp-ci dopbsp-'+status+'"></div>');
dayHTML.push('          <div class="dopbsp-day">'+day+'</div>');
if((info!==''
|| (infoInfo!==undefined
&& infoInfo.length > 0))
&& type.indexOf('past-day')===-1){
switch (status){
case 'available':
if(bind===0 
|| bind===3 
|| methods_hours.data['enabled']){
dayHTML.push('          <div class="dopbsp-info" id="'+id+'_info"></div>');
}
break;
case 'booked':
dayHTML.push('          <div class="dopbsp-info" id="'+id+'_info"></div>');
break;
case 'special':
if(bind===0 
|| bind===3 
|| methods_hours.data['enabled']){
dayHTML.push('          <div class="dopbsp-info" id="'+id+'_info"></div>');
}
break;
case 'unavailable':
dayHTML.push('          <div class="dopbsp-info" id="'+id+'_info"></div>');
break;
default:
dayHTML.push('          <div class="dopbsp-info" id="'+id+'_info"></div>');
}}
dayHTML.push('      </div>');
dayHTML.push('      <div class="dopbsp-body">');
dayHTML.push('          <div class="dopbsp-co dopbsp-'+(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? methods_day.vars.previousStatus:status)+'"></div>');
dayHTML.push('          <div class="dopbsp-ci dopbsp-'+status+'"></div>');
if(!methods_calendar.data['hidePrice']){
dayHTML.push('          <div class="dopbsp-price">'+contentLine1+'</div>');
}
if(promo > 0 
&& (bind===0 
|| bind===1)){
dayHTML.push('          <div class="dopbsp-old-price">'+DOPBSPFrontEnd.setPrice(ID, price)+'</div>');
}
dayHTML.push('          <br class="DOPBSPCalendar-clear" />');
dayHTML.push('          <div class="dopbsp-available">'+contentLine2+'</div>');
if((infoBody!==undefined
&& infoBody.length > 0)
&& type.indexOf('past-day')===-1){
dayHTML.push('          <div class="dopbsp-info-body" id="'+id+'_info-body">');
dayHTML.push('              <div class="dopbsp-info-body-mask">&#8594;</div>');
dayHTML.push(methods_form.getInfo(infoBody));
dayHTML.push('          </div>');
}
dayHTML.push('      </div>');
dayHTML.push('  </div>');
dayHTML.push('  <div class="dopbsp-bind-right'+((bind===1||bind===2)&&(status==='available'||status==='special')&&!methods_hours.data['enabled'] ? ' dopbsp-enabled':'')+(bind===3&&DOT.methods.calendar_days.settings[ID]['morningCheckOut']&&(status==='available'||status==='special')&&!methods_hours.data['enabled'] ? ' dopbsp-extended':'')+'">');
dayHTML.push('      <div class="dopbsp-head">&nbsp;</div>');
dayHTML.push('      <div class="dopbsp-body">&nbsp;</div>');
dayHTML.push('  </div>');
dayHTML.push('</div>');
if(type!=='dopbsp-past-day'){
methods_day.vars.previousStatus=status;
methods_day.vars.previousBind=bind;
}else{
methods_day.vars.previousStatus='none';
methods_day.vars.previousBind=0;
}
return dayHTML.join('');
},
default:function(day){
return {"available": DOT.methods.calendar_schedule.default[ID]['available'],
"bind": 0,
"hours_definitions":  DOT.methods.calendar_schedule.default[ID]['hours_definitions'],
"hours":  DOT.methods.calendar_schedule.default[ID]['hours'],
"info":  DOT.methods.calendar_schedule.default[ID]['info'],
"info_body": "",
"info_info": "",
"notes":  DOT.methods.calendar_schedule.default[ID]['notes'],
"price":  DOT.methods.calendar_schedule.default[ID]['price'],
"promo":  DOT.methods.calendar_schedule.default[ID]['promo'],
"status":  DOT.methods.calendar_schedule.default[ID]['status']};},
rp:function(){
var $day=$('.DOPBSPCalendar-day', Container),
$dayBody=$('.DOPBSPCalendar-day .dopbsp-body', Container),
$month=$('#DOPBSPCalendar-month-'+ID+'-1'),
dayWidth=0,
maxHeight=0,
hiddenBustedItems=DOPPrototypes.doHiddenBuster($(Container));
dayWidth=parseInt(($month.width()-parseInt($month.css('padding-left'))+parseInt($month.css('padding-right')))/7);
$dayBody.removeAttr('style');
$day.width(dayWidth);
$day.find($('.dopbsp-bind-middle')).width(dayWidth-2);
if(dayWidth <=70){
$day.find($('.dopbsp-no-available-text')).css('display', 'none');
}else{
$day.find($('.dopbsp-no-available-text')).css('display', 'inline');
}
if(dayWidth <=40){
$day.addClass('dopbsp-style-small');
}else{
$day.removeClass('dopbsp-style-small');
$('.DOPBSPCalendar-day .dopbsp-bind-middle .dopbsp-body', Container).each(function(){
if(maxHeight < $(this).height()){
maxHeight=$(this).height();
}});
$dayBody.height(maxHeight);
}
DOPPrototypes.undoHiddenBuster(hiddenBustedItems);
},
getInfo:function(info){
var info=new Array(),
i;
for (i=0; i<info.length; i++){
info.push(info[i]);
}
return info.join('<br />');
},
events: {
init:function(){
if(!methods_calendar.data['view']){
if(methods_hours.data['enabled']){
methods_day.events.selectHours();
}else{
if(DOT.methods.calendar_days.settings[ID]['multipleSelect']){
methods_day.events.selectMultiple();
}else{
methods_day.events.selectSingle();
}}
}else{
$('.DOPBSPCalendar-day .dopbsp-co', Container).css('cursor', 'default');
$('.DOPBSPCalendar-day .dopbsp-ci', Container).css('cursor', 'default');
}
if(!DOPPrototypes.isTouchDevice()){
$('.DOPBSPCalendar-day', Container).hover(function(){
var day=$(this);
if(methods_days.vars.selectionInit){
methods_days.displaySelection(day.attr('id'));
}
if(methods_hours.data['enabled']
&& methods_hours.data['info']
&& !day.hasClass('dopbsp-past-day')
&& !day.hasClass('dopbsp-selected')
&& !day.hasClass('dopbsp-unavailable')
&& !day.hasClass('dopbsp-mask')){
methods_tooltip.set($(this).attr('id').split('_')[1],
'',
'hours',
methods_hours.displayInfo(day.attr('id')));
}}, function(){
methods_tooltip.clear();
});
$('.DOPBSPCalendar-day .dopbsp-info', Container).hover(function(){
methods_tooltip.set($(this).attr('id').split('_')[1],
'',
'info');
}, function(){
methods_tooltip.clear();
});
$('.DOPBSPCalendar-day .dopbsp-info-body', Container).hover(function(){
methods_tooltip.set($(this).attr('id').split('_')[1],
'',
'info-body');
}, function(){
methods_tooltip.clear();
});
}else{
var xPos=0,
yPos=0,
touch;
$('.DOPBSPCalendar-day .dopbsp-info', Container).unbind('touchstart');
$('.DOPBSPCalendar-day .dopbsp-info', Container).bind('touchstart', function(e){
e.preventDefault();
touch=e.originalEvent.touches[0];
xPos=touch.clientX+$(document).scrollLeft();
yPos=touch.clientY+$(document).scrollTop();
$('#DOPBSPCalendar-tooltip'+ID).css({'left': xPos,
'top': yPos});
methods_tooltip.set($(this).attr('id').split('_')[1],
'',
'info');
});
$('.DOPBSPCalendar-day .dopbsp-info-body', Container).unbind('touchstart');
$('.DOPBSPCalendar-day .dopbsp-info-body', Container).bind('touchstart', function(e){
e.preventDefault();
touch=e.originalEvent.touches[0];
xPos=touch.clientX+$(document).scrollLeft();
yPos=touch.clientY+$(document).scrollTop();
$('#DOPBSPCalendar-tooltip'+ID).css({'left': xPos,
'top': yPos});
methods_tooltip.set($(this).attr('id').split('_')[1],
'',
'info-body');
});
}},
selectHours:function(){
$('.DOPBSPCalendar-day', Container).unbind('click');
$('.DOPBSPCalendar-day', Container).bind('click', function(){
var day=$(this);
if(!day.hasClass('dopbsp-mask')
&& !day.hasClass('dopbsp-past-day')
&& !day.hasClass('dopbsp-unavailable')){
methods_hours.display(day.attr('id'));
}});
},
selectMultiple:function(){
$('.DOPBSPCalendar-day', Container).unbind('click');
$('.DOPBSPCalendar-day', Container).bind('click', function(){
var auxDate,
$day=$(this),
eDate,
eDay,
eMonth,
eYear,
minDateValue=0,
sDate,
sDay,
sMonth,
sYear;
setTimeout(function(){
if(!$day.hasClass('dopbsp-mask')
&& !$day.hasClass('dopbsp-past-day')){
if(!methods_days.vars.selectionInit){
methods_days.vars.selectionInit=true;
methods_days.vars.selectionStart=$day.attr('id');
methods_days.vars.selectionEnd='';
sDate=methods_days.vars.selectionStart.split('_')[1];
sYear=sDate.split('-')[0];
sMonth=parseInt(sDate.split('-')[1], 10)-1;
sDay=sDate.split('-')[2];
minDateValue=DOPPrototypes.getNoDays(DOPPrototypes.getToday(), sDate)-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 0:1);
$('#DOPBSPCalendar-check-in'+ID).val(sDate);
$('#DOPBSPCalendar-check-in-view'+ID).val(methods_calendar.data['dateType']===1 ?
DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth]+' '+sDay+', '+sYear:
sDay+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth]+' '+sYear);
$('#DOPBSPCalendar-check-out'+ID).val('');
$('#DOPBSPCalendar-check-out-view'+ID).val(DOPBSPFrontEnd.text(ID, 'search', 'checkOut'))
.removeAttr('disabled');
methods_search.days.initDatepicker('#DOPBSPCalendar-check-out-view'+ID,
'#DOPBSPCalendar-check-out'+ID,
minDateValue);
methods_days.displaySelection(methods_days.vars.selectionStart);
}
else if(!DOT.methods.calendar_days.settings[ID]['morningCheckOut']
|| (DOT.methods.calendar_days.settings[ID]['morningCheckOut']
&& methods_days.vars.selectionStart!==$day.attr('id'))){
methods_days.vars.selectionInit=false;
methods_days.vars.selectionEnd=$day.attr('id');
$('#DOPBSPCalendar-check-out-view'+ID).removeAttr('disabled');
if(methods_days.vars.selectionStart > methods_days.vars.selectionEnd){
auxDate=methods_days.vars.selectionStart;
methods_days.vars.selectionStart=methods_days.vars.selectionEnd;
methods_days.vars.selectionEnd=auxDate;
}
sDate=methods_days.vars.selectionStart.split('_')[1];
sYear=sDate.split('-')[0];
sMonth=parseInt(sDate.split('-')[1], 10)-1;
sDay=sDate.split('-')[2];
eDate=methods_days.vars.selectionEnd.split('_')[1];
eYear=eDate.split('-')[0];
eMonth=parseInt(eDate.split('-')[1], 10)-1;
eDay=eDate.split('-')[2];
minDateValue=DOPPrototypes.getNoDays(DOPPrototypes.getToday(), sDate)-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 0:1);
$('#DOPBSPCalendar-check-in'+ID).val(sDate);
$('#DOPBSPCalendar-check-in-view'+ID).val(methods_calendar.data['dateType']===1 ?
DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth]+' '+sDay+', '+sYear:
sDay+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth]+' '+sYear);
$('#DOPBSPCalendar-check-out'+ID).val(eDate);
$('#DOPBSPCalendar-check-out-view'+ID).val(methods_calendar.data['dateType']===1 ?
DOPBSPFrontEnd.text(ID, 'months', 'names')[eMonth]+' '+eDay+', '+eYear:
eDay+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[eMonth]+' '+eYear);
methods_search.days.initDatepicker('#DOPBSPCalendar-check-out-view'+ID,
'#DOPBSPCalendar-check-out'+ID,
minDateValue);
methods_days.displaySelection(methods_days.vars.selectionEnd);
methods_search.set();
}}
}, 10);
});
},
selectSingle:function(){
$('.DOPBSPCalendar-day', Container).unbind('click');
$('.DOPBSPCalendar-day', Container).bind('click', function(){
var day=$(this),
dayThis=this,
sDate,
sDay,
sMonth,
sYear;
setTimeout(function(){
if((day.hasClass('dopbsp-available')
|| day.hasClass('dopbsp-special'))
&& $('.dopbsp-bind-middle', dayThis).hasClass('dopbsp-group0')){
methods_days.vars.selectionInit=false;
methods_days.vars.selectionStart=day.attr('id');
methods_days.vars.selectionEnd=day.attr('id');
sDate=methods_days.vars.selectionStart.split('_')[1];
sYear=sDate.split('-')[0];
sMonth=parseInt(sDate.split('-')[1], 10)-1;
sDay=sDate.split('-')[2];
$('#DOPBSPCalendar-check-in'+ID).val(sDate);
$('#DOPBSPCalendar-check-in-view'+ID).val(methods_calendar.data['dateType']===1 ?
DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth]+' '+sDay+', '+sYear:
sDay+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth]+' '+sYear);
methods_days.displaySelection(methods_days.vars.selectionEnd);
methods_search.set();
}}, 10);
});
}}
},
methods_hours={
data: {},
text: {},
vars: {selectionEnd: '',
selectionInit: false,
selectionStart: ''},
display:function(id){
var currHour=methods_calendar.vars.startDate.getHours(),
currMin=methods_calendar.vars.startDate.getMinutes(),
hour,
hoursContainer,
hoursDef=methods_hours.data['definitions'],
HTML=new Array(),
i,
date=id.split('_')[1],
year=date.split('-')[0],
month=date.split('-')[1],
day=date.split('-')[2],
weekday=DOT.methods.calendar_day.get(ID,
year+'-'+month+'-'+day);
methods_days.vars.selectionInit=false;
methods_days.vars.selectionStart=id;
methods_days.vars.selectionEnd=id;
methods_day.vars.displayedHours=true;
methods_hours.vars.selectionInit=false;
methods_hours.vars.selectionStart='';
methods_hours.vars.selectionEnd='';
$('#DOPBSPCalendar-check-in'+ID).val(date);
$('#DOPBSPCalendar-check-in-view'+ID).val(methods_calendar.data['dateType']===1 ? DOPBSPFrontEnd.text(ID, 'months', 'names')[parseInt(month, 10)-1]+' '+day+', '+year:
day+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[parseInt(month, 10)-1]+' '+year);
methods_days.displaySelection(methods_days.vars.selectionEnd);
$('#'+methods_days.vars.selectionStart).addClass('dopbsp-selected');
methods_search.set();
if(weekday['status']==='unavailable'){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'search', 'noServices'));
return false;
}
if(DOT.methods.calendar_schedule.data[ID][date]!==undefined){
hoursDef=DOT.methods.calendar_schedule.data[ID][date]['hours_definitions'];
}else if(DOT.methods.calendar_schedule.default[ID]!==undefined){
hoursDef=DOT.methods.calendar_schedule.default[ID]['hours_definitions'];
}
for (i=0; i<hoursDef.length-(methods_hours.data['interval'] ? 1:0); i++){
if(DOT.methods.calendar_schedule.data[ID][date]!==undefined
&& DOT.methods.calendar_schedule.data[ID][date]['hours'][hoursDef[i]['value']]!==undefined){
hour=DOT.methods.calendar_schedule.data[ID][date]['hours'][hoursDef[i]['value']];
}else{
hour=methods_hour.default(hoursDef[i]['value']);
}
if(methods_hours.data['interval_autobreak']){
if(i%2===0){
HTML.push(methods_hour.display(ID+'_'+hoursDef[i]['value'],
hoursDef[i]['value'],
hour['available'],
hour['bind'],
hour['info'],
hour['info_body'],
hour['info_info'],
hour['price'],
hour['promo'],
hoursDef[i]['value'] < DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
&& methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)===year+'-'+month+'-'+day
? 'past-hour':hour['status'],
hoursDef));
}}else{
HTML.push(methods_hour.display(ID+'_'+hoursDef[i]['value'],
hoursDef[i]['value'],
hour['available'],
hour['bind'],
hour['info'],
hour['info_body'],
hour['info_info'],
hour['price'],
hour['promo'],
hoursDef[i]['value'] < DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
&& methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)===year+'-'+month+'-'+day
? 'past-hour':hour['status'],
hoursDef));
}}
$('.DOPBSPCalendar-hours', Container).css('display', 'none')
.html('');
if($('#'+id).hasClass('dopbsp-next-month')){
$('.DOPBSPCalendar-hours', Container).each(function(){
hoursContainer=$(this);
});
hoursContainer.css('display', 'block')
.html(HTML.join(''));
}
else if($('#'+id).hasClass('dopbsp-last-month')){
$($('.DOPBSPCalendar-hours', Container).get().reverse()).each(function(){
hoursContainer=$(this);
});
hoursContainer.css('display', 'block')
.html(HTML.join(''));
}else{
$('#'+ID+'_'+year+'-'+month+'_hours').css('display', 'block')
.html(HTML.join(''));
}
methods_hour.events.init();
methods_search.hours.set();
DOPPrototypes.scrollToY($('#DOPBSPCalendar'+ID+' .DOPBSPCalendar-hours').offset().top-40);
},
displayInfo:function(id){
var currHour=methods_calendar.vars.startDate.getHours(),
currMin=methods_calendar.vars.startDate.getMinutes(),
hour,
hoursDef=methods_hours.data['definitions'],
HTML=new Array(),
i,
date=id.split('_')[1],
year=date.split('-')[0],
month=date.split('-')[1],
day=date.split('-')[2];
if(DOT.methods.calendar_schedule.data[ID][date]!==undefined){
hoursDef=DOT.methods.calendar_schedule.data[ID][date]['hours_definitions'];
}
for (i=0; i<hoursDef.length-(methods_hours.data['interval'] ? 1:0); i++){
if(DOT.methods.calendar_schedule.data[ID][date]!==undefined
&& DOT.methods.calendar_schedule.data[ID][date]['hours'][hoursDef[i]['value']]!==undefined){
hour=DOT.methods.calendar_schedule.data[ID][date]['hours'][hoursDef[i]['value']];
}else{
hour=methods_hour.default(hoursDef[i]['value']);
}
if(methods_hours.data['interval_autobreak']){
if(i%2===0){
HTML.push(methods_hour.display(ID+'_'+hoursDef[i]['value'],
hoursDef[i]['value'],
hour['available'],
hour['bind'],
'',
hour['info_body'],
'',
hour['price'],
hour['promo'],
hoursDef[i]['value'] < DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
&& methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)===year+'-'+month+'-'+day
? 'past-hour':hour['status'],
hoursDef));
}}else{
HTML.push(methods_hour.display(ID+'_'+hoursDef[i]['value'],
hoursDef[i]['value'],
hour['available'],
hour['bind'],
'',
hour['info_body'],
'',
hour['price'],
hour['promo'],
hoursDef[i]['value'] < DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
&& methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)===year+'-'+month+'-'+day
? 'past-hour':hour['status'],
hoursDef));
}}
return HTML.join('');
},
displaySelection:function(id){
var hour;
id=id===undefined ? methods_hours.vars.selectionEnd:id;
$('.DOPBSPCalendar-hour', Container).removeClass('dopbsp-selected');
if(id < methods_hours.vars.selectionStart){
$($('.DOPBSPCalendar-hour', Container).get().reverse()).each(function(){
hour=$(this);
if(hour.attr('id') >=id
&& hour.attr('id') <=methods_hours.vars.selectionStart
&& !hour.hasClass('dopbsp-past-hour')){
hour.addClass('dopbsp-selected');
}});
}else{
$('.DOPBSPCalendar-hour', Container).each(function(){
hour=$(this);
if(hour.attr('id') >=methods_hours.vars.selectionStart
&& hour.attr('id') <=id
&& !hour.hasClass('dopbsp-past-hour')){
hour.addClass('dopbsp-selected');
}});
}
$('.DOPBSPCalendar-hour.selected .dopbsp-bind-middle', Container).removeAttr('style');
$('.DOPBSPCalendar-hour.selected .dopbsp-bind-middle .dopbsp-hour', Container).removeAttr('style');
},
clear:function(){
methods_days.vars.selectionInit=false;
methods_days.vars.selectionStart='';
methods_days.vars.selectionEnd='';
methods_day.vars.displayedHours='';
methods_hours.vars.selectionInit=false;
methods_hours.vars.selectionStart='';
methods_hours.vars.selectionEnd='';
methods_days.clearSelection();
$('.DOPBSPCalendar-hours', Container).css('display', 'none')
.html('');
methods_search.set();
},
getSelected:function(day,
startHour,
endHour){
var schedule=DOT.methods.calendar_schedule.data[ID],
selectedHours=new Array(),
hours_definitions=schedule[day]!==undefined ? (schedule[day]['hours_definitions']!==undefined ? schedule[day]['hours_definitions']:DOT.methods.calendar_schedule.default[ID]['hours_definitions']):DOT.methods.calendar_schedule.default[ID]['hours_definitions'];
endHour=endHour==='' ? startHour:endHour;
$.each(hours_definitions, function(index){
if(startHour <=hours_definitions[index]['value']
&& hours_definitions[index]['value'] <=endHour){
selectedHours.push(hours_definitions[index]['value']);
}});
return selectedHours;
},
getAvailability:function(day,
startHour,
endHour){
var maxNoMinutes,
minNoMinutes,
noMinutes,
lastHour,
hours_definitions,
schedule=DOT.methods.calendar_schedule.data[ID];
hours_definitions=schedule[day]!==undefined ? (schedule[day]['hours_definitions']!==undefined ? schedule[day]['hours_definitions']:DOT.methods.calendar_schedule.default[ID]['hours_definitions']):DOT.methods.calendar_schedule.default[ID]['hours_definitions'];
endHour=endHour===''&&!methods_hours.data['multipleSelect'] ? startHour:endHour;
if(methods_search.days.validate(day)
&& startHour!==''
&& endHour!==''){
maxNoMinutes=DOPBSPFrontEndRules.getMaxTimeLapse(ID)*60;
minNoMinutes=DOPBSPFrontEndRules.getMinTimeLapse(ID)*60;
noMinutes=DOPPrototypes.getHoursDifference(startHour, endHour, 'minutes');
if(noMinutes < minNoMinutes){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'rules', 'minTimeLapseHoursWarning').replace(/%d/gi, minNoMinutes/60));
return false;
}
if(maxNoMinutes!==0
&& noMinutes > maxNoMinutes){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'rules', 'maxTimeLapseHoursWarning').replace(/%d/gi, maxNoMinutes/60));
return false;
}
lastHour=schedule[day]===undefined ? endHour:methods_hour.getPrev(endHour, hours_definitions);
if(schedule[day]!==undefined&&methods_hours.data['multipleSelect']&&(schedule[day]['hours'][startHour]['bind']===2 
|| schedule[day]['hours'][startHour]['bind']===3
|| schedule[day]['hours'][methods_hours.data['interval']===true ? lastHour:endHour]['bind']===1 
|| schedule[day]['hours'][methods_hours.data['interval']===true ? lastHour:endHour]['bind']===2)){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'search', 'noServicesSplitGroup'));
return false;
}
endHour=methods_hours.data['interval'] ? endHour:methods_hour.getNext(endHour,hours_definitions);
if(DOT.methods.calendar_availability.verify(ID, day, day, startHour, endHour)){
return true;
}else{
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'search', 'noServices'));
return false;
}}else{
return false;
}},
getNoAvailable:function(){
var currHour,
day,
endHour,
i,
noAvailable=1000000,
schedule=DOT.methods.calendar_schedule.data[ID],
selectedHours=new Array(),
startHour;
day=$('#DOPBSPCalendar-check-in'+ID).val();
if(methods_hours.data['multipleSelect']){
startHour=$('#DOPBSPCalendar-start-hour'+ID).val();
endHour=$('#DOPBSPCalendar-end-hour'+ID).val();
}else{
startHour=$('#DOPBSPCalendar-start-hour'+ID).val();
endHour=$('#DOPBSPCalendar-start-hour'+ID).val();
}
if(methods_search.days.validate(day)
&& startHour!==''
&& endHour!==''
&& ((schedule!=={}
&& schedule[day]!==undefined)
|| (DOT.methods.calendar_schedule.default[ID]!=={}
&& DOT.methods.calendar_schedule.default[ID]!==undefined))){
selectedHours=methods_hours.getSelected(day,
startHour,
endHour);
for (i=0; i<selectedHours.length-((!methods_hours.data['addLastHourToTotalPrice']||methods_hours.data['interval'])&&methods_hours.data['multipleSelect'] ? 1:0); i++){
currHour=selectedHours[i];
if(schedule[day]!==undefined
&& schedule[day]['hours'][currHour]!==undefined
&& (schedule[day]['hours'][currHour]['status']==='available'
|| schedule[day]['hours'][currHour]['status']==='special')
|| (DOT.methods.calendar_schedule.default[ID]['hours'][currHour]!==undefined
&& (DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status']==='available'
|| DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status']==='special'))){
if(schedule[day]!==undefined
&& schedule[day]['hours'][currHour]['available']===''){
if(DOT.methods.calendar_schedule.default[ID]===undefined
|| DOT.methods.calendar_schedule.default[ID]['hours'][currHour]===undefined){
noAvailable=1;
}else{
noAvailable=DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['available'];
}}
else if(schedule[day]!==undefined
&& parseInt(schedule[day]['hours'][currHour]['available'], 10) < noAvailable){
noAvailable=parseInt(schedule[day]['hours'][currHour]['available'], 10);
}
if(schedule[day]===undefined){
if(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]!==undefined
&& DOT.methods.calendar_schedule.default[ID]!==undefined){
if(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]!==undefined){
noAvailable=DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['available'];
}else{
noAvailable=1;
}}else{
noAvailable=1;
}}else{
if(schedule[day]['hours'][currHour]!==undefined
&& schedule[day]!==undefined){
if(schedule[day]['hours'][currHour]!==undefined){
noAvailable=noAvailable < parseInt(schedule[day]['hours'][currHour]['available'], 10) ? noAvailable:parseInt(schedule[day]['hours'][currHour]['available'], 10);
}else{
noAvailable=1;
}}else{
noAvailable=1;
}}
}}
}
return noAvailable===0||noAvailable===1000000 ? 1:noAvailable;
},
getPrice:function(day,
startHour,
endHour){
var currHour,
i,
price,
promo,
schedule=DOT.methods.calendar_schedule.data[ID],
selectedHours=new Array(),
totalPrice=0;
endHour=endHour==='' ? startHour:endHour;
selectedHours=methods_hours.getSelected(day,
startHour,
endHour);
for (i=0; i<selectedHours.length-((!methods_hours.data['addLastHourToTotalPrice']||methods_hours.data['interval'])&&methods_hours.data['multipleSelect'] ? 1:0); i++){
currHour=selectedHours[i];
if(methods_hours.data['interval_autobreak']){
if((i+1)%2!==0){
if(schedule[day]!==undefined
&& schedule[day]['hours'][currHour]!==undefined
&& (schedule[day]['hours'][currHour]['status']==='available'
|| schedule[day]['hours'][currHour]['status']==='special')
&& (schedule[day]['hours'][currHour]['bind']===0
|| schedule[day]['hours'][currHour]['bind']===1)){
price=parseFloat(schedule[day]['hours'][currHour]['price']);
promo=parseFloat(schedule[day]['hours'][currHour]['promo']);
if(price!==0){
totalPrice +=promo===0 ? price:promo;
}}else if(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]!==undefined
&& (DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status']==='available'
|| DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status']==='special')
&& (DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['bind']===0
|| DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['bind']===1)){
price=parseFloat(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['price']);
promo=parseFloat(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['promo']);
if(price!==0){
totalPrice +=promo===0 ? price:promo;
}}
}}else{
if(schedule[day]!==undefined&&(schedule[day]['hours'][currHour]!==undefined
&& (schedule[day]['hours'][currHour]['status']==='available'
|| schedule[day]['hours'][currHour]['status']==='special')
&& (schedule[day]['hours'][currHour]['bind']===0
|| schedule[day]['hours'][currHour]['bind']===1))){
price=parseFloat(schedule[day]['hours'][currHour]['price']);
promo=parseFloat(schedule[day]['hours'][currHour]['promo']);
if(price!==0){
totalPrice +=promo===0 ? price:promo;
}}else if(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]!==undefined
&& (DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status']==='available'
|| DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status']==='special')
&& (DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['bind']===0
|| DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['bind']===1)){
price=parseFloat(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['price']);
promo=parseFloat(DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['promo']);
if(price!==0){
totalPrice +=promo===0 ? price:promo;
}}
}}
return totalPrice;
},
getHistory:function(day,
startHour,
endHour){
var currHour,
history={},
i,
schedule=DOT.methods.calendar_schedule.data[ID],
selectedHours=new Array();
endHour=endHour==='' ? startHour:endHour;
selectedHours=methods_hours.getSelected(day,
startHour,
endHour);
for (i=0; i<selectedHours.length-((!methods_hours.data['addLastHourToTotalPrice']||methods_hours.data['interval'])&&methods_hours.data['multipleSelect'] ? 1:0); i++){
currHour=selectedHours[i];
history[currHour]={"available": "",
"bind": 0,
"price": 0,
"promo": 0,
"status": ""};
history[currHour]['available']=schedule[day]!==undefined ? (schedule[day]['hours'][currHour]!==undefined ? schedule[day]['hours'][currHour]['available']:DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['available']):DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['available'];
history[currHour]['bind']=schedule[day]!==undefined ? (schedule[day]['hours'][currHour]!==undefined ? schedule[day]['hours'][currHour]['bind']:DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['bind']):DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['bind'];
history[currHour]['price']=schedule[day]!==undefined ? (schedule[day]['hours'][currHour]!==undefined ? schedule[day]['hours'][currHour]['price']:DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['price']):DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['price'];
history[currHour]['promo']=schedule[day]!==undefined ? (schedule[day]['hours'][currHour]!==undefined ? schedule[day]['hours'][currHour]['promo']:DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['promo']):DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['promo'];
history[currHour]['status']=schedule[day]!==undefined ? (schedule[day]['hours'][currHour]!==undefined ? schedule[day]['hours'][currHour]['status']:DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status']):DOT.methods.calendar_schedule.default[ID]['hours'][currHour]['status'];
}
return history;
}},
methods_hour={
display:function(id,
hour,
available,
bind,
info,
infoBody,
infoInfo,
price,
promo,
status,
hoursDef){
var hourHTML=new Array(),
priceContent='&nbsp;',
availableContent='&nbsp;',
type='';
if(status!=='past-hour'){
if(price > 0 
&& (bind===0 
|| bind===1)){
priceContent=DOPBSPFrontEnd.setPrice(ID, price);
}
if(promo > 0 
&& (bind===0 
|| bind===1)){
priceContent=DOPBSPFrontEnd.setPrice(ID, promo);
}
switch (status){
case 'available':
type +=' dopbsp-available';
if(bind===0 
|| bind===1){
if(methods_calendar.data['hideNoAvailable']){
available='';
}
if(available > 1){
availableContent=available+' '+DOPBSPFrontEnd.text(ID, 'calendar', 'availableMultiple');
}
else if(available===1){
availableContent=available+' '+DOPBSPFrontEnd.text(ID, 'calendar', 'available');
}else{
availableContent=DOPBSPFrontEnd.text(ID, 'calendar', 'available');
}}
break;
case 'booked':
type +=' dopbsp-booked';
if(bind===0 
|| bind===1){
availableContent=DOPBSPFrontEnd.text(ID, 'calendar', 'booked');
}
break;
case 'special':
type +=' dopbsp-special';
if(bind===0 
|| bind===1){
if(methods_calendar.data['hideNoAvailable']){
available='';
}
if(available > 1){
availableContent=available+' '+DOPBSPFrontEnd.text(ID, 'calendar', 'availableMultiple');
}
else if(available===1){
availableContent=available+' '+DOPBSPFrontEnd.text(ID, 'calendar', 'available');
}else{
availableContent=DOPBSPFrontEnd.text(ID, 'calendar', 'available');
}}
break;
case 'unavailable':
type +=' dopbsp-unavailable';
if(bind===0 
|| bind===1){
availableContent=DOPBSPFrontEnd.text(ID, 'calendar', 'unavailable');
}
break;
}}else{
type=' dopbsp-'+status;
}
hourHTML.push('<div class="DOPBSPCalendar-hour'+type+'" id="'+id+'">');
hourHTML.push('    <div class="dopbsp-bind-top'+((bind===2||bind===3)&&(status==='available'||status==='special') ? ' dopbsp-enabled':'')+'"><div class="dopbsp-hour">&nbsp;</div></div>');
hourHTML.push('    <div class="dopbsp-bind-middle dopbsp-group'+(status==='available'||status==='special' ? bind:'0')+'">');
hourHTML.push('        <div class="dopbsp-hour">'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hour):hour)+(methods_hours.data['interval'] ? ' - '+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(methods_hour.getNext(hour, hoursDef)):methods_hour.getNext(hour, hoursDef)):'')+'</div>');
if(price > 0 
&& type!==' dopbsp-past-hour'
&& (bind===0 
|| bind===1)){
if(!methods_calendar.data['hidePrice']){
hourHTML.push('        <div class="'+(promo > 0 ? 'dopbsp-price-promo':'dopbsp-price')+'">'+priceContent+'</div>');
}}
if(promo > 0 
&& type!==' dopbsp-past-hour'
&& (bind===0 
|| bind===1)){
hourHTML.push('        <div class="dopbsp-old-price">'+DOPBSPFrontEnd.setPrice(ID, price)+'</div>');
}
hourHTML.push('        <div class="dopbsp-available">'+availableContent+'</div>');
if((infoBody!==undefined
&& infoBody.length > 0)
&& type!==' dopbsp-past-hour'){
hourHTML.push('          <div class="dopbsp-info-body" id="'+id+'_info-body">');
hourHTML.push('              <div class="dopbsp-info-body-mask">&#8594;</div>');
hourHTML.push(methods_form.getInfo(infoBody));
hourHTML.push('          </div>');
}
if((info!==''
|| (infoInfo!==undefined
&& infoInfo.length > 0))
&& type!==' dopbsp-past-hour'
&& (bind===0 
|| bind===1)){
hourHTML.push('        <div class="dopbsp-info" id="'+id+'_info"></div>');
}
hourHTML.push('    </div>');
hourHTML.push('    <div class="dopbsp-bind-bottom'+((bind===1||bind===2)&&(status==='available'||status==='special') ? ' dopbsp-enabled':'')+'"><div class="dopbsp-hour">&nbsp;</div></div>');
hourHTML.push('</div>');
return hourHTML.join('');
},
default:function(hour){
return {"available": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['available']:0,
"bind": 0,
"info": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['info']:"",
"info_body": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['info_body']:"",
"info_info": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['info_info']:"",
"notes": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['notes']:"",
"price": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['price']:0,
"promo": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['promo']:0,
"status": DOT.methods.calendar_schedule.default[ID]['hours']!==undefined&&DOT.methods.calendar_schedule.default[ID]['hours'][hour]!==undefined ? DOT.methods.calendar_schedule.default[ID]['hours'][hour]['status']:"none"};},
getNext:function(hour,
hours){
var nextHour='24:00',
i;
for (i=hours.length-1; i>=0; i--){
if(hours[i]['value'] > hour){
nextHour=hours[i]['value'];
}}
return nextHour;
},
getPrev:function(hour,
hours){
var previousHour='00:00',
i;
for (i=0; i<hours.length; i++){
if(hours[i]['value'] < hour){
previousHour=hours[i]['value'];
}}
return previousHour;
},
events: {
init:function(){
if(methods_hours.data['multipleSelect']){
methods_hour.events.selectMultiple();
}else{
methods_hour.events.selectSingle();
}
if(!DOPPrototypes.isTouchDevice()){
$('.DOPBSPCalendar-hour', Container).hover(function(){
var hour=$(this);
if(methods_hours.vars.selectionInit){
methods_hours.displaySelection(hour.attr('id'));
}});
$('.DOPBSPCalendar-hour .dopbsp-info', Container).hover(function(){
methods_tooltip.set(methods_days.vars.selectionStart.split('_')[1],
$(this).attr('id').split('_')[1],
'info');
}, function(){
methods_tooltip.clear();
});
$('.DOPBSPCalendar-hour .dopbsp-info-body', Container).hover(function(){
methods_tooltip.set(methods_days.vars.selectionStart.split('_')[1],
$(this).attr('id').split('_')[1],
'info-body');
}, function(){
methods_tooltip.clear();
});
}else{
var xPos=0,
yPos=0,
touch;
$('.DOPBSPCalendar-hour .dopbsp-info', Container).unbind('touchstart');
$('.DOPBSPCalendar-hour .dopbsp-info', Container).bind('touchstart', function(e){
e.preventDefault();
touch=e.originalEvent.touches[0];
xPos=touch.clientX+$(document).scrollLeft();
yPos=touch.clientY+$(document).scrollTop();
$('#DOPBSPCalendar-tooltip'+ID).css({'left': xPos,
'top': yPos});
methods_tooltip.set(methods_days.vars.selectionStart.split('_')[1],
$(this).attr('id').split('_')[1],
'info');
});
$('.DOPBSPCalendar-hour .dopbsp-info-body', Container).unbind('touchstart');
$('.DOPBSPCalendar-hour .dopbsp-info-body', Container).bind('touchstart', function(e){
e.preventDefault();
touch=e.originalEvent.touches[0];
xPos=touch.clientX+$(document).scrollLeft();
yPos=touch.clientY+$(document).scrollTop();
$('#DOPBSPCalendar-tooltip'+ID).css({'left': xPos,
'top': yPos});
methods_tooltip.set(methods_days.vars.selectionStart.split('_')[1],
$(this).attr('id').split('_')[1],
'info-body');
});
}},
selectMultiple:function(){
$('.DOPBSPCalendar-hour', Container).unbind('click');
$('.DOPBSPCalendar-hour', Container).bind('click', function(){
if(!$(this).hasClass('dopbsp-past-hour')){
var hour=$(this),
selectionAux,
selectionDay=methods_days.vars.selectionStart,
schedule=DOT.methods.calendar_schedule.data[ID],
hoursDef=schedule[selectionDay.split('_')[1]]!==undefined ? schedule[selectionDay.split('_')[1]]['hours_definitions']:methods_hours.data['definitions'];
setTimeout(function(){
if(!methods_hours.vars.selectionInit){
methods_hours.vars.selectionInit=true;
methods_hours.vars.selectionStart=hour.attr('id');
methods_hours.vars.selectionEnd='';
methods_search.set();
methods_hours.displaySelection(methods_hours.vars.selectionStart);
}
else if((((!methods_hours.data['addLastHourToTotalPrice']
&& (methods_hours.vars.selectionStart!==hour.attr('id')
|| methods_hours.data['interval']))
|| methods_hours.data['addLastHourToTotalPrice']))
|| (!methods_hours.data['interval']
&& !methods_hours.data['addLastHourToTotalPrice']
&& methods_hours.vars.selectionStart!==hour.attr('id'))){
methods_hours.vars.selectionInit=false;
methods_hours.vars.selectionEnd=hour.attr('id');
if(methods_hours.vars.selectionStart > methods_hours.vars.selectionEnd){
selectionAux=methods_hours.vars.selectionStart;
methods_hours.vars.selectionStart=methods_hours.vars.selectionEnd;
methods_hours.vars.selectionEnd=selectionAux;
}
methods_hours.displaySelection(methods_hours.vars.selectionEnd);
if(methods_hours.data['interval']){
methods_hours.vars.selectionEnd=ID+'_'+methods_hour.getNext(methods_hours.vars.selectionEnd.split('_')[1], hoursDef);
}
methods_search.set();
}}, 10);
}});
},
selectSingle:function(){
$('.DOPBSPCalendar-hour', Container).unbind('click');
$('.DOPBSPCalendar-hour', Container).bind('click', function(){
var $hour=$(this),
hour=this;
setTimeout(function(){
if(($hour.hasClass('dopbsp-available')
|| $hour.hasClass('dopbsp-special'))
&& $('.dopbsp-bind-middle', hour).hasClass('dopbsp-group0')){
methods_hours.vars.selectionInit=false;
methods_hours.vars.selectionStart=$hour.attr('id');
methods_hours.vars.selectionEnd=$hour.attr('id');
methods_hours.displaySelection(methods_hours.vars.selectionEnd);
methods_search.set();
}}, 10);
});
}}
},
methods_sidebar={
data: {},
text: {},
display:function(){
var HTML=new Array();
HTML.push('<form name="DOPBSPCalendar-form'+ID+'" id="DOPBSPCalendar-form'+ID+'" action="" method="POST" onsubmit="return false;">');
HTML.push(' <table class="dopbsp-sidebar-content">');
HTML.push('     <colgroup>');
HTML.push('         <col class="dopbsp-column1" />');
HTML.push('         <col class="dopbsp-column-separator-style dopbsp-column2" />');
HTML.push('         <col class="dopbsp-column3" />');
HTML.push('     </colgroup>');
HTML.push('     <tbody>');
HTML.push('         <tr>');
HTML.push('             <td class="dopbsp-column1">');
HTML.push('                 <table class="dopbsp-sidebar-content">');
HTML.push('                     <colgroup>');
HTML.push('                         <col class="dopbsp-column4" />');
HTML.push('                         <col class="dopbsp-column-separator-style dopbsp-column5" />');
HTML.push('                         <col class="dopbsp-column6" />');
HTML.push('                     </colgroup>');
HTML.push('                     <tbody>');
HTML.push('                         <tr>');
HTML.push('                             <td id="DOPBSPCalendar-sidebar-column-wrapper-1-'+ID+'" class="dopbsp-column4">');
HTML.push('                                 <div class="dopbsp-row1"></div>');
HTML.push('                                 <div class="dopbsp-row2"></div>');
HTML.push('                                 <div class="dopbsp-row3"></div>');
HTML.push('                                 <div class="dopbsp-row4"></div>');
HTML.push('                                 <div class="dopbsp-row5"></div>');
HTML.push('                                 <div class="dopbsp-row6"></div>');
HTML.push('                                 <div class="dopbsp-row7"></div>');
HTML.push('                             </td>');
HTML.push('                             <td class="dopbsp-column-separator dopbsp-column5"></td>');
HTML.push('                             <td id="DOPBSPCalendar-sidebar-column-wrapper-2-'+ID+'" class="dopbsp-column6">');
HTML.push('                                 <div class="dopbsp-row1"></div>');
HTML.push('                                 <div class="dopbsp-row2"></div>');
HTML.push('                                 <div class="dopbsp-row3"></div>');
HTML.push('                                 <div class="dopbsp-row4"></div>');
HTML.push('                                 <div class="dopbsp-row5"></div>');
HTML.push('                                 <div class="dopbsp-row6"></div>');
HTML.push('                                 <div class="dopbsp-row7"></div>');
HTML.push('                             </td>');
HTML.push('                         </tr>');
HTML.push('                     </tbody>');
HTML.push('                 </table>');
HTML.push('             </td>');
HTML.push('             <td class="dopbsp-column-separator dopbsp-column2"></td>');
HTML.push('             <td class="dopbsp-column3">');
HTML.push('                 <table class="dopbsp-sidebar-content level2">');
HTML.push('                     <colgroup>');
HTML.push('                         <col class="dopbsp-column7" />');
HTML.push('                         <col class="dopbsp-column-separator-style dopbsp-column8" />');
HTML.push('                         <col class="dopbsp-column9" />');
HTML.push('                     </colgroup>');
HTML.push('                     <tbody>');
HTML.push('                         <tr>');
HTML.push('                             <td id="DOPBSPCalendar-sidebar-column-wrapper-3-'+ID+'" class="dopbsp-column7">');
HTML.push('                                 <div class="dopbsp-row1"></div>');
HTML.push('                                 <div class="dopbsp-row2"></div>');
HTML.push('                                 <div class="dopbsp-row3"></div>');
HTML.push('                                 <div class="dopbsp-row4"></div>');
HTML.push('                                 <div class="dopbsp-row5"></div>');
HTML.push('                                 <div class="dopbsp-row6"></div>');
HTML.push('                                 <div class="dopbsp-row7"></div>');
HTML.push('                             </td>');
HTML.push('                             <td class="dopbsp-column-separator dopbsp-column8"></td>');
HTML.push('                             <td id="DOPBSPCalendar-sidebar-column-wrapper-4-'+ID+'" class="dopbsp-column9">');
HTML.push('                                 <div class="dopbsp-row1"></div>');
HTML.push('                                 <div class="dopbsp-row2"></div>');
HTML.push('                                 <div class="dopbsp-row3"></div>');
HTML.push('                                 <div class="dopbsp-row4"></div>');
HTML.push('                                 <div class="dopbsp-row5"></div>');
HTML.push('                                 <div class="dopbsp-row6"></div>');
HTML.push('                                 <div class="dopbsp-row7"></div>');
HTML.push('                             </td>');
HTML.push('                         </tr>');
HTML.push('                     </tbody>');
HTML.push('                 </table>');
HTML.push('             </td>');
HTML.push('         </tr>');
HTML.push('     <tbody>');
HTML.push(' </table>');
HTML.push('</form>');
return HTML.join('');
},
init:function(){
methods_search.init();
methods_reservation.init();
if(methods_extras.data['id']!=='0'){
methods_extras.init();
}
if(methods_coupons.data['id']!=='0'){
methods_coupons.init();
}},
getDateFormat:function(date){
var year=date.split('-')[0],
month=date.split('-')[1],
day=date.split('-')[2];
return methods_calendar.data['dateType']===1 ? DOPBSPFrontEnd.text(ID, 'months', 'names')[parseInt(month, 10)-1]+' '+day+', '+year:
day+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[parseInt(month, 10)-1]+' '+year;
},
rp:function(){
var hiddenBustedItems=DOPPrototypes.doHiddenBuster($(Container));
$('.DOPBSPCalendar-sidebar', Container).removeClass('dopbsp-style1')
.removeClass('dopbsp-style2')
.removeClass('dopbsp-style3')
.removeClass('dopbsp-style4')
.removeClass('dopbsp-style5')
.removeClass('dopbsp-style1-medium')
.removeClass('dopbsp-style2-medium')
.removeClass('dopbsp-style3-medium')
.removeClass('dopbsp-style4-medium')
.removeClass('dopbsp-style5-medium')
.removeClass('dopbsp-style-small');
if(Container.width() < 500){
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style-small');
}else{
switch (methods_sidebar.data['style']){
case 2:
if(Container.width() < 760){
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style2-medium');
}else{
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style2');
}
break;
case 3:
if(Container.width() < 1020){
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style3-medium');
}else{
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style3');
}
break;
case 4:
if(Container.width() < 660){
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style4-medium');
}else{
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style4');
}
break;
case 5:
if(Container.width() < 800){
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style5-medium');
}else{
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style5');
}
break;
default:
if(Container.width() < 900){
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style1-medium');
}else{
$('.DOPBSPCalendar-sidebar', Container).addClass('dopbsp-style1');
}}
}
DOPPrototypes.undoHiddenBuster(hiddenBustedItems);
}},
methods_search={
data: {},
text: {},
display:function(){
var HTML=new Array(),
position=methods_sidebar.data['positions']['search'];
HTML.push('     <div id="DOPBSPCalendar-search'+ID+'" class="dopbsp-module">');
HTML.push(methods_search.days.display());
if(methods_hours.data['enabled']){
HTML.push(methods_search.hours.display());
}
HTML.push(methods_search.no_items.display());
HTML.push('     </div>');
$('#DOPBSPCalendar-sidebar-column-wrapper-'+position['column']+'-'+ID+' .dopbsp-row'+position['row']).html(HTML.join(''));
},
init:function(){
methods_search.days.init();
if(methods_hours.data['enabled']){
methods_search.hours.init();
}
if(methods_sidebar.data['noItems']){
methods_search.no_items.set();
}},
set:function(toSet){
toSet=toSet===undefined ? 'hours':toSet;
if(toSet==='hours'
&& methods_hours.data['enabled']){
methods_search.hours.set();
}
if(methods_sidebar.data['noItems']){
methods_search.no_items.set();
}
methods_reservation.set();
},
verify:function(){
var HTML=new Array(),
check_in=DOPPrototypes.$_GET('check_in')!==undefined ? DOPPrototypes.$_GET('check_in').split('-')[2]+'-'+DOPPrototypes.$_GET('check_in').split('-')[1]+'-'+DOPPrototypes.$_GET('check_in').split('-')[0]:'',
check_in_view=DOPBSPFrontEnd.text(ID, 'search', 'checkIn'),
check_out=DOPPrototypes.$_GET('check_out')!==undefined ? DOPPrototypes.$_GET('check_out').split('-')[2]+'-'+DOPPrototypes.$_GET('check_out').split('-')[1]+'-'+DOPPrototypes.$_GET('check_out').split('-')[0]:'',
check_out_view=DOPBSPFrontEnd.text(ID, 'search', 'checkOut');
if(check_in!==''){
var sDay=parseInt(check_in.split('-')[0]),
sMonth=parseInt(check_in.split('-')[1]),
sYear=parseInt(check_in.split('-')[2]),
sMonth=sMonth < 10 ? '0'+sMonth:sMonth;
sDay=sDay < 10 ? '0'+sDay:sDay;
check_in=sYear+'-'+sMonth+'-'+sDay;
var firstday=sYear+'-'+sMonth+'-01';
DOT.methods.calendar_days.settings[ID]['firstDisplayed']=firstday;
}},
days: {
display:function(){
var HTML=new Array(),
check_in=DOPPrototypes.$_GET('check_in')!==undefined ? DOPPrototypes.$_GET('check_in').split('-')[2]+'-'+DOPPrototypes.$_GET('check_in').split('-')[1]+'-'+DOPPrototypes.$_GET('check_in').split('-')[0]:'',
check_in_view=DOPBSPFrontEnd.text(ID, 'search', 'checkIn'),
check_out=DOPPrototypes.$_GET('check_out')!==undefined ? DOPPrototypes.$_GET('check_out').split('-')[2]+'-'+DOPPrototypes.$_GET('check_out').split('-')[1]+'-'+DOPPrototypes.$_GET('check_out').split('-')[0]:'',
check_out_view=DOPBSPFrontEnd.text(ID, 'search', 'checkOut');
if(check_in!==''){
var sDay=parseInt(check_in.split('-')[0]),
sMonth=parseInt(check_in.split('-')[1]),
sYear=parseInt(check_in.split('-')[2]),
check_in_view=methods_calendar.data['dateType']===1 ?
DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth-1]+' '+sDay+', '+sYear:
sDay+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[sMonth-1]+' '+sYear;
sMonth=sMonth < 10 ? '0'+sMonth:sMonth;
sDay=sDay < 10 ? '0'+sDay:sDay;
check_in=sYear+'-'+sMonth+'-'+sDay;
methods_days.vars.selectionStart=ID+'_'+check_in;
}
if(check_out!==''){
var eDay=parseInt(check_out.split('-')[0]),
eMonth=parseInt(check_out.split('-')[1]),
eYear=parseInt(check_out.split('-')[2]),
check_out_view=methods_calendar.data['dateType']===1 ?
DOPBSPFrontEnd.text(ID, 'months', 'names')[eMonth-1]+' '+eDay+', '+eYear:
eDay+' '+DOPBSPFrontEnd.text(ID, 'months', 'names')[eMonth-1]+' '+eYear;
eMonth=eMonth < 10 ? '0'+eMonth:eMonth;
eDay=eDay < 10 ? '0'+eDay:eDay;
check_out=eYear+'-'+eMonth+'-'+eDay;
methods_calendar.vars.endYear=eYear;
methods_calendar.vars.endMonth=eMonth;
methods_calendar.vars.endDay=eDay;
if(DOT.methods.calendar_days.settings[ID]['multipleSelect']){
methods_days.vars.selectionEnd=ID+'_'+check_out;
}else{
methods_days.vars.selectionEnd=ID+'_'+check_in;
}
methods_days.vars.selectionInit=false;
}
HTML.push('         <div class="dopbsp-input-wrapper DOPBSPCalendar-left">');
HTML.push('             <input type="text" name="DOPBSPCalendar-check-in-view'+ID+'" readonly="true" id="DOPBSPCalendar-check-in-view'+ID+'" class="DOPBSPCalendar-check-in-view" value="'+check_in_view+'" />');
HTML.push('             <input type="hidden" name="DOPBSPCalendar-check-in'+ID+'" readonly="true" id="DOPBSPCalendar-check-in'+ID+'" value="'+check_in+'" />');
HTML.push('         </div>');
if(!methods_hours.data['enabled']
&& DOT.methods.calendar_days.settings[ID]['multipleSelect']){
HTML.push('     <div class="dopbsp-input-wrapper DOPBSPCalendar-left">');
HTML.push('         <input type="text" name="DOPBSPCalendar-check-out-view'+ID+'" id="DOPBSPCalendar-check-out-view'+ID+'" class="DOPBSPCalendar-check-out-view" value="'+check_out_view+'" />');
HTML.push('         <input type="hidden" name="DOPBSPCalendar-check-out'+ID+'" id="DOPBSPCalendar-check-out'+ID+'" value="'+check_out+'" />');
HTML.push('     </div>');
}
HTML.push('         <br class="DOPBSPCalendar-clear" />');
return HTML.join('');
},
init:function(){
methods_search.days.events.init();
},
initDatepicker:function(id,
altId,
minDate){
methods_calendar.vars.startMonth=parseInt(methods_calendar.vars.startMonth);
if(minDate===undefined){
var today=new Date(new Date(methods_calendar.data['bookingStartDate']!=='' ? methods_calendar.data['bookingStartDate'].replace(/-/g, "/"):new Date()).getTime()+methods_calendar.data['bookingStop']*60*1000);
methods_calendar.vars.startDay=today.getDate();
}
minDate=minDate===undefined ? DOPPrototypes.getNoDays(methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay),
methods_calendar.vars.todayYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.todayMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.todayDay))-1:minDate;
$(id).datepicker('destroy');
$(id).datepicker({altField: altId,
altFormat: 'yy-mm-dd',
beforeShow: function(input, inst){
$('#ui-datepicker-div').removeClass('DOPBSPCalendar-datepicker')
.addClass('DOPBSPCalendar-datepicker');
},
dateFormat: methods_calendar.data['dateType']===1 ? 'MM dd, yy':'dd MM yy',
dayNames: DOPBSPFrontEnd.text(ID, 'days', 'names'),
dayNamesMin: DOPBSPFrontEnd.text(ID, 'days', 'shortNames'),
firstDay: DOT.methods.calendar_days.settings[ID]['first'],
minDate: minDate,
monthNames: DOPBSPFrontEnd.text(ID, 'months', 'names'),
monthNamesMin: DOPBSPFrontEnd.text(ID, 'months', 'shortNames'),
nextText: DOPBSPFrontEnd.text(ID, 'calendar', 'nextMonth'),
prevText: DOPBSPFrontEnd.text(ID, 'calendar', 'previousMonth')});
$('.ui-datepicker').removeClass('notranslate').addClass('notranslate');
},
validate:function(day){
var dayPieces=day.split('-');
if(day===''
|| dayPieces.length!==3
|| dayPieces[0].length!==4
|| dayPieces[1].length!==2
|| dayPieces[2].length!==2){
return false;
}else{
return true;
}},
events: {
init:function(){
if(!methods_calendar.data['view']){
methods_search.days.initDatepicker('#DOPBSPCalendar-check-in-view'+ID,
'#DOPBSPCalendar-check-in'+ID);
if(methods_hours.data['enabled']){
methods_search.days.events.selectHours();
}else{
if(DOT.methods.calendar_days.settings[ID]['multipleSelect']){
methods_search.days.initDatepicker('#DOPBSPCalendar-check-out-view'+ID,
'#DOPBSPCalendar-check-out'+ID);
$('#DOPBSPCalendar-check-out-view'+ID).attr('disabled', 'disabled');
methods_search.days.events.selectMultiple();
}else{
methods_search.days.events.selectSingle();
}}
}},
selectHours:function(){
$('#DOPBSPCalendar-check-in-view'+ID).unbind('click');
$('#DOPBSPCalendar-check-in-view'+ID).bind('click', function(){
$(this).val('');
methods_hours.clear();
methods_search.set();
});
$('#DOPBSPCalendar-check-in-view'+ID).unbind('blur');
$('#DOPBSPCalendar-check-in-view'+ID).bind('blur', function(){
var $this=$(this);
if($this.val()===''){
$this.val(DOPBSPFrontEnd.text(ID, 'search', 'checkIn'));
}});
$('#DOPBSPCalendar-check-in-view'+ID).unbind('change');
$('#DOPBSPCalendar-check-in-view'+ID).bind('change', function(){
var ciDay=$('#DOPBSPCalendar-check-in'+ID).val();
if(methods_search.days.validate(ciDay)){
methods_calendar.init(parseInt(ciDay.split('-')[0], 10),
parseInt(ciDay.split('-')[1], 10));
methods_hours.display(ID+'_'+ciDay);
}else{
$('#DOPBSPCalendar-check-in-view'+ID).val(DOPBSPFrontEnd.text(ID, 'search', 'checkIn'));
}});
},
selectMultiple:function(){
$('#DOPBSPCalendar-check-in-view'+ID).unbind('click');
$('#DOPBSPCalendar-check-in-view'+ID).bind('click', function(){
$('#DOPBSPCalendar-check-out-view'+ID).val(DOPBSPFrontEnd.text(ID, 'search', 'checkOut'))
.attr('disabled', 'disabled');
$('#DOPBSPCalendar-check-in'+ID).val('');
$('#DOPBSPCalendar-check-out'+ID).val('');
$(this).val('');
methods_days.vars.selectionInit=false;
methods_days.clearSelection();
methods_search.set();
});
$('#DOPBSPCalendar-check-in-view'+ID).unbind('blur');
$('#DOPBSPCalendar-check-in-view'+ID).bind('blur', function(){
var $this=$(this);
if($this.val()===''){
$this.val(DOPBSPFrontEnd.text(ID, 'search', 'checkIn'));
}
methods_search.set();
});
$('#DOPBSPCalendar-check-in-view'+ID).unbind('change');
$('#DOPBSPCalendar-check-in-view'+ID).bind('change', function(){
var ciDay=$('#DOPBSPCalendar-check-in'+ID).val(),
minDateValue;
if(methods_search.days.validate(ciDay)){
minDateValue=DOPPrototypes.getNoDays(DOPPrototypes.getToday(), ciDay)-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 0:1);
methods_days.vars.selectionInit=true;
methods_days.vars.selectionStart=ID+'_'+ciDay;
methods_days.vars.selectionEnd=ID+'_'+ciDay;
$('#DOPBSPCalendar-check-out-view'+ID).removeAttr('disabled')
.val('');
$('#DOPBSPCalendar-check-out'+ID).val('');
methods_search.days.initDatepicker('#DOPBSPCalendar-check-out-view'+ID,
'#DOPBSPCalendar-check-out'+ID,
minDateValue);
methods_calendar.init(methods_calendar.vars.startYear,
parseInt(methods_calendar.vars.startMonth)+DOPPrototypes.getNoMonths(methods_calendar.vars.startYear+'-'+methods_calendar.vars.startMonth+'-'+methods_calendar.vars.startDay, ciDay)-1);
methods_days.displaySelection(methods_days.vars.selectionEnd);
setTimeout(function(){
$('#DOPBSPCalendar-check-out-view'+ID).val('')
.select();
$('#DOPBSPCalendar-check-out'+ID).val('');
}, 100);
}else{
$('#DOPBSPCalendar-check-in-view'+ID).val(DOPBSPFrontEnd.text(ID, 'search', 'checkIn'));
}});
$('#DOPBSPCalendar-check-out-view'+ID).unbind('click');
$('#DOPBSPCalendar-check-out-view'+ID).bind('click', function(){
var ciDay=$('#DOPBSPCalendar-check-in'+ID).val();
$('#DOPBSPCalendar-check-out-view'+ID).val('');
$('#DOPBSPCalendar-check-out'+ID).val('');
methods_search.set();
if(ciDay!==''){
methods_days.vars.selectionStart=ID+'_'+ciDay;
methods_days.displaySelection(methods_days.vars.selectionStart);
}});
$('#DOPBSPCalendar-check-out-view'+ID).unbind('blur');
$('#DOPBSPCalendar-check-out-view'+ID).bind('blur', function(){
var $this=$(this),
ciDay=$('#DOPBSPCalendar-check-in'+ID).val();
setTimeout(function(){
if($this.val()===''){
$this.val(DOPBSPFrontEnd.text(ID, 'search', 'checkOut'));
}
methods_search.set();
if(ciDay!==''){
methods_days.vars.selectionStart=ID+'_'+ciDay;
methods_days.displaySelection(methods_days.vars.selectionStart);
}}, 100);
});
$('#DOPBSPCalendar-check-out-view'+ID).unbind('change');
$('#DOPBSPCalendar-check-out-view'+ID).bind('change', function(){
var ciDay=$('#DOPBSPCalendar-check-in'+ID).val(),
coDay=$('#DOPBSPCalendar-check-out'+ID).val();
setTimeout(function(){
if(methods_search.days.validate(coDay)){
methods_days.vars.selectionInit=false;
methods_days.vars.selectionStart=ID+'_'+ciDay;
methods_days.vars.selectionEnd=ID+'_'+coDay;
methods_calendar.init(methods_calendar.vars.startYear,
parseInt(methods_calendar.vars.startMonth)+DOPPrototypes.getNoMonths(methods_calendar.vars.startYear+'-'+methods_calendar.vars.startMonth+'-'+methods_calendar.vars.startDay, ciDay)-1);
methods_days.displaySelection(methods_days.vars.selectionEnd);
methods_search.set();
}else{
$('#DOPBSPCalendar-check-out-view'+ID).val(DOPBSPFrontEnd.text(ID, 'search', 'checkOut'));
}}, 100);
});
},
selectSingle:function(){
$('#DOPBSPCalendar-check-in-view'+ID).unbind('click');
$('#DOPBSPCalendar-check-in-view'+ID).bind('click', function(){
$(this).val('');
methods_days.vars.selectionInit=false;
methods_days.clearSelection();
methods_search.set();
});
$('#DOPBSPCalendar-check-in-view'+ID).unbind('blur');
$('#DOPBSPCalendar-check-in-view'+ID).bind('blur', function(){
var $this=$(this);
if($this.val()===''){
$this.val(DOPBSPFrontEnd.text(ID, 'search', 'checkIn'));
}
methods_search.set();
});
$('#DOPBSPCalendar-check-in-view'+ID).unbind('change');
$('#DOPBSPCalendar-check-in-view'+ID).bind('change', function(){
var ciDay=$('#DOPBSPCalendar-check-in'+ID).val();
if(methods_search.days.validate(ciDay)){
methods_days.vars.selectionStart=ID+'_'+ciDay;
methods_days.vars.selectionEnd=ID+'_'+ciDay;
methods_calendar.init(methods_calendar.vars.startYear,
methods_calendar.vars.startMonth+DOPPrototypes.getNoMonths(methods_calendar.vars.startYear+'-'+methods_calendar.vars.startMonth+'-'+methods_calendar.vars.startDay, ciDay)-1);
methods_days.displaySelection(methods_days.vars.selectionEnd);
methods_search.set();
}else{
$('#DOPBSPCalendar-check-in-view'+ID).val(DOPBSPFrontEnd.text(ID, 'search', 'checkIn'));
}});
}}
},
hours: {
display:function(){
var HTML=new Array();
HTML.push('     <div id="DOPBSPCalendar-hours-select'+ID+'">');
HTML.push('         <div class="dopbsp-input-wrapper DOPBSPCalendar-left">');
HTML.push('             <label for="DOPBSPCalendar-start-hour'+ID+'">'+DOPBSPFrontEnd.text(ID, 'search', 'hourStart')+'</label>');
HTML.push('             <div id="DOPSelect-DOPBSPCalendar-start-hour'+ID+'" class="dopbsp-small"></div>');
HTML.push('         </div>');
if(methods_hours.data['multipleSelect']){
HTML.push('         <div class="dopbsp-input-wrapper DOPBSPCalendar-left">');
HTML.push('             <label for="DOPBSPCalendar-end-hour'+ID+'">'+DOPBSPFrontEnd.text(ID, 'search', 'hourEnd')+'</label>');
HTML.push('             <div id="DOPSelect-DOPBSPCalendar-end-hour'+ID+'" class="dopbsp-small"></div>');
HTML.push('         </div>');
}else{
HTML.push('         <input type="hidden" name="DOPBSPCalendar-end-hour'+ID+'" id="DOPBSPCalendar-end-hour'+ID+'" value="" />');
}
HTML.push('         <br class="DOPBSPCalendar-clear">');
HTML.push('     </div>');
return HTML.join('');
},
init:function(){
methods_search.hours.set();
},
set:function(toSet){
var currHour=methods_calendar.vars.startDate.getHours(),
currMin=methods_calendar.vars.startDate.getMinutes(),
endHTML=new Array(),
i,
schedule=DOT.methods.calendar_schedule.data[ID],
selectedDay=methods_days.vars.selectionStart.split('_')[1],
hoursDef=schedule[selectedDay]!==undefined ? schedule[selectedDay]['hours_definitions']:methods_hours.data['definitions'],
selectedHourStart=methods_hours.vars.selectionStart.split('_')[1],
selectedHourEnd=methods_hours.vars.selectionEnd.split('_')[1],
startHTML=new Array();
toSet=toSet===undefined ? 'all':toSet;
if(toSet==='all'){
startHTML.push('<select name="DOPBSPCalendar-start-hour'+ID+'" id="DOPBSPCalendar-start-hour'+ID+'" class="dopbsp-small">');
startHTML.push('    <option value=""></option>');
for (i=0; i<hoursDef.length; i++){
if(hoursDef[i]['value'] >=DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
|| methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)!==selectedDay){
if(methods_hours.data['interval_autobreak']){
if(i%2===0
&& i!==hoursDef.length-1){
startHTML.push('    <option value="'+hoursDef[i]['value']+'"'+(selectedHourStart===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}else{
startHTML.push('    <option value="'+hoursDef[i]['value']+'"'+(selectedHourStart===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}
}
startHTML.push('</select>');
$('#DOPSelect-DOPBSPCalendar-start-hour'+ID).replaceWith(startHTML.join(''));
$('#DOPBSPCalendar-start-hour'+ID).DOPSelect();
}
if(methods_hours.data['multipleSelect']){
endHTML.push('<select name="DOPBSPCalendar-end-hour'+ID+'" id="DOPBSPCalendar-end-hour'+ID+'" class="dopbsp-small">');
endHTML.push('  <option value=""></option>');
for (i=0; i<hoursDef.length; i++){
if(hoursDef[i]['value'] >=DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
|| methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)!==selectedDay){
if(methods_hours.data['interval']
|| !methods_hours.data['addLastHourToTotalPrice']){
if(selectedHourStart===undefined
|| hoursDef[i]['value'] > selectedHourStart){
if(methods_hours.data['interval_autobreak']){
if(i%2===1){
endHTML.push('  <option value="'+hoursDef[i]['value']+'"'+(selectedHourEnd===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}else{
endHTML.push('  <option value="'+hoursDef[i]['value']+'"'+(selectedHourEnd===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}
}else{
if(selectedHourStart===undefined
|| hoursDef[i]['value'] >=selectedHourStart){
if(methods_hours.data['interval_autobreak']){
if(i%2===1){
endHTML.push('  <option value="'+hoursDef[i]['value']+'"'+(selectedHourEnd===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}else{
endHTML.push('  <option value="'+hoursDef[i]['value']+'"'+(selectedHourEnd===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}
}}
}
endHTML.push('</select>');
$('#DOPSelect-DOPBSPCalendar-end-hour'+ID).replaceWith(endHTML.join(''));
$('#DOPBSPCalendar-end-hour'+ID).DOPSelect();
}
methods_search.hours.events.init();
},
auto:function(toSet){
var currHour=methods_calendar.vars.startDate.getHours(),
currMin=methods_calendar.vars.startDate.getMinutes(),
endHTML=new Array(),
i,
schedule=DOT.methods.calendar_schedule.data[ID],
selectedDay=methods_days.vars.selectionStart.split('_')[1],
hoursDef=schedule[selectedDay]!==undefined ? schedule[selectedDay]['hours_definitions']:methods_hours.data['definitions'],
selectedHourStart=methods_hours.vars.selectionStart.split('_')[1],
selectedHourEnd=methods_hours.vars.selectionEnd.split('_')[1],
startHTML=new Array();
toSet=toSet===undefined ? 'all':toSet;
if(toSet==='all'){
startHTML.push('<select name="DOPBSPCalendar-start-hour'+ID+'" id="DOPBSPCalendar-start-hour'+ID+'" class="dopbsp-small">');
startHTML.push('    <option value=""></option>');
for (i=0; i<hoursDef.length; i++){
if(hoursDef[i]['value'] >=DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
|| methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)!==selectedDay){
startHTML.push('    <option value="'+hoursDef[i]['value']+'"'+(selectedHourStart===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}
startHTML.push('</select>');
$('#DOPSelect-DOPBSPCalendar-start-hour'+ID).replaceWith(startHTML.join(''));
$('#DOPBSPCalendar-start-hour'+ID).DOPSelect();
}
if(methods_hours.data['multipleSelect']){
endHTML.push('<select name="DOPBSPCalendar-end-hour'+ID+'" id="DOPBSPCalendar-end-hour'+ID+'" class="dopbsp-small">');
endHTML.push('  <option value=""></option>');
for (i=0; i<hoursDef.length; i++){
if(hoursDef[i]['value'] >=DOPPrototypes.getLeadingZero(currHour)+':'+DOPPrototypes.getLeadingZero(currMin)
|| methods_calendar.vars.startYear+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startMonth)+'-'+DOPPrototypes.getLeadingZero(methods_calendar.vars.startDay)!==selectedDay){
if(methods_hours.data['interval']
|| !methods_hours.data['addLastHourToTotalPrice']){
if(selectedHourStart===undefined
|| hoursDef[i]['value'] > selectedHourStart){
endHTML.push('  <option value="'+hoursDef[i]['value']+'"'+(selectedHourEnd===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}else{
if(selectedHourStart===undefined
|| hoursDef[i]['value'] >=selectedHourStart){
endHTML.push('  <option value="'+hoursDef[i]['value']+'"'+(selectedHourEnd===hoursDef[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(hoursDef[i]['value']):hoursDef[i]['value'])+'</option>');
}}
}}
endHTML.push('</select>');
$('#DOPSelect-DOPBSPCalendar-end-hour'+ID).replaceWith(endHTML.join(''));
$('#DOPBSPCalendar-end-hour'+ID).DOPSelect();
}
methods_search.hours.events.init();
},
events: {
init:function(){
if(methods_hours.data['multipleSelect']){
methods_search.hours.events.selectMultiple();
}else{
methods_search.hours.events.selectSingle();
}},
selectMultiple:function(){
$('#DOPBSPCalendar-start-hour'+ID).unbind('change');
$('#DOPBSPCalendar-start-hour'+ID).bind('change', function(){
var startHour=$(this).val();
methods_hours.vars.selectionInit=true;
methods_hours.vars.selectionStart=ID+'_'+startHour;
methods_hours.vars.selectionEnd='';
methods_hours.displaySelection(methods_hours.vars.selectionStart);
methods_search.hours.set('endHour');
methods_search.set('noItems');
});
$('#DOPBSPCalendar-end-hour'+ID).unbind('change');
$('#DOPBSPCalendar-end-hour'+ID).bind('change', function(){
var endHour=$(this).val(),
selectionDay=methods_days.vars.selectionStart,
schedule=DOT.methods.calendar_schedule.data[ID],
hoursDef=schedule[selectionDay.split('_')[1]]!==undefined ? schedule[selectionDay.split('_')[1]]['hours_definitions']:methods_hours.data['definitions'];
methods_hours.vars.selectionInit=false;
methods_hours.vars.selectionEnd=ID+'_'+endHour;
if(methods_hours.data['interval']){
methods_hours.vars.selectionEnd=ID+'_'+methods_hour.getPrev(methods_hours.vars.selectionEnd.split('_')[1], hoursDef);
}
methods_hours.displaySelection(methods_hours.vars.selectionEnd);
methods_search.set('noItems');
});
},
selectSingle:function(){
$('#DOPBSPCalendar-start-hour'+ID).unbind('change');
$('#DOPBSPCalendar-start-hour'+ID).bind('change', function(){
var startHour=$(this).val();
methods_hours.vars.selectionStart=ID+'_'+startHour;
methods_hours.vars.selectionEnd=ID+'_'+startHour;
methods_hours.displaySelection(methods_hours.vars.selectionEnd);
methods_search.set('noItems');
});
}}
},
no_items: {
display:function(){
var HTML=new Array();
if(methods_sidebar.data['noItems']){
HTML.push('         <div id="DOPBSPCalendar-no-items-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('             <label for="DOPBSPCalendar-no-items'+ID+'">'+DOPBSPFrontEnd.text(ID, 'search', 'noItems')+'</label>');
HTML.push('             <div id="DOPSelect-DOPBSPCalendar-no-items'+ID+'" class="dopbsp-small"></div>');
HTML.push('         </div>');
}else{
HTML.push('         <input type="hidden" name="DOPBSPCalendar-no-items'+ID+'" id="DOPBSPCalendar-no-items'+ID+'" value="1" />');
}
return HTML.join('');
},
set:function(selected){
var HTML=new Array(),
i,
minSwap=methods_calendar.data['minimumNoAvailable'],
maxSwap=methods_calendar.data['maximumNoAvailable'],
noAvailable=methods_hours.data['enabled'] ? methods_hours.getNoAvailable():methods_days.getNoAvailable();
selected=selected===undefined ? 1:parseInt(selected);
HTML.push('<select name="DOPBSPCalendar-no-items'+ID+'" id="DOPBSPCalendar-no-items'+ID+'" class="dopbsp-small">');
if(noAvailable < methods_calendar.data['minimumNoAvailable']
&& ((!methods_hours.data['enabled']&&$('#DOPBSPCalendar-check-out'+ID).val()!=='')
|| (methods_hours.data['enabled']&&$('#DOPBSPCalendar-end-hour'+ID).val()!==''))){
methods_calendar.data['minimumNoAvailable']=noAvailable;
}
if(noAvailable < methods_calendar.data['minimumNoAvailable']
&& (methods_hours.data['enabled']&&!methods_calendar.data['hours_multiple_select'])&&$('#DOPBSPCalendar-start-hour'+ID).val()!==''){
methods_calendar.data['minimumNoAvailable']=noAvailable;
}
if(noAvailable < methods_calendar.data['maximumNoAvailable']
&& ((!methods_hours.data['enabled']&&$('#DOPBSPCalendar-check-out'+ID).val()!=='')
|| (methods_hours.data['enabled']&&$('#DOPBSPCalendar-end-hour'+ID).val()!==''))){
methods_calendar.data['maximumNoAvailable']=noAvailable;
}
if(noAvailable < methods_calendar.data['maximumNoAvailable']
&& (methods_hours.data['enabled']&&!methods_calendar.data['hours_multiple_select'])&&$('#DOPBSPCalendar-start-hour'+ID).val()!==''){
methods_calendar.data['maximumNoAvailable']=noAvailable;
}
for (i=methods_calendar.data['minimumNoAvailable']; i<=methods_calendar.data['maximumNoAvailable']; i++){
HTML.push(' <option value="'+i+'" '+(selected===i ? 'selected="selected"':'')+'>'+i+'</option>');
}
HTML.push('</select>');
$('#DOPSelect-DOPBSPCalendar-no-items'+ID).replaceWith(HTML.join(''));
$('#DOPBSPCalendar-no-items'+ID).DOPSelect();
methods_search.no_items.events();
methods_calendar.data['minimumNoAvailable']=minSwap;
methods_calendar.data['maximumNoAvailable']=maxSwap;
},
events:function(){
$('#DOPBSPCalendar-no-items'+ID).unbind('change');
$('#DOPBSPCalendar-no-items'+ID).bind('change', function(){
methods_reservation.set();
});
}}
},
methods_extras={
data: {},
text: {},
display:function(){
var extra=methods_extras.data['extra'],
groupItem,
HTML=new Array(),
i,
j;
HTML.push('<div id="DOPBSPCalendar-extras'+ID+'" class="dopbsp-module">');
HTML.push(' <h4>'+DOPBSPFrontEnd.text(ID, 'extras', 'title')+'</h4>');
for (i=0; i<extra.length; i++){
HTML.push('<div class="dopbsp-input-wrapper">');
HTML.push(' <label for="DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']+'">'+extra[i]['translation']+(extra[i]['required']==='true' ? '  <span class="dopbsp-required">*</span>':'')+'</label>');
HTML.push(' <select name="DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']+'" id="DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']+'"'+(extra[i]['multiple_select']==='true' ? ' value="[]" multiple class="dopbsp-big"':'')+'>');
if(extra[i]['multiple_select']==='false'
&& extra[i]['required']==='false'){
HTML.push('<option value=""></option>');
}
for (j=0; j<extra[i]['group_items'].length; j++){
groupItem=extra[i]['group_items'][j];
if(groupItem['translation']!==''){
HTML.push('<option value="'+groupItem['id']+'" '+(groupItem['default_value']==='yes' ? 'selected="selected"':'')+'>');
HTML.push(groupItem['translation']);
if(parseFloat(groupItem['price'])!==0){
HTML.push(' <span class="dopbsp-info">(');
if(groupItem['price_type']==='fixed'){
HTML.push(groupItem['operation']+DOPBSPFrontEnd.setPrice(ID, groupItem['price']));
}else{
HTML.push(groupItem['operation']+groupItem['price']+'%');
}
if(groupItem['price_by']!=='once'){
HTML.push('/'+(methods_hours.data['enabled'] ? DOPBSPFrontEnd.text(ID, 'extras', 'byHour'):DOPBSPFrontEnd.text(ID, 'extras', 'byDay')));
}
HTML.push(')</span>');
}
HTML.push('</option>');
}}
HTML.push(' </select>');
HTML.push('</div>');
}
HTML.push(' <div class="dopbsp-message DOPBSPCalendar-hidden"></div>');
HTML.push('</div>');
$('#DOPBSPCalendar-sidebar-column-wrapper-'+methods_sidebar.data['positions']['extras']['column']+'-'+ID+' .dopbsp-row'+methods_sidebar.data['positions']['extras']['row']).html(HTML.join(''));
},
init:function(){
var extra=methods_extras.data['extra'],
i;
for (i=0; i<extra.length; i++){
$('#DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']).DOPSelect();
}
methods_extras.events();
},
events:function(){
var extra=methods_extras.data['extra'],
i;
for (i=0; i<extra.length; i++){
$('#DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']).unbind('change');
$('#DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']).bind('change', function(){
methods_reservation.set();
});
}},
get:function(reservationPrice,
ciDay,
coDay,
startHour,
endHour,
noItems,
noItemsMultiply){
var extra=methods_extras.data['extra'],
extras=new Array(),
groupItem,
noItemsMultiply='false',
i,
j;
for (i=0; i<extra.length; i++){
extra[i]['verified']=false;
}
for (i=0; i<extra.length; i++){
if(extra[i]['verified']===undefined){
extra[i]['verified']=false;
}
noItemsMultiply=extra[i]['no_items_multiply'];
for (j=0; j<extra[i]['group_items'].length; j++){
groupItem=extra[i]['group_items'][j];
if((extra[i]['multiple_select']==='false'
&& $('#DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']).val()===groupItem['id']
&& extra[i]['verified']===false)
|| (extra[i]['multiple_select']!=='false'
&& $('#DOPSelect-DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']+'-'+groupItem['id']).is(':checked'))){
extra[i]['verified']=true;
extras.push({'group_id': extra[i]['id'],
'group_translation': extra[i]['translation'],
'id': groupItem['id'],
'operation': groupItem['operation'],
'price': parseFloat(groupItem['price']),
'price_by': groupItem['price_by'],
'price_type': groupItem['price_type'],
'no_items_multiply': noItemsMultiply,
'translation': groupItem['translation']});
}}
}
for (i=0; i<extras.length; i++){
delete extras[i]['verified'];
extras[i]['price_total']=methods_extras.getPrice([extras[i]],
reservationPrice,
ciDay,
coDay,
startHour,
endHour,
noItems);
}
return extras;
},
getPrice:function(extras,
reservationPrice,
ciDay,
coDay,
startHour,
endHour,
noItems,
noItemsMultiply){
var groupItem,
i,
price=0,
timeLapse;
coDay=coDay==='' ? ciDay:coDay;
endHour=endHour==='' ? startHour:endHour;
timeLapse=methods_hours.data['enabled'] ? DOPPrototypes.getHoursDifference(startHour, endHour, 'hours')+(methods_hours.data['addLastHourToTotalPrice'] ? 1:0):
DOPPrototypes.getNoDays(ciDay, coDay)-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 1:0);
for (i=0; i<extras.length; i++){
groupItem=extras[i];
price +=(groupItem['operation']==='-' ? -1:1)
*(groupItem['price_by']==='once' ? 1:timeLapse)
*groupItem['price']
*(groupItem['price_type']==='fixed' ? (groupItem['no_items_multiply']==='true' ? noItems:1):reservationPrice)/
(groupItem['price_type']==='fixed' ? 1:100);
}
return price;
},
set:function(extras,
ciDay,
coDay,
startHour,
endHour){
var extra,
extraHTML=new Array(),
extrasHTML=new Array(),
HTML=new Array(),
i,
j;
coDay=coDay==='' ? ciDay:coDay;
endHour=endHour==='' ? startHour:endHour;
if(extras.length > 0){
HTML.push('<tr class="dopbsp-separator">');
HTML.push(' <td class="dopbsp-label"><div class="dopbsp-line"></div></td>');
HTML.push(' <td class="dopbsp-value"><div class="dopbsp-line"></div></td>');
HTML.push('</tr>');
}
for (i=0; i<extras.length; i++){
extrasHTML.length=0;
if(extras[i]['displayed']===undefined){
for (j=0; j<extras.length; j++){
extra=extras[j];
extraHTML.length=0;
if(extras[j]['displayed']===undefined
&& extras[i]['group_id']===extras[j]['group_id']){
extraHTML.push(extra['translation']);
if(parseFloat(extra['price'])!==0){
extraHTML.push(' <br />');
if(extra['price_type']!=='fixed'
|| extra['price_by']!=='once'){
extraHTML.push(' <span class="dopbsp-info-rule">&#9632;&nbsp;');
if(extra['price_type']==='fixed'){
extraHTML.push(extra['operation']+DOPBSPFrontEnd.setPrice(ID, extra['price']));
}else{
extraHTML.push(extra['operation']+extra['price']+'%');
}
if(extra['price_by']!=='once'){
extraHTML.push('/'+(methods_hours.data['enabled'] ? DOPBSPFrontEnd.text(ID, 'extras', 'byHour'):DOPBSPFrontEnd.text(ID, 'extras', 'byDay')));
}
extraHTML.push('</span><br />');
}
extraHTML.push('<span class="dopbsp-info-price">'+extra['operation']+'&nbsp;'+DOPBSPFrontEnd.setPrice(ID, extra['price_total'])+'</span>');
}
if(extraHTML.length!==0){
extras[j]['displayed']=true;
extrasHTML.push(extraHTML.join(''));
}}
}
if(extrasHTML.length!==0){
HTML.push('<tr>');
HTML.push(' <td class="dopbsp-label">'+extras[i]['group_translation']+'</td>');
HTML.push(' <td class="dopbsp-value dopbsp-info">'+extrasHTML.join('<br /><br />')+'</td>');
HTML.push('</tr>');
}}
}
for (i=0; i<extras.length; i++){
delete extras[i]['displayed'];
}
return HTML.join('');
},
validate:function(extras){
var extra=methods_extras.data['extra'],
i,
j,
message='',
validateExtras=true,
validateGroup=true,
messages=[];
for (i=0; i<extra.length; i++){
if(extra[i]['required']==='true'){
if(extra[i]['multiple_select']==='true'){
validateGroup=false;
for (j=0; j<extras.length; j++){
if(extra[i]['id']===extras[j]['group_id']){
validateGroup=true;
}}
}else{
if($('#DOPBSPCalendar-extras-group'+ID+'-'+extra[i]['id']).val()!==''){
validateExtras=true;
validateGroup=true;
}else{
validateExtras=false;
}}
if(!validateGroup
|| !validateExtras){
validateExtras=false;
messages.push(DOPBSPFrontEnd.text(ID, 'extras', 'invalid')+' '+extra[i]['translation']+'.');
}}
}
if(messages.length > 0){
methods_extras.toggleMessages(messages.join('<br>'));
$('#DOPBSPCalendar-add-to-cart'+ID).css('display', 'none');
$('#DOPBSPCalendar-pay-full-amount-wrapper'+ID).addClass('DOPBSPCalendar-hidden');
$('.cart button[type=submit]').css('display', 'none');
return false;
}else{
methods_extras.toggleMessages('',
'dopbsp-success',
'none');
return true;
}},
toggleMessages:function(message,
display,
type){
display=display===undefined ? 'block':display;
type=type===undefined ? 'dopbsp-error':type;
$('#DOPBSPCalendar-extras'+ID+' .dopbsp-message').html(message)
.removeClass('dopbsp-success')
.removeClass('dopbsp-error')
.addClass(type)
.css('display', display);
}},
methods_coupons={
data: {},
text: {},
vars: {use: false},
display:function(){
var HTML=new Array();
HTML.push('<div id="DOPBSPCalendar-coupons'+ID+'" class="dopbsp-module">');
HTML.push(' <h4>'+DOPBSPFrontEnd.text(ID, 'coupons', 'title')+'</h4>');
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <label for="DOPBSPCalendar-coupons-code'+ID+'">'+DOPBSPFrontEnd.text(ID, 'coupons', 'code')+'</label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-coupons-code'+ID+'" id="DOPBSPCalendar-coupons-code'+ID+'" value="" />');
HTML.push(' </div>');
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <input type="button" name="DOPBSPCalendar-coupons-verify'+ID+'" id="DOPBSPCalendar-coupons-verify'+ID+'" class="DOPBSPCalendar-hidden" value="'+DOPBSPFrontEnd.text(ID, 'coupons', 'verify')+'" />');
HTML.push('     <input type="button" name="DOPBSPCalendar-coupons-use'+ID+'" id="DOPBSPCalendar-coupons-use'+ID+'" class="DOPBSPCalendar-hidden" value="'+DOPBSPFrontEnd.text(ID, 'coupons', 'use')+'" />');
HTML.push('     <div id="DOPBSPCalendar-coupons-loader'+ID+'" class="dopbsp-submit-loader DOPBSPCalendar-hidden"></div>');
HTML.push(' </div>');
HTML.push(' <div class="dopbsp-message DOPBSPCalendar-hidden"></div>');
HTML.push('</div>');
$('#DOPBSPCalendar-sidebar-column-wrapper-'+methods_sidebar.data['positions']['coupons']['column']+'-'+ID+' .dopbsp-row'+methods_sidebar.data['positions']['coupons']['row']).html(HTML.join(''));
},
init:function(){
methods_coupons.events();
},
events:function(){
$('#DOPBSPCalendar-coupons-code'+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-coupons-code'+ID).bind('input propertychange blur', function(){
if($(this).val()===''){
$('#DOPBSPCalendar-coupons-verify'+ID).css('display', 'none');
$('#DOPBSPCalendar-coupons-verify'+ID).addClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-coupons-verify'+ID).css('display', 'block');
$('#DOPBSPCalendar-coupons-verify'+ID).removeClass('DOPBSPCalendar-hidden');
}
$('#DOPBSPCalendar-coupons-use'+ID).css('display', 'none');
$('#DOPBSPCalendar-coupons-use'+ID).addClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-coupons-loader'+ID).css('display', 'none');
$('#DOPBSPCalendar-coupons-loader'+ID).addClass('DOPBSPCalendar-hidden');
methods_coupons.toggleMessages('', 'none');
});
$('#DOPBSPCalendar-coupons-verify'+ID).unbind('click');
$('#DOPBSPCalendar-coupons-verify'+ID).bind('click', function(){
methods_coupons.verify();
});
$('#DOPBSPCalendar-coupons-use'+ID).unbind('click');
$('#DOPBSPCalendar-coupons-use'+ID).bind('click', function(){
methods_coupons.vars.use=true;
methods_reservation.set();
$('#DOPBSPCalendar-coupons-code'+ID).val('');
$('#DOPBSPCalendar-coupons-use'+ID).css('display', 'none');
methods_coupons.toggleMessages('', 'none');
});
},
verify:function(){
var currDate=new Date,
today=currDate.getFullYear()+'-'+DOPPrototypes.getLeadingZero(currDate.getMonth()+1)+'-'+DOPPrototypes.getLeadingZero(currDate.getDate()),
currTime=DOPPrototypes.getLeadingZero(currDate.getHours())+':'+DOPPrototypes.getLeadingZero(currDate.getMinutes());
$('#DOPBSPCalendar-coupons-code'+ID).attr('disabled', 'disabled');
$('#DOPBSPCalendar-coupons-verify'+ID).css('display', 'none');
$('#DOPBSPCalendar-coupons-verify'+ID).addClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-coupons-use'+ID).css('display', 'none');
$('#DOPBSPCalendar-coupons-use'+ID).addClass('DOPBSPCalendar-hidden');
methods_coupons.toggleMessages('', 'none');
$('#DOPBSPCalendar-coupons-loader'+ID).css('display', 'block');
$('#DOPBSPCalendar-coupons-loader'+ID).removeClass('DOPBSPCalendar-hidden');
$.post(ajaxURL, {action: 'dopbsp_coupons_verify',
dopbsp_frontend_ajax_request: true,
code: $('#DOPBSPCalendar-coupons-code'+ID).val(),
calendar_id: ID,
today: today,
check_in: methods_reservation.reservation['check_in'],
check_out: methods_reservation.reservation['check_out'],
start_hour: methods_reservation.reservation['start_hour'],
end_hour: methods_reservation.reservation['end_hour'],
language: methods_calendar.data['language'],
curr_time: currTime}, function(data){
data=$.trim(data);
$('#DOPBSPCalendar-coupons-code'+ID).removeAttr('disabled');
$('#DOPBSPCalendar-coupons-loader'+ID).css('display', 'none');
$('#DOPBSPCalendar-coupons-loader'+ID).addClass('DOPBSPCalendar-hidden');
if(data!=='error'){
methods_coupons.data['coupon']=JSON.parse(data);
methods_coupons.vars.use=false;
$('#DOPBSPCalendar-coupons-use'+ID).css('display', 'block');
$('#DOPBSPCalendar-coupons-use'+ID).removeClass('DOPBSPCalendar-hidden');
methods_coupons.toggleMessages(DOPBSPFrontEnd.text(ID, 'coupons', 'verifySuccess'),
'block',
'dopbsp-success');
}else{
$('#DOPBSPCalendar-coupons-verify'+ID).css('display', 'block');
$('#DOPBSPCalendar-coupons-verify'+ID).removeClass('DOPBSPCalendar-hidden');
methods_coupons.vars.use=true;
methods_coupons.toggleMessages(DOPBSPFrontEnd.text(ID, 'coupons', 'verifyError'),
'block',
'dopbsp-error');
methods_coupons.data['coupon']['price']=0;
}});
},
get:function(){
var coupon={'id': 0,
'code': '',
'operation': '-',
'price': 0,
'price_type': 'percent',
'price_by': 'once',
'translation': ''},
coupon_data=methods_coupons.data['coupon'];
if(methods_woocommerce.data['enabled']){
return coupon;
}
if(methods_coupons.vars.use===true){
coupon['id']=coupon_data['id'];
coupon['code']=coupon_data['code'];
coupon['operation']=coupon_data['operation'];
coupon['price']=coupon_data['price'];
coupon['price_type']=coupon_data['price_type'];
coupon['price_by']=coupon_data['price_by'];
coupon['translation']=coupon_data['translation'];
}
return coupon;
},
getPrice:function(coupon,
reservationPrice,
discountPrice,
extrasPrice,
feesPrice,
ciDay,
coDay,
startHour,
endHour,
noItems){
var price=0,
timeLapse;
if(methods_woocommerce.data['enabled']){
return price;
}
coDay=coDay==='' ? ciDay:coDay;
endHour=endHour==='' ? startHour:endHour;
timeLapse=methods_hours.data['enabled'] ? DOPPrototypes.getHoursDifference(startHour, endHour, 'hours')+(methods_hours.data['addLastHourToTotalPrice'] ? 1:0):
DOPPrototypes.getNoDays(ciDay, coDay)-(DOT.methods.calendar_days.settings[ID]['morningCheckOut'] ? 1:0);
price +=(coupon['operation']==='-' ? -1:1)
*(coupon['price_by']==='once' ? 1:timeLapse)
*parseFloat(coupon['price'])
*(coupon['price_type']==='fixed' ? 1:(reservationPrice+discountPrice+extrasPrice+feesPrice))/
(coupon['price_type']==='fixed' ? 1:100);
return price;
},
set:function(coupon,
reservationPrice,
discountPrice,
extrasPrice,
feesPrice,
ciDay,
coDay,
startHour,
endHour,
noItems){
var HTML=new Array(),
i,
price=0;
coDay=coDay==='' ? ciDay:coDay;
endHour=endHour==='' ? startHour:endHour;
if(coupon['price'] > 0){
price=methods_coupons.getPrice(coupon,
reservationPrice,
discountPrice,
extrasPrice,
feesPrice,
ciDay,
coDay,
startHour,
endHour,
noItems);
HTML.push(' <tr class="dopbsp-separator">');
HTML.push('     <td class="dopbsp-label"><div class="dopbsp-line"></div></td>');
HTML.push('     <td class="dopbsp-value"><div class="dopbsp-line"></div></td>');
HTML.push(' </tr>');
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+coupon['translation']+'</td>');
HTML.push('     <td class="dopbsp-value dopbsp-info">');
HTML.push('         '+coupon['code']+'<br />');
if(coupon['price_type']!=='fixed'
|| coupon['price_by']!=='once'){
HTML.push('         <span class="dopbsp-info-rule">&#9632;&nbsp;');
if(coupon['price_type']==='fixed'){
HTML.push(coupon['operation']+DOPBSPFrontEnd.setPrice(ID, coupon['price']));
}else{
HTML.push(coupon['operation']+coupon['price']+'%');
}
if(coupon['price_by']!=='once'){
HTML.push('/'+(methods_hours.data['enabled'] ? DOPBSPFrontEnd.text(ID, 'coupons', 'byHour'):DOPBSPFrontEnd.text(ID, 'coupons', 'byDay')));
}
HTML.push('         </span><br />');
}
HTML.push('         <span class="dopbsp-info-price">'+coupon['operation']+'&nbsp;'+DOPBSPFrontEnd.setPrice(ID, price)+'</span>');
HTML.push('     </td>');
HTML.push(' </tr>');
}
return HTML.join('');
},
toggleMessages:function(message,
display,
type){
display=display===undefined ? 'block':display;
type=type===undefined ? 'dopbsp-error':type;
$('#DOPBSPCalendar-coupons'+ID+' .dopbsp-message').html(message)
.removeClass('dopbsp-success')
.removeClass('dopbsp-error')
.addClass(type)
.css('display', display);
if(display==='dopbsp-error'){
$('#DOPBSPCalendar-coupons'+ID+' .dopbsp-message').addClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-coupons'+ID+' .dopbsp-message').removeClass('DOPBSPCalendar-hidden');
}}
},
methods_reservation={
data: {},
text: {},
reservation: {'check_in': '',
'check_out': '',
'start_hour': '',
'end_hour': '',
'no_items': 1,
'price': 0,
'price_total': 0,
'extras': new Array(),
'extras_price': 0,
'discount': {},
'discount_price': 0,
'coupon': {},
'coupon_price': 0,
'fees': new Array(),
'fees_price': 0,
'deposit': {},
'deposit_price': 0,
'days_hours_history': {}},
display:function(){
var HTML=new Array();
HTML.push(' <div id="DOPBSPCalendar-reservation'+ID+'" class="dopbsp-module">');
HTML.push('     <h4>'+DOPBSPFrontEnd.text(ID, 'reservation', 'title')+'</h4>');
HTML.push('     <div id="DOPBSPCalendar-reservation-cart'+ID+'">');
HTML.push('         <div class="dopbsp-message">'+(methods_hours.data['enabled'] ? DOPBSPFrontEnd.text(ID, 'reservation', 'selectHours'):DOPBSPFrontEnd.text(ID, 'reservation', 'selectDays'))+'</div>');
HTML.push('     </div>');
if(methods_cart.data['enabled']
|| (methods_woocommerce.data['enabled']
&& methods_woocommerce.data['addToCart'])){
var dataDeposit=DOPBSPFrontEnd.calendar[ID]['deposit']['data'];
if(dataDeposit['deposit'] > 0
&& dataDeposit['pay_full_amount']==='true'){
HTML.push(' <div class="dopbsp-input-wrapper DOPBSPCalendar-hidden dopbsp-add-to-cart-wrapper" id="DOPBSPCalendar-pay-full-amount-wrapper'+ID+'" style="margin-top: 20px;">');
HTML.push('     <input type="checkbox" name="DOPBSPCalendar-pay-full-amount'+ID+'" id="DOPBSPCalendar-pay-full-amount'+ID+'" />');
HTML.push('     <label class="dopbsp-for-checkbox" for="DOPBSPCalendar-pay-full-amount'+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', 'paymentFull')+'</label>');
HTML.push(' </div>');
}
HTML.push('     <div class="dopbsp-input-wrapper dopbsp-add-to-cart-wrapper">');
HTML.push('         <input type="submit" name="DOPBSPCalendar-add-to-cart'+ID+'" id="DOPBSPCalendar-add-to-cart'+ID+'" value="'+DOPBSPFrontEnd.text(ID, 'woocommerce', 'addToCart')+'" />');
HTML.push('         <div id="DOPBSPCalendar-add-to-cart-loader'+ID+'" class="dopbsp-submit-loader DOPBSPCalendar-hidden"></div>');
HTML.push('     </div>');
}
HTML.push(' </div>');
$('#DOPBSPCalendar-sidebar-column-wrapper-'+methods_sidebar.data['positions']['reservation']['column']+'-'+ID+' .dopbsp-row'+methods_sidebar.data['positions']['reservation']['row']).html(HTML.join(''));
},
init:function(){
methods_reservation.events();
},
set:function(){
var ciDay=$('#DOPBSPCalendar-check-in'+ID).val(),
coDay=$('#DOPBSPCalendar-check-out'+ID).val()!==undefined ? $('#DOPBSPCalendar-check-out'+ID).val():'',
endHour=$('#DOPBSPCalendar-end-hour'+ID).val()!==undefined ? $('#DOPBSPCalendar-end-hour'+ID).val():'',
HTML=new Array(),
noItems=parseInt($('#DOPBSPCalendar-no-items'+ID).val()),
startHour=$('#DOPBSPCalendar-start-hour'+ID).val()!==undefined ? $('#DOPBSPCalendar-start-hour'+ID).val():'',
full_amount_id="#DOPBSPCalendar-pay-full-amount"+ID;
if(!methods_hours.data['enabled']
&& !methods_days.getAvailability(ciDay, coDay)){
methods_reservation.toggleMessages(DOPBSPFrontEnd.text(ID, 'reservation', 'selectDays'), '');
methods_reservation.clear();
methods_order.payment.set();
return false;
}
if(methods_hours.data['enabled']
&& !methods_hours.getAvailability(ciDay, startHour, endHour)){
methods_reservation.toggleMessages(DOPBSPFrontEnd.text(ID, 'reservation', 'selectHours'), '');
endHour!=='' ? methods_reservation.clear():'';
methods_order.payment.set();
return false;
}
if(methods_hours.data['enabled']
&& DOT.methods.calendar_schedule.default[ID]['available']===0
&& DOT.methods.calendar_schedule.data[ID][ciDay]===undefined){
methods_reservation.toggleMessages(DOPBSPFrontEnd.text(ID, 'reservation', 'selectHours'), '');
methods_reservation.clear();
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'search', 'noServices'));
return false;
}
methods_reservation.reservation['check_in']=ciDay;
methods_reservation.reservation['check_out']=coDay;
methods_reservation.reservation['start_hour']=startHour;
methods_reservation.reservation['end_hour']=methods_hours.data['multipleSelect'] ? endHour:'';
methods_reservation.reservation['no_items']=noItems;
methods_reservation.reservation['price']=noItems*(methods_hours.data['enabled'] ? methods_hours.getPrice(methods_reservation.reservation['check_in'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour']):
methods_days.getPrice(methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out']));
methods_reservation.reservation['extras']=methods_extras.get(methods_reservation.reservation['price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']);
methods_reservation.reservation['extras_price']=methods_extras.getPrice(methods_reservation.reservation['extras'],
methods_reservation.reservation['price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']);
methods_reservation.reservation['discount']=DOPBSPFrontEndDiscounts.get(ID,
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour']);
methods_reservation.reservation['discount_price']=DOPBSPFrontEndDiscounts.getPrice(ID,
methods_reservation.reservation['discount'],
methods_reservation.reservation['price'],
methods_reservation.reservation['extras_price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']);
methods_reservation['pay_full']=methods_reservation['pay_full']===undefined ? false:$('input[name=DOPBSPCalendar-pay-full-amount'+ID+']').is(':checked');
window.methods_reservation=methods_reservation;
methods_reservation.reservation['fees']=DOPBSPFrontEndFees.get(ID,
methods_reservation.reservation['price'],
methods_reservation.reservation['discount_price'],
methods_reservation.reservation['extras_price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']);
methods_reservation.reservation['fees_price']=DOPBSPFrontEndFees.getPrice(ID,
methods_reservation.reservation['fees'],
methods_reservation.reservation['price'],
methods_reservation.reservation['discount_price'],
methods_reservation.reservation['extras_price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']);
methods_reservation.reservation['coupon']=methods_coupons.get();
methods_reservation.reservation['coupon_price']=methods_coupons.getPrice(methods_reservation.reservation['coupon'],
methods_reservation.reservation['price'],
methods_reservation.reservation['discount_price'],
methods_reservation.reservation['extras_price'],
methods_reservation.reservation['fees_price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']);
methods_reservation.reservation['price_total']=methods_reservation.reservation['price']
+methods_reservation.reservation['extras_price']
+methods_reservation.reservation['discount_price']
+methods_reservation.reservation['fees_price']
+methods_reservation.reservation['coupon_price'];
methods_reservation.reservation['price_total']=parseFloat(methods_reservation.reservation['price_total'].toFixed(2));
methods_reservation.reservation['deposit']=DOPBSPFrontEndDeposit.get(ID);
methods_reservation.reservation['deposit_price']=DOPBSPFrontEndDeposit.getPrice(ID,
methods_reservation.reservation['deposit'],
methods_reservation.reservation['price_total']);
methods_reservation.reservation['days_hours_history']=methods_hours.data['enabled'] ? methods_hours.getHistory(methods_reservation.reservation['check_in'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour']):
methods_days.getHistory(methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out']);
HTML.push('<div class="dopbsp-cart-wrapper">');
HTML.push(' <table class="dopbsp-cart">');
HTML.push('     <tbody>');
HTML.push('         <tr>');
HTML.push('             <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'search', 'checkIn')+'</td>');
HTML.push('             <td class="dopbsp-value">'+methods_sidebar.getDateFormat(methods_reservation.reservation['check_in'])+'</td>');
HTML.push('         </tr>');
if(methods_reservation.reservation['check_out']!==''){
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'search', 'checkOut')+'</td>');
HTML.push('     <td class="dopbsp-value">'+methods_sidebar.getDateFormat(methods_reservation.reservation['check_out'])+'</td>');
HTML.push(' </tr>');
}
if(methods_reservation.reservation['start_hour']!==''){
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'search', 'hourStart')+'</td>');
HTML.push('     <td class="dopbsp-value">');
HTML.push(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(methods_reservation.reservation['start_hour']):
methods_reservation.reservation['start_hour']);
HTML.push('     </td>');
HTML.push(' </tr>');
}
if(methods_reservation.reservation['end_hour']!==''){
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'search', 'hourEnd')+'</td>');
HTML.push('     <td class="dopbsp-value">');
HTML.push(methods_hours.data['ampm'] ? DOPPrototypes.getAMPM(methods_reservation.reservation['end_hour']):
methods_reservation.reservation['end_hour']);
HTML.push('     </td>');
HTML.push(' </tr>');
}
if(methods_sidebar.data['noItems']){
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'search', 'noItems')+'</td>');
HTML.push('     <td class="dopbsp-value">'+methods_reservation.reservation['no_items']+'</td>');
HTML.push(' </tr>');
}
if(methods_reservation.reservation['price']!==0){
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'reservation', 'price')+'</td>');
HTML.push('     <td class="dopbsp-value dopbsp-price">');
HTML.push(DOPBSPFrontEnd.setPrice(ID, methods_reservation.reservation['price']));
HTML.push('     </td>');
HTML.push(' </tr>');
}
HTML.push(methods_extras.set(methods_reservation.reservation['extras'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour']));
if(methods_reservation.reservation['price']!==0
|| methods_reservation.reservation['extras_price']!==0){
HTML.push(DOPBSPFrontEndDiscounts.set(ID,
methods_reservation.reservation['discount'],
methods_reservation.reservation['price'],
methods_reservation.reservation['extras_price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']));
}
HTML.push(DOPBSPFrontEndFees.set(ID,
'reservation',
methods_reservation.reservation['fees'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour']));
if(methods_reservation.reservation['price']!==0
|| methods_reservation.reservation['extras_price']!==0){
HTML.push(methods_coupons.set(methods_reservation.reservation['coupon'],
methods_reservation.reservation['price'],
methods_reservation.reservation['discount_price'],
methods_reservation.reservation['extras_price'],
methods_reservation.reservation['fees_price'],
methods_reservation.reservation['check_in'],
methods_reservation.reservation['check_out'],
methods_reservation.reservation['start_hour'],
methods_reservation.reservation['end_hour'],
methods_reservation.reservation['no_items']));
}
HTML.push('         <tr class="dopbsp-separator">');
HTML.push('             <td class="dopbsp-label"></td>');
HTML.push('             <td class="dopbsp-value"></td>');
HTML.push('         </tr>');
if(methods_reservation.reservation['price_total'] >=0&&(methods_reservation.reservation['price']!==0||methods_reservation.reservation['extras_price']!==0||methods_reservation.reservation['deposit_price'] > 0)){
if(methods_reservation.reservation['deposit_price'] > 0){
HTML.push(DOPBSPFrontEndDeposit.set(ID,
methods_reservation.reservation['deposit'],
methods_reservation.reservation['price_total']));
}
HTML.push('         <tr class="dopbsp-total">');
HTML.push('             <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'reservation', 'priceTotal')+'</td>');
HTML.push('             <td class="dopbsp-value">'+DOPBSPFrontEnd.setPrice(ID, methods_reservation.reservation['price_total'])+'</td>');
HTML.push('         </tr>');
}
HTML.push('     </tbody>');
HTML.push(' </table>');
HTML.push('</div>');
$('#DOPBSPCalendar-reservation-cart'+ID).html(HTML.join(''));
if(methods_woocommerce.data['enabled']
&& !methods_woocommerce.data['addToCart']){
if($('.cart').offset().top+$('.cart').height() < $(document).scrollTop()){
DOPPrototypes.scrollToY($('.cart').offset().top+$('.cart').height()-200);
}}else{
if($('#DOPBSPCalendar-reservation'+ID).offset().top+$('#DOPBSPCalendar-reservation'+ID).height() > $(document).scrollTop()+$(window).height()){
DOPPrototypes.scrollToY($('#DOPBSPCalendar-reservation'+ID).offset().top+$('#DOPBSPCalendar-reservation'+ID).height()-$(window).height()+50);
}}
if(methods_extras.validate(methods_reservation.reservation['extras'])){
if(methods_woocommerce.data['enabled']){
methods_cart.cart[0]=methods_reservation.reservation;
methods_woocommerce.set();
}
else if(methods_cart.data['enabled']){
}else{
methods_cart.cart[0]=methods_reservation.reservation;
methods_order.payment.set();
$('#DOPBSPCalendar-submit'+ID).css('display', 'block');
$('#DOPBSPCalendar-submit'+ID).removeClass('DOPBSPCalendar-hidden');
}}else{
if(!methods_cart.data['enabled']){
$('#DOPBSPCalendar-submit'+ID).css('display', 'none');
}}
},
events:function(){
$('#DOPBSPCalendar-add-to-cart'+ID).unbind('click');
$('#DOPBSPCalendar-add-to-cart'+ID).bind('click', function(){
if(methods_woocommerce.data['enabled']
&& methods_woocommerce.data['addToCart']){
methods_woocommerce.add();
}});
},
clear:function(){
methods_days.vars.selectionEnd='';
methods_days.vars.selectionInit=false;
methods_days.vars.selectionStart='';
methods_days.clearSelection();
methods_hours.vars.selectionEnd='';
methods_hours.vars.selectionInit=false;
methods_hours.vars.selectionStart='';
$('.DOPBSPCalendar-hour', Container).removeClass('dopbsp-selected');
methods_coupons.vars.use=false;
methods_reservation.reservation={'check_in': '',
'check_out': '',
'start_hour': '',
'end_hour': '',
'no_items': 1,
'price': 0,
'price_total': 0,
'extras': new Array(),
'extras_price': 0,
'discount': {},
'discount_price': 0,
'coupon': {},
'coupon_price': 0,
'fees': new Array(),
'fees_price': 0,
'deposit': {},
'deposit_price': 0,
'days_hours_history': {}};
if(!methods_cart.data['enabled']){
methods_cart.cart=new Array();
$('#DOPBSPCalendar-submit'+ID).css('display', 'none');
}},
clearUrl: function(){
var url=window.location.href;
var updatedUri=url.indexOf("?check_in") > 0 ? url.substring(0, url.indexOf("?check_in")):url.substring(0, url.indexOf("&check_in"));
if(url.indexOf("?") > 0){
window.history.replaceState({}, document.title, updatedUri);
}},
toggleMessages:function(message,
type){
type=type===undefined ? 'dopbsp-error':type;
$('#DOPBSPCalendar-reservation-cart'+ID).html('<div class="dopbsp-message '+type+'">'+message+'</div>');
}},
methods_cart={
data: {},
text: {},
cart: new Array(),
display:function(){
var HTML=new Array();
HTML.push(' <div id="DOPBSPCalendar-cart'+ID+'" class="module'+(methods_cart.data['enabled'] ? '':' DOPBSPCalendar-hidden')+'">');
HTML.push('     <h4>'+DOPBSPFrontEnd.text(ID, 'cart', 'title')+'</h4>');
HTML.push('     <table id="DOPBSPCalendar-list-cart'+ID+'" class="cart">');
HTML.push('         <tbody>');
HTML.push('             <tr>');
HTML.push('                 <td class="label">Price</td>');
HTML.push('                 <td class="value"></td>');
HTML.push('             </tr>');
HTML.push('             <tr id="DOPBSPCalendar-cart-totals-discount'+ID+'">');
HTML.push('                 <td class="label">Discount</td>');
HTML.push('                 <td class="value"></td>');
HTML.push('             </tr>');
HTML.push('             <tr id="DOPBSPCalendar-cart-totals-deposit'+ID+'">');
HTML.push('                 <td class="label">'+DOPBSPFrontEnd.text(ID, 'deposit', 'title')+'</td>');
HTML.push('                 <td class="value"></td>');
HTML.push('             </tr>');
HTML.push('             <tr id="DOPBSPCalendar-cart-totals-total-price'+ID+'" class="total">');
HTML.push('                 <td class="label">'+DOPBSPFrontEnd.text(ID, 'reservation', 'priceTotal')+'</td>');
HTML.push('                 <td class="value"></td>');
HTML.push('             </tr>');
HTML.push('         </tbody>');
HTML.push('     </table>');
HTML.push(' </div>');
$('#DOPBSPCalendar-sidebar-column-wrapper-'+methods_sidebar.data['positions']['cart']['column']+'-'+ID+' .row'+methods_sidebar.data['positions']['cart']['row']).html(HTML.join(''));
},
add:function(){
methods_cart.cart.push(methods_reservation.reservation);
methods_cart.set();
},
delete:function(i){
methods_cart.cart.splice(i, 1);
methods_cart.set();
},
set:function(){
var HTML=new Array(),
i;
HTML.push('<tbody>');
if(methods_cart.cart.length > 0){
for (i=0; i<methods_cart.cart.length; i++){
}
methods_order.set();
}else{
HTML.push('  <tr>');
HTML.push('     <td>'+DOPBSPFrontEnd.text(ID, 'cart', 'isEmpty')+'</td>');
HTML.push('  </tr>');
methods_order.clear();
}
HTML.push('</tbody>');
}},
methods_form={
data: {},
text: {},
display:function(){
var form=methods_form.data['form'],
formField,
formFieldOption,
HTML=new Array (),
countries=DOPPrototypes.getCountries(),
i,
j;
HTML.push('<div id="DOPBSPCalendar-form'+ID+'" class="dopbsp-module">');
if(!methods_woocommerce.data['enabled']){
HTML.push(' <h4>'+DOPBSPFrontEnd.text(ID, 'form', 'title')+'</h4>');
for (i=0; i<form.length; i++){
formField=form[i];
HTML.push(' <div class="dopbsp-input-wrapper">');
switch (formField['type']){
case 'checkbox':
HTML.push('     <div id="DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+formField['translation']+' '+DOPBSPFrontEnd.text(ID, 'form', 'required')+'</div>');
HTML.push('     </div>');
HTML.push('     <input type="checkbox" name="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'" id="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'" />');
HTML.push('     <label class="dopbsp-for-checkbox" for="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'">'+formField['translation']+(formField['required']==='true' ? '  <span class="dopbsp-required">*</span>':'')+'</label>');
break;
case 'select':
HTML.push('     <div id="DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+formField['translation']+' '+DOPBSPFrontEnd.text(ID, 'form', 'required')+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'">'+formField['translation']+(formField['required']==='true' ? '  <span class="dopbsp-required">*</span>':'')+'</label>');
HTML.push('     <select name="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+(formField['multiple_select']==='true' ? '[]':'')+'" id="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'" value=""'+(formField['multiple_select']==='true' ? ' multiple':'')+'>');
for (j=0; j<formField['options'].length; j++){
formFieldOption=formField['options'][j];
HTML.push('<option value="'+formFieldOption['id']+'">'+formFieldOption['translation']+'</option>');
}
HTML.push('     </select>');
break;
case 'text':
HTML.push('     <div id="DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+formField['translation']+' '+(formField['is_email']==='true' ? DOPBSPFrontEnd.text(ID, 'form', 'invalidEmail'):DOPBSPFrontEnd.text(ID, 'form', 'required'))+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'">'+formField['translation']+(formField['required']==='true' ? ' <span class="dopbsp-required">*</span>':'')+'</label>');
if(formField['is_phone']==='true'){
HTML.push('     <select id="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'-phone_code" class="dopbsp-phone-code">');
for(var k=0; k < countries.length; k++){
if(countries[k]['code2']===formField['default_country']){
HTML.push('         <option value="'+countries[k]['code']+'" selected>'+countries[k]['name']+'</option>');
}else{
HTML.push('         <option value="'+countries[k]['code']+'">'+countries[k]['name']+'</option>');
}}
HTML.push('     </select>');
}
HTML.push('     <input type="text" name="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'" id="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'" class="'+(formField['is_phone']==='true' ? 'dopbsp-phone-input':'')+'" value="" />');
break;
case 'textarea':
HTML.push('     <div id="DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+formField['translation']+' '+DOPBSPFrontEnd.text(ID, 'form', 'required')+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'">'+formField['translation']+(formField['required']==='true' ? '  <span class="dopbsp-required">*</span>':'')+'</label>');
HTML.push('     <textarea name="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'" id="DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'" col="" rows="3"></textarea>');
break;
}
HTML.push(' </div>');
}}
HTML.push('</div>');
$('#DOPBSPCalendar-sidebar-column-wrapper-'+methods_sidebar.data['positions']['form']['column']+'-'+ID+' .dopbsp-row'+methods_sidebar.data['positions']['form']['row']).html(HTML.join(''));
methods_form.init();
},
init:function(){
var form=methods_form.data['form'],
formField,
i,
j,
countries=DOPPrototypes.getCountries();
for (i=0; i<form.length; i++){
formField=form[i];
if(formField['type']==='select'){
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).DOPSelect();
}
if(formField['is_phone']==='true'){
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'-phone_code').DOPSelect();
for (j=0; j<countries.length; j++){
if(countries[j]['name']===$('#DOPSelect-DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'-phone_code .dopselect-select .dopselect-selection').text()){
$('#DOPSelect-DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'-phone_code .dopselect-select .dopselect-selection').text(function(){
return countries[j]['code'];
});
}}
}}
methods_form.events();
},
events:function(){
var form=methods_form.data['form'],
formData={},
formField,
i,
j,
countries=DOPPrototypes.getCountries();
for (i=0; i<form.length; i++){
formField=form[i];
formData[formField['id']]=formField;
formData[formField['id']]['size']=parseInt(formData[formField['id']]['size'], 10);
if(formField['is_phone']==='true'){
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'-phone_code').bind('change', function(){
var cc=$(this).val();
for (j=0; j<countries.length; j++){
if(countries[j]['code']===cc){
$(this).parent().find('.dopselect-selection').html(countries[j]['code']);
}}
});
}
switch (formField['type']){
case 'checkbox':
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).unbind('click');
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).bind('click', function(){
var id=$(this).attr('id').split('DOPBSPCalendar-form-field'+ID+'_')[1];
if(formData[id]['required']==='true'
&& !$(this).is(':checked')){
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).addClass('DOPBSPCalendar-hidden');
}});
break;
case 'text':
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).unbind('input propertychange blur');
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).bind('input propertychange blur', function(){
var id=$(this).attr('id').split('DOPBSPCalendar-form-field'+ID+'_')[1],
value;
if(formData[id]['allowed_characters']!==''){
DOPPrototypes.cleanInput($(this), formData[id]['allowed_characters']);
}
value=$(this).val();
if(formData[id]['size']!==0){
$(this).val(value.substring(0, formData[id]['size']));
}
if(formData[id]['is_email']==='true'
&& (formData[id]['required']==='true'
&& !DOPPrototypes.validEmail(value)
|| formData[id]['required']==='false'
&& !DOPPrototypes.validEmail(value)
&& value!=='')){
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).removeClass('DOPBSPCalendar-hidden');
}
else if(formData[id]['required']==='true'
&& value===''){
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).addClass('DOPBSPCalendar-hidden');
}});
break;
case 'select':
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).unbind('change');
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).bind('change', function(){
var id=$(this).attr('id').split('DOPBSPCalendar-form-field'+ID+'_')[1];
if(formData[id]['required']==='true'
&& ($(this).val()===''
|| $(this).val()===null)){
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).addClass('DOPBSPCalendar-hidden');
}});
break;
case 'textarea':
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).unbind('input propertychange blur');
$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).bind('input propertychange blur', function(){
var id=$(this).attr('id').split('DOPBSPCalendar-form-field'+ID+'_')[1],
value;
if(formData[id]['allowed_characters']!==''){
DOPPrototypes.cleanInput($(this), formData[id]['allowed_characters']);
}
value=$(this).val();
if(formData[id]['size']!==0){
$(this).val(value.substring(0, formData[id]['size']));
}
if(formData[id]['required']==='true'
&& value===''){
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+id).addClass('DOPBSPCalendar-hidden');
}});
break;
}}
},
get:function(){
var form=methods_form.data['form'],
formData=new Array(),
formField,
i,
j,
k,
option,
selectedOptions;
for (i=0; i<form.length; i++){
formField=form[i];
formData[i]={"id": "",
"is_email": false,
"is_phone": false,
"add_to_day_hour_info": false,
"add_to_day_hour_body": false,
"translation": "",
"value": ""};
formData[i]['id']=formField['id'];
formData[i]['is_email']=formField['is_email']==='true' ? true:false;
formData[i]['is_phone']=formField['is_phone']==='true' ? true:false;
formData[i]['add_to_day_hour_info']=formField['add_to_day_hour_info']==='true' ? true:false;
formData[i]['add_to_day_hour_body']=formField['add_to_day_hour_body']==='true' ? true:false;
formData[i]['translation']=formField['translation'];
switch (formField['type']){
case 'checkbox':
formData[i]['value']=$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).is(':checked');
break;
case 'select':
option=$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val();
if(formField['multiple_select']==='true'){
selectedOptions=option.split(',');
formData[i]['value']=new Array();
for (j=0; j<selectedOptions.length; j++){
for (k=0; k<formField['options'].length; k++){
if(formField['options'][k]['id']===selectedOptions[j]){
formData[i]['value'][j]=formField['options'][k];
}}
}
if(formData[i]['value'].length===0){
formData[i]['value']='';
}}else{
formData[i]['value']='';
for (k=0; k<formField['options'].length; k++){
if(formField['options'][k]['id']===option){
formData[i]['value']=formField['options'][k]['translation'];
break;
}}
}
break;
default:
if(formData[i]['is_phone']){
formData[i]['value']=$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']+'-phone_code').val();
}
formData[i]['value']=formData[i]['value'] +$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val();
}}
return formData;
},
validate:function(){
var form=methods_form.data['form'],
formField,
i,
isValid=true;
for (i=0; i<form.length; i++){
formField=form[i];
switch (formField['type']){
case 'checkbox':
if(formField['required']==='true'
&& !$('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).is(':checked')){
isValid=false;
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).addClass('DOPBSPCalendar-hidden');
}
break;
case 'text':
if(formField['is_email']==='true'
&& (formField['required']==='true'
&& !DOPPrototypes.validEmail($('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val())
|| formField['required']==='false'
&& !DOPPrototypes.validEmail($('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val())
&& $('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val()!=='')){
isValid=false;
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).removeClass('DOPBSPCalendar-hidden');
}
else if(formField['required']==='true'
&& $('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val()===''){
isValid=false;
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).addClass('DOPBSPCalendar-hidden');
}
break;
case 'select':
if(formField['required']==='true'
&& ($('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val()===''
|| $('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val()===null)){
isValid=false;
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).addClass('DOPBSPCalendar-hidden');
}
break;
case 'textarea':
if(formField['required']==='true'
&& $('#DOPBSPCalendar-form-field'+ID+'_'+formField['id']).val()===''){
isValid=false;
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'block');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).css('display', 'none');
$('#DOPBSPCalendar-form-field-warning'+ID+'_'+formField['id']).addClass('DOPBSPCalendar-hidden');
}
break;
}}
return isValid;
},
getInfo:function(info){
var i,
text=new Array();
for (i=0; i<info.length; i++){
text.push(info[i]['data']);
}
return text.join('<br /><br />');
}},
methods_order={
data: {},
text: {},
vars: {addressFields: [{"id": "first-name",
"key": "first_name",
"text": "addressFirstName"},
{"id": "last-name",
"key": "last_name",
"text": "addressLastName"},
{"id": "company",
"key": "company",
"text": "addressCompany"},
{"id": "email",
"key": "email",
"text": "addressEmail"},
{"id": "phone",
"key": "phone",
"text": "addressPhone"},
{"id": "country",
"key": "country",
"text": "addressCountry"},
{"id": "address-first",
"key": "address_first",
"text": "addressAddressFirst"},
{"id": "address-second",
"key": "address_second",
"text": "addressAddressSecond"},
{"id": "city",
"key": "city",
"text": "addressCity"},
{"id": "state",
"key": "state",
"text": "addressState"},
{"id": "zip-code",
"key": "zip_code",
"text": "addressZipCode"}],
tokenInit: false},
display:function(){
var HTML=new Array (),
key,
paymentGateways=methods_order.data['paymentGateways'];
HTML.push('<div id="DOPBSPCalendar-order'+ID+'" class="dopbsp-module">');
HTML.push(' <h4>'+DOPBSPFrontEnd.text(ID, 'order', 'title')+'</h4>');
var dataDeposit=DOPBSPFrontEnd.calendar[ID]['deposit']['data'];
if(dataDeposit['deposit'] > 0
&& dataDeposit['pay_full_amount']==='true'){
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <input type="checkbox" name="DOPBSPCalendar-pay-full-amount'+ID+'" id="DOPBSPCalendar-pay-full-amount'+ID+'" />');
HTML.push('     <label class="dopbsp-for-checkbox" for="DOPBSPCalendar-pay-full-amount'+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', 'paymentFull')+'</label>');
HTML.push(' </div>');
}
if(methods_order.data['paymentArrival']){
HTML.push(' <div class="dopbsp-input-wrapper dopbsp-payment-first">');
HTML.push('     <input type="radio" name="DOPBSPCalendar-payment'+ID+'" value="default" />');
HTML.push('     <label class="dopbsp-for-radio">'+(methods_order.data['paymentArrivalWithApproval'] ? DOPBSPFrontEnd.text(ID, 'order', 'paymentArrivalWithApproval'):DOPBSPFrontEnd.text(ID, 'order', 'paymentArrival'))+'</label>');
HTML.push(' </div>');
}
if(paymentGateways.length!==0){
for (key in paymentGateways){
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <input type="radio" name="DOPBSPCalendar-payment'+ID+'" value="'+paymentGateways[key]['id']+'" />');
HTML.push('     <label class="dopbsp-for-radio">'+paymentGateways[key]['text']['label']+'</label>');
HTML.push(' </div>');
if(key==='stripe'){
HTML.push(DOT.layouts.addons_stripe.card(ID, paymentGateways[key]['data']['token']['function'], paymentGateways[key]['text']['card_title']));
}}
}
HTML.push(' <input type="hidden" name="DOPBSPCalendar-payment-token'+ID+'" id="DOPBSPCalendar-payment-token'+ID+'" value="" />');
HTML.push(' <input type="hidden" name="DOPBSPCalendar-payment-token-message'+ID+'" id="DOPBSPCalendar-payment-token-message'+ID+'" value="" />');
HTML.push(' <div id="DOPBSPCalendar-payment-form-addon'+ID+'"></div>');
HTML.push(methods_order.payment.card.display());
HTML.push(methods_order.payment.address_billing.display());
HTML.push(methods_order.payment.address_shipping.display());
if(methods_order.data['termsAndConditions']){
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <input type="checkbox" name="DOPBSPCalendar-terms-and-conditions'+ID+'" id="DOPBSPCalendar-terms-and-conditions'+ID+'" />');
HTML.push('     <label class="dopbsp-for-checkbox" for="DOPBSPCalendar-terms-and-conditions'+ID+'"><a href="'+methods_order.data['termsAndConditionsLink']+'" target="_blank">'+DOPBSPFrontEnd.text(ID, 'order', 'termsAndConditions')+'</a></label>');
HTML.push(' </div>');
}
if(methods_order.data['privacy']){
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <input type="checkbox" name="DOPBSPCalendar-privacy'+ID+'" id="DOPBSPCalendar-privacy'+ID+'" />');
HTML.push('     <label class="dopbsp-for-checkbox" for="DOPBSPCalendar-privacy'+ID+'"><a href="'+methods_order.data['privacyLink']+'" target="_blank">'+DOPBSPFrontEnd.text(ID, 'order', 'privacy')+'</a></label>');
HTML.push(' </div>');
}
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <input type="submit" name="DOPBSPCalendar-submit'+ID+'" id="DOPBSPCalendar-submit'+ID+'" class="DOPBSPCalendar-hidden" value="'+DOPBSPFrontEnd.text(ID, 'order', 'book')+'" />');
HTML.push('     <div id="DOPBSPCalendar-submit-loader'+ID+'" class="dopbsp-submit-loader DOPBSPCalendar-hidden"></div>');
HTML.push(' </div>');
HTML.push(' <div class="dopbsp-message DOPBSPCalendar-hidden"></div>');
HTML.push('</div>');
$('#DOPBSPCalendar-sidebar-column-wrapper-'+methods_sidebar.data['positions']['order']['column']+'-'+ID+' .dopbsp-row'+methods_sidebar.data['positions']['order']['row']).html(HTML.join(''));
methods_order.init();
},
init:function(){
var key,
paymentGateways=methods_order.data['paymentGateways'];
$('#DOPBSPCalendar-payment-card-expiration-date-month'+ID).DOPSelect();
$('#DOPBSPCalendar-payment-card-expiration-date-year'+ID).DOPSelect();
methods_order.events();
methods_order.payment.set();
methods_order.payment.address_billing.init();
methods_order.payment.address_shipping.init();
methods_order.payment.card.init();
if(paymentGateways.length!==0){
for (key in paymentGateways){
key==='stripe' ? DOT.methods.addons_stripe.init(ID):'';
}}
},
events:function(){
$('input[name=DOPBSPCalendar-pay-full-amount'+ID+']').unbind('click');
$('input[name=DOPBSPCalendar-pay-full-amount'+ID+']').bind('click', function(){
methods_reservation.set();
});
$('input[name=DOPBSPCalendar-payment'+ID+']').unbind('click');
$('input[name=DOPBSPCalendar-payment'+ID+']').bind('click', function(){
methods_order.payment.form_addon.display();
methods_order.payment.card.set();
$(this).val()==='stripe' ? $('#'+DOT.id+'-stripe-card-wrapper'+ID).removeClass('DOPBSPCalendar-hidden'):
$('#'+DOT.id+'-stripe-card-wrapper'+ID).addClass('DOPBSPCalendar-hidden');
methods_order.payment.address_billing.set();
methods_order.payment.address_shipping.set();
});
$('#DOPBSPCalendar-submit'+ID).unbind('click');
$('#DOPBSPCalendar-submit'+ID).bind('click', function(){
methods_order.book();
});
},
validate:function(){
var isValid=true;
if(methods_order.data['termsAndConditions']
&& !$('#DOPBSPCalendar-terms-and-conditions'+ID).is(':checked')){
methods_order.toggleMessages(DOPBSPFrontEnd.text(ID, 'order', 'termsAndConditionsInvalid'),
'block');
isValid=false;
}
if(methods_order.data['privacy']
&& !$('#DOPBSPCalendar-privacy'+ID).is(':checked')){
methods_order.toggleMessages(DOPBSPFrontEnd.text(ID, 'order', 'privacyInvalid'),
'block');
isValid=false;
}
return isValid;
},
payment: {
set:function(){
var cart=methods_cart.cart,
i,
price=0;
for (i=0; i<cart.length; i++){
price +=cart[i]['price_total'];
}
if(price > 0){
$('input[name=DOPBSPCalendar-payment'+ID+']').prop('disabled', null)
.prop('checked', null);
$('input[name=DOPBSPCalendar-payment'+ID+']:first').prop('checked', true);
}else{
$('input[name=DOPBSPCalendar-payment'+ID+']').prop('disabled', true)
.prop('checked', null);
}
methods_order.payment.form_addon.display();
methods_order.payment.card.set();
$('input[name=DOPBSPCalendar-payment'+ID+']').val()==='stripe' ? $('#'+DOT.id+'-stripe-card-wrapper'+ID).removeClass('DOPBSPCalendar-hidden'):
$('#'+DOT.id+'-stripe-card-wrapper'+ID).addClass('DOPBSPCalendar-hidden');
methods_order.payment.address_billing.set();
methods_order.payment.address_shipping.set();
},
token:function(paymentMethod){
var paymentGateways=methods_order.data['paymentGateways'];
if(!methods_order.vars.tokenInit){
methods_order.vars.tokenInit=true;
eval(paymentGateways[paymentMethod]['data']['token']['function']);
}
setTimeout(function(){
methods_order.book();
}, 100);
},
verify:function(){
var href=window.location.href,
key,
paymentGateways=methods_order.data['paymentGateways'],
paymentCancel=DOPPrototypes.$_GET('dopbsp_payment_cancel'),
paymentError=DOPPrototypes.$_GET('dopbsp_payment_error'),
paymentSuccess=DOPPrototypes.$_GET('dopbsp_payment_success'),
variables;
for (key in paymentGateways){
if(paymentCancel!==undefined
&& key===paymentCancel){
methods_info.toggleMessages(paymentGateways[key]['text']['cancel'],
'dopbsp-error');
variables=(href.indexOf('?dopbsp_payment_cancel')!==-1 ? '?':'&')+'dopbsp_payment_cancel';
}
else if(paymentError!==undefined
&& key===paymentError){
methods_info.toggleMessages(paymentGateways[key]['text']['error'],
'dopbsp-error');
variables=(href.indexOf('?dopbsp_payment_error')!==-1 ? '?':'&')+'dopbsp_payment_error';
}
else if(paymentSuccess!==undefined
&& key===paymentSuccess){
methods_info.toggleMessages(paymentGateways[key]['text']['success'],
'dopbsp-success');
variables=(href.indexOf('?dopbsp_payment_success')!==-1 ? '?':'&')+'dopbsp_payment_success';
}}
if(paymentCancel!==undefined
|| paymentError!==undefined
|| paymentSuccess!==undefined){
try{
window.history.pushState({'html':'', 'pageTitle':document.title}, '', href.split(variables)[0]);
methods_reservation.clearUrl();
}
catch(e){
}}
},
address_billing: {
display:function(){
var countries=methods_order.data.countries,
fields=methods_order.vars.addressFields,
HTML=new Array (),
i,
j;
HTML.push('<div id="DOPBSPCalendar-payment-address-billing'+ID+'" class="DOPBSPCalendar-hidden">');
HTML.push(' <h4 id="DOPBSPCalendar-payment-address-billing-title'+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', 'addressBilling')+'</h4>');
for (i=0; i<fields.length; i++){
switch (fields[i]['key']){
case 'country':
HTML.push(' <div id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <div id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-warning'+ID+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' '+DOPBSPFrontEnd.text(ID, 'form', 'required')+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' <span class="dopbsp-required">*</span></label>');
HTML.push('     <select name="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'" id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'">');
for (j=0; j<countries.length; j++){
HTML.push('     <option value="'+countries[j]['code2']+'">'+countries[j]['name']+'</option>');
}
HTML.push('     </select>');
HTML.push(' </div>');
break;
case 'zip_code':
HTML.push(' <div id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <div id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-warning'+ID+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' '+DOPBSPFrontEnd.text(ID, 'form', 'required')+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' <span class="dopbsp-required">*</span></label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'" id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'" class="dopbsp-small" value="" />');
HTML.push(' </div>');
break;
default:
HTML.push(' <div id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <div id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-warning'+ID+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' '+(fields[i]['key']==='email' ? DOPBSPFrontEnd.text(ID, 'form', 'invalidEmail'):DOPBSPFrontEnd.text(ID, 'form', 'required'))+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' <span class="dopbsp-required">*</span></label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'" id="DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID+'" value="" />');
HTML.push(' </div>');
}}
HTML.push('</div>');
return HTML.join('');
},
init:function(){
$('#DOPBSPCalendar-payment-address-billing-country'+ID).DOPSelect();
methods_order.payment.address_billing.events();
},
set:function(){
var fields=methods_order.vars.addressFields,
i,
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_billing']:paymentGateways[paymentMethod]['data']['address_billing'];
$('#DOPBSPCalendar-payment-address-billing'+ID).css('display', paymentMethod!=='none'&&data['enabled'] ? 'block':'none');
paymentMethod!=='none'&&data['enabled'] ? $('#DOPBSPCalendar-payment-address-billing'+ID).removeClass('DOPBSPCalendar-hidden'):$('#DOPBSPCalendar-payment-address-billing'+ID).addClass('DOPBSPCalendar-hidden');
if(paymentMethod==='none'
|| !data['enabled']){
return false;
}
for (i=0; i<fields.length; i++){
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-wrapper'+ID).css('display', data[fields[i]['key']]['enabled'] ? 'block':'none');
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-wrapper'+ID+' .dopbsp-required').css('display', data[fields[i]['key']]['required'] ? 'inline-block':'none');
}},
get:function(){
var paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_billing']:paymentGateways[paymentMethod]['data']['address_billing'];
if(!data['enabled']){
return '';
}else{
return {"address_first": $('#DOPBSPCalendar-payment-address-billing-address-first'+ID).val(),
"address_second": $('#DOPBSPCalendar-payment-address-billing-address-second'+ID).val(),
"city": $('#DOPBSPCalendar-payment-address-billing-city'+ID).val(),
"company": $('#DOPBSPCalendar-payment-address-billing-company'+ID).val(),
"country": data['country']['enabled'] ? $('#DOPBSPCalendar-payment-address-billing-country'+ID).val():'',
"email": $('#DOPBSPCalendar-payment-address-billing-email'+ID).val(),
"first_name": $('#DOPBSPCalendar-payment-address-billing-first-name'+ID).val(),
"last_name": $('#DOPBSPCalendar-payment-address-billing-last-name'+ID).val(),
"phone": $('#DOPBSPCalendar-payment-address-billing-phone'+ID).val(),
"state": $('#DOPBSPCalendar-payment-address-billing-state'+ID).val(),
"zip_code": $('#DOPBSPCalendar-payment-address-billing-zip-code'+ID).val()};}},
validate:function(){
var fields=methods_order.vars.addressFields,
i,
isValid=true,
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_billing']:paymentGateways[paymentMethod]['data']['address_billing'];
if(!data['enabled']){
return true;
}
for (i=0; i<fields.length; i++){
if($('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).val()===''
&& data[fields[i]['key']]['enabled']
&& data[fields[i]['key']]['required']
&& (fields[i]['key']==='email'
&& !DOPPrototypes.validEmail($('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).val())
|| fields[i]['key']!=='email')){
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-warning'+ID).css('display', 'block');
isValid=false;
}else{
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+'-warning'+ID).css('display', 'none');
}}
return isValid;
},
events:function(){
var fields=methods_order.vars.addressFields,
i,
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_billing']:paymentGateways[paymentMethod]['data']['address_billing'];
for (i=0; i<fields.length; i++){
switch (fields[i]['key']){
case 'country':
break;
case 'email':
if(data[fields[i]['key']]['enabled']){
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).bind('input propertychange blur', function(){
var paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_billing']:paymentGateways[paymentMethod]['data']['address_billing'];
$(this).parent().find('.dopbsp-warning-info').css('display', !DOPPrototypes.validEmail($(this).val())&&$(this).val()!==''||data['email']['required']&&$(this).val()===''  ? 'block':'none');
});
}
break;
case 'phone':
if(data[fields[i]['key']]['enabled']){
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).bind('input propertychange blur', function(){
DOPPrototypes.cleanInput($(this), '0123456789+-().');
});
}
break;
default:
if(data[fields[i]['key']]['enabled']
&& data[fields[i]['key']]['required']){
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-address-billing-'+fields[i]['id']+ID).bind('input propertychange blur', function(){
$(this).parent().find('.dopbsp-warning-info').css('display', $(this).val()==='' ? 'block':'none');
});
}}
}}
},
address_shipping: {
display:function(){
var countries=methods_order.data.countries,
fields=methods_order.vars.addressFields,
HTML=new Array (),
i,
j;
HTML.push('<div id="DOPBSPCalendar-payment-address-shipping'+ID+'" class="DOPBSPCalendar-hidden">');
HTML.push(' <h4 id="DOPBSPCalendar-payment-address-shipping-title'+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', 'addressShipping')+'</h4>');
HTML.push(' <div class="dopbsp-input-wrapper">');
HTML.push('     <input type="checkbox" name="DOPBSPCalendar-payment-address-shipping-copy'+ID+'" id="DOPBSPCalendar-payment-address-shipping-copy'+ID+'" checked="checked">');
HTML.push('     <label class="dopbsp-for-checkbox" for="DOPBSPCalendar-payment-address-shipping-copy'+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', 'addressShippingCopy')+'</label>');
HTML.push(' </div>');
for (i=0; i<fields.length; i++){
switch (fields[i]['key']){
case 'country':
HTML.push(' <div id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <div id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-warning'+ID+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' '+DOPBSPFrontEnd.text(ID, 'form', 'required')+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' <span class="dopbsp-required">*</span></label>');
HTML.push('     <select name="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'" id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'">');
for (j=0; j<countries.length; j++){
HTML.push('     <option value="'+countries[j]['code3']+'">'+countries[j]['name']+'</option>');
}
HTML.push('     </select>');
HTML.push(' </div>');
break;
case 'zip_code':
HTML.push(' <div id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <div id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-warning'+ID+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' '+DOPBSPFrontEnd.text(ID, 'form', 'required')+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' <span class="dopbsp-required">*</span></label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'" id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'" class="dopbsp-small" value="" />');
HTML.push(' </div>');
break;
default:
HTML.push(' <div id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <div id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-warning'+ID+'" class="dopbsp-warning-info DOPBSPCalendar-hidden">');
HTML.push('         <a href="javascript:void(0)" class="dopbsp-icon"></a>');
HTML.push('         <div class="dopbsp-message">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' '+(fields[i]['key']==='email' ? DOPBSPFrontEnd.text(ID, 'form', 'invalidEmail'):DOPBSPFrontEnd.text(ID, 'form', 'required'))+'</div>');
HTML.push('     </div>');
HTML.push('     <label for="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'">'+DOPBSPFrontEnd.text(ID, 'order', fields[i]['text'])+' <span class="dopbsp-required">*</span></label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'" id="DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID+'" value="" />');
HTML.push(' </div>');
}}
HTML.push('</div>');
return HTML.join('');
},
init:function(){
$('#DOPBSPCalendar-payment-address-shipping-country'+ID).DOPSelect();
methods_order.payment.address_shipping.events();
},
set:function(){
var fields=methods_order.vars.addressFields,
i,
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_shipping']:paymentGateways[paymentMethod]['data']['address_shipping'],
useBilling=$('#DOPBSPCalendar-payment-address-shipping-copy'+ID).is(':checked');
$('#DOPBSPCalendar-payment-address-shipping'+ID).css('display', paymentMethod!=='none'&&data['enabled'] ? 'block':'none');
paymentMethod!=='none'&&data['enabled'] ? $('#DOPBSPCalendar-payment-address-shipping'+ID).removeClass('DOPBSPCalendar-hidden'):$('#DOPBSPCalendar-payment-address-shipping'+ID).addClass('DOPBSPCalendar-hidden');
if(paymentMethod==='none'
|| !data['enabled']){
return false;
}
for (i=0; i<fields.length; i++){
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-wrapper'+ID).css('display', data[fields[i]['key']]['enabled']&&!useBilling ? 'block':'none');
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-wrapper'+ID+' .dopbsp-required').css('display', data[fields[i]['key']]['required'] ? 'inline-block':'none');
}},
get:function(){
var paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_shipping']:paymentGateways[paymentMethod]['data']['address_shipping'],
useBilling=$('#DOPBSPCalendar-payment-address-shipping-copy'+ID).is(':checked');
if(!data['enabled']){
return '';
}
else if(useBilling){
return 'billing_address';
}else{
return {"address_first": $('#DOPBSPCalendar-payment-address-shipping-address-first'+ID).val(),
"address_second": $('#DOPBSPCalendar-payment-address-shipping-address-second'+ID).val(),
"city": $('#DOPBSPCalendar-payment-address-shipping-city'+ID).val(),
"company": $('#DOPBSPCalendar-payment-address-shipping-company'+ID).val(),
"country": data['country']['enabled'] ? $('#DOPBSPCalendar-payment-address-shipping-country'+ID).val():'',
"email": $('#DOPBSPCalendar-payment-address-shipping-email'+ID).val(),
"first_name": $('#DOPBSPCalendar-payment-address-shipping-first-name'+ID).val(),
"last_name": $('#DOPBSPCalendar-payment-address-shipping-last-name'+ID).val(),
"phone": $('#DOPBSPCalendar-payment-address-shipping-phone'+ID).val(),
"state": $('#DOPBSPCalendar-payment-address-shipping-state'+ID).val(),
"zip_code": $('#DOPBSPCalendar-payment-address-shipping-zip-code'+ID).val()};}},
validate:function(){
var fields=methods_order.vars.addressFields,
i,
isValid=true,
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_shipping']:paymentGateways[paymentMethod]['data']['address_shipping'];
if(!data['enabled']
|| $('#DOPBSPCalendar-payment-address-shipping-copy'+ID).is(':checked')){
return true;
}
for (i=0; i<fields.length; i++){
if($('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).val()===''
&& data[fields[i]['key']]['enabled']
&& data[fields[i]['key']]['required']
&& (fields[i]['key']==='email'
&& !DOPPrototypes.validEmail($('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).val())
|| fields[i]['key']!=='email')){
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-warning'+ID).css('display', 'block');
isValid=false;
}else{
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+'-warning'+ID).css('display', 'none');
}}
return isValid;
},
events:function(){
var fields=methods_order.vars.addressFields,
i,
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_shipping']:paymentGateways[paymentMethod]['data']['address_shipping'];
$('#DOPBSPCalendar-payment-address-shipping-copy'+ID).unbind('click');
$('#DOPBSPCalendar-payment-address-shipping-copy'+ID).bind('click', function(){
methods_order.payment.address_shipping.set();
});
for (i=0; i<fields.length; i++){
switch (fields[i]['key']){
case 'country':
break;
case 'email':
if(data[fields[i]['key']]['enabled']){
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).bind('input propertychange blur', function(){
var paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? methods_order.data['address_shipping']:paymentGateways[paymentMethod]['data']['address_shipping'];
$(this).parent().find('.dopbsp-warning-info').css('display', !DOPPrototypes.validEmail($(this).val())&&$(this).val()!==''||data['email']['required']&&$(this).val()===''  ? 'block':'none');
});
}
break;
case 'phone':
if(data[fields[i]['key']]['enabled']){
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).bind('input propertychange blur', function(){
DOPPrototypes.cleanInput($(this), '0123456789+-().');
});
}
break;
default:
if(data[fields[i]['key']]['enabled']
&& data[fields[i]['key']]['required']){
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-address-shipping-'+fields[i]['id']+ID).bind('input propertychange blur', function(){
$(this).parent().find('.dopbsp-warning-info').css('display', $(this).val()==='' ? 'block':'none');
});
}}
}}
},
card: {
display:function(){
var HTML=new Array (),
i;
HTML.push('<div id="DOPBSPCalendar-payment-card'+ID+'" class="DOPBSPCalendar-hidden">');
HTML.push(' <h4 id="DOPBSPCalendar-payment-card-title'+ID+'"></h4>');
HTML.push(' <div id="DOPBSPCalendar-payment-card-number-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <label id="DOPBSPCalendar-payment-card-number-label'+ID+'" for="DOPBSPCalendar-payment-card-number'+ID+'"></label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-card-number'+ID+'" id="DOPBSPCalendar-payment-card-number'+ID+'" value="" />');
HTML.push(' </div>');
HTML.push(' <div id="DOPBSPCalendar-payment-card-security-code-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <label id="DOPBSPCalendar-payment-card-security-code-label'+ID+'" for="DOPBSPCalendar-payment-card-security-code'+ID+'"></label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-card-security-code'+ID+'" id="DOPBSPCalendar-payment-card-security-code'+ID+'" class="dopbsp-small" value="" />');
HTML.push(' </div>');
HTML.push(' <div id="DOPBSPCalendar-payment-card-expiration-date-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <label id="DOPBSPCalendar-payment-card-expiration-date-label'+ID+'"></label>');
HTML.push('     <select name="DOPBSPCalendar-payment-card-expiration-date-month'+ID+'" id="DOPBSPCalendar-payment-card-expiration-date-month'+ID+'" class="dopbsp-small DOPBSPCalendar-left">');
for (i=1; i<=12; i++){
HTML.push('     <option value="'+DOPPrototypes.getLeadingZero(i)+'">'+DOPPrototypes.getLeadingZero(i)+' '+DOPBSPFrontEnd.text(ID, 'months', 'shortNames')[i-1]+'</option>');
}
HTML.push('     </select>');
HTML.push('     <select name="DOPBSPCalendar-payment-card-expiration-date-year'+ID+'" id="DOPBSPCalendar-payment-card-expiration-date-year'+ID+'" class="dopbsp-small DOPBSPCalendar-left">');
for (i=methods_calendar.vars.todayYear; i<=methods_calendar.vars.todayYear+10; i++){
HTML.push('     <option value="'+i+'">'+i+'</option>');
}
HTML.push('     </select>');
HTML.push('     <br class="DOPBSPCalendar-clear" />');
HTML.push(' </div>');
HTML.push(' <div id="DOPBSPCalendar-payment-card-name-wrapper'+ID+'" class="dopbsp-input-wrapper">');
HTML.push('     <label id="DOPBSPCalendar-payment-card-name-label'+ID+'" for="DOPBSPCalendar-payment-card-name'+ID+'"></label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-card-name'+ID+'" id="DOPBSPCalendar-payment-card-name'+ID+'" value="" />');
HTML.push(' </div>');
HTML.push('</div>');
return HTML.join('');
},
init:function(){
methods_order.payment.card.events();
},
set:function(){
var paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val();
if(paymentMethod!=='none'
&& paymentMethod!=='default'
&& paymentGateways[paymentMethod]['data']['card']['enabled']){
$('#DOPBSPCalendar-payment-card'+ID).removeClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-payment-card-title'+ID).html(paymentGateways[paymentMethod]['text']['card_title']);
$('#DOPBSPCalendar-payment-card-number-label'+ID).html(paymentGateways[paymentMethod]['text']['card_number']);
paymentGateways[paymentMethod]['data']['card']['number']['attribute']!=='' ? $('#DOPBSPCalendar-payment-card-number'+ID).attr(paymentGateways[paymentMethod]['data']['card']['number']['attribute'],
paymentGateways[paymentMethod]['data']['card']['number']['value']):'';
$('#DOPBSPCalendar-payment-card-security-code-label'+ID).html(paymentGateways[paymentMethod]['text']['card_security_code']);
paymentGateways[paymentMethod]['data']['card']['security_code']['attribute']!=='' ? $('#DOPBSPCalendar-payment-card-security-code'+ID).attr(paymentGateways[paymentMethod]['data']['card']['security_code']['attribute'],
paymentGateways[paymentMethod]['data']['card']['security_code']['value']):'';
$('#DOPBSPCalendar-payment-card-expiration-date-label'+ID).html(paymentGateways[paymentMethod]['text']['card_expiration_date']);
paymentGateways[paymentMethod]['data']['card']['expiration_date_month']['attribute']!=='' ? $('#DOPBSPCalendar-payment-card-expiration-date-month'+ID).attr(paymentGateways[paymentMethod]['data']['card']['expiration_date_month']['attribute'],
paymentGateways[paymentMethod]['data']['card']['expiration_date_month']['value']):'';
paymentGateways[paymentMethod]['data']['card']['expiration_date_year']['attribute']!=='' ? $('#DOPBSPCalendar-payment-card-expiration-date-year'+ID).attr(paymentGateways[paymentMethod]['data']['card']['expiration_date_year']['attribute'],
paymentGateways[paymentMethod]['data']['card']['expiration_date_year']['value']):'';
paymentGateways[paymentMethod]['data']['card']['name']['enabled'] ? $('#DOPBSPCalendar-payment-card-name-wrapper'+ID).removeClass('DOPBSPCalendar-hidden'):$('#DOPBSPCalendar-payment-card-name-wrapper'+ID).addClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-payment-card-name-label'+ID).html(paymentGateways[paymentMethod]['text']['card_name']);
paymentGateways[paymentMethod]['data']['card']['name']['attribute']!=='' ? $('#DOPBSPCalendar-payment-card-name'+ID).attr(paymentGateways[paymentMethod]['data']['card']['name']['attribute'],
paymentGateways[paymentMethod]['data']['card']['name']['value']):'';
}else{
$('#DOPBSPCalendar-payment-card'+ID).addClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-payment-card-title'+ID).html('');
$('#DOPBSPCalendar-payment-card-number-label'+ID).html('');
$('#DOPBSPCalendar-payment-card-security-code-label'+ID).html('');
$('#DOPBSPCalendar-payment-card-expiration-date-label'+ID).html('');
$('#DOPBSPCalendar-payment-card-name-label'+ID).html('');
}},
get:function(){
return {"expiration_date_month": $('#DOPBSPCalendar-payment-card-expiration-date-month'+ID).val(),
"expiration_date_year": $('#DOPBSPCalendar-payment-card-expiration-date-year'+ID).val(),
"name": $('#DOPBSPCalendar-payment-card-name'+ID).val(),
"number": $('#DOPBSPCalendar-payment-card-number'+ID).val(),
"security_code": $('#DOPBSPCalendar-payment-card-security-code'+ID).val()};},
events:function(){
$('#DOPBSPCalendar-payment-card-number'+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-card-number'+ID).bind('input propertychange blur', function(){
DOPPrototypes.cleanInput($(this), '0123456789');
});
$('#DOPBSPCalendar-payment-card-security-code'+ID).unbind('input propertychange blur');
$('#DOPBSPCalendar-payment-card-security-code'+ID).bind('input propertychange blur', function(){
DOPPrototypes.cleanInput($(this), '0123456789');
});
}},
form_addon: {
display:function(){
var HTML=new Array(),
i,
options=new Array(),
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? new Array():paymentGateways[paymentMethod]['data']['form_addon'];
$('#DOPBSPCalendar-payment-form-addon'+ID).html('');
if(data.length===0){
return false;
}
for (var id in data){
switch (data[id]['type']){
case 'select':
HTML.push(' <div id="DOPBSPCalendar-payment-form-addon-wrapper'+ID+'-'+id+'" class="dopbsp-input-wrapper '+data[id]['classes']+'">');
HTML.push('     <label for="DOPBSPCalendar-payment-form-addon'+ID+'-'+id+'">'+data[id]['label']+'</label>');
HTML.push('     <select type="text" name="DOPBSPCalendar-payment-form-addon'+ID+'-'+id+'" id="DOPBSPCalendar-payment-form-addon'+ID+'-'+id+'" onchange="'+data[id]['function']+'">');
options=data[id]['options'];
for (i=0; i<options.length; i++){
HTML.push('     <option value="'+options[i]['value']+'">'+options[i]['label']+'</label>');
}
HTML.push('     </select>');
HTML.push(' </div>');
break;
case 'text':
HTML.push(' <div id="DOPBSPCalendar-payment-form-addon-wrapper'+ID+'-'+id+'" class="dopbsp-input-wrapper '+data[id]['classes']+'">');
HTML.push('     <label for="DOPBSPCalendar-payment-form-addon'+ID+'-'+id+'">'+data[id]['label']+'</label>');
HTML.push('     <input type="text" name="DOPBSPCalendar-payment-form-addon'+ID+'-'+id+'" id="DOPBSPCalendar-payment-form-addon'+ID+'-'+id+'" value="" />');
HTML.push(' </div>');
break;
case 'title':
HTML.push(' <h4>'+data[id]['label']+'</h4>');
break;
}}
$('#DOPBSPCalendar-payment-form-addon'+ID).html(HTML.join(''));
methods_order.payment.form_addon.init();
},
init:function(){
var paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? new Array():paymentGateways[paymentMethod]['data']['form_addon'];
if(data.length===0){
return false;
}
for (var id in data){
$('#DOPBSPCalendar-payment-form-addon'+ID+'-'+id).val();
switch (data[id]['type']){
case 'select':
$('#DOPBSPCalendar-payment-form-addon'+ID+'-'+id).DOPSelect();
break;
}}
},
get:function(){
var paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val(),
data=paymentMethod==='none'||paymentMethod==='default' ? new Array():paymentGateways[paymentMethod]['data']['form_addon'],
returnData={};
if(data.length===0){
return false;
}
for (var id in data){
returnData[id]=$('#DOPBSPCalendar-payment-form-addon'+ID+'-'+id).val();
}
return returnData;
}}
},
book:function(){
var startDate,
selection,
y,
m,
d,
h,
min,
isValid=true,
paymentGateways=methods_order.data['paymentGateways'],
paymentMethod=$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val()===undefined ? 'none':$('input[name=DOPBSPCalendar-payment'+ID+']:checked').val();
!methods_form.validate() ? (isValid=false):'';
!methods_order.payment.address_billing.validate() ? (isValid=false):'';
!methods_order.payment.address_shipping.validate() ? (isValid=false):'';
!methods_order.validate() ? (isValid=false):'';
if(!isValid){
return false;
}
methods_order.toggleMessages('', 'none');
$('#DOPBSPCalendar-submit'+ID).css('display', 'none');
$('#DOPBSPCalendar-submit-loader'+ID).css('display', 'block');
$('#DOPBSPCalendar-submit-loader'+ID).removeClass('DOPBSPCalendar-hidden');
if(paymentMethod!=='none'
&& paymentMethod!=='default'
&& paymentGateways[paymentMethod]['data']['token']['enabled']){
if($('#DOPBSPCalendar-payment-token'+ID).val()===''){
methods_order.payment.token(paymentMethod);
return false;
}else{
methods_order.vars.tokenInit=false;
}
if($('#DOPBSPCalendar-payment-token-message'+ID).val()!==''){
methods_order.toggleMessages($('#DOPBSPCalendar-payment-token-message'+ID).val(),
'block');
$('#DOPBSPCalendar-payment-token'+ID).val('');
$('#DOPBSPCalendar-payment-token-message'+ID).val('');
$('#DOPBSPCalendar-submit'+ID).css('display', 'block');
$('#DOPBSPCalendar-submit-loader'+ID).css('display', 'none');
$('#DOPBSPCalendar-submit-loader'+ID).addClass('DOPBSPCalendar-hidden');
return false;
}}
if(methods_calendar.data['bookingStop']!==0&&methods_hours.data['enabled']){
startDate=new Date().getTime()+methods_calendar.data['bookingStop']*60*1000;
y=parseInt(methods_days.vars.selectionStart.split('_')[1],10);
m=parseInt(methods_days.vars.selectionStart.split('-')[1],10);
d=parseInt(methods_days.vars.selectionStart.split('-')[2],10);
h=parseInt(methods_hours.vars.selectionStart.split('_')[1],10);
min=parseInt(methods_hours.vars.selectionStart.split(':')[1],10);
selection=new Date(y, m-1, d, h, min);
if(selection.getTime() < startDate){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'order', 'unavailable'),
'dopbsp-error');
methods_reservation.clear();
methods_schedule.reset();
return false;
}}
$.post(ajaxURL, {action: 'dopbsp_reservations_book',
dopbsp_frontend_ajax_request: true,
calendar_id: ID,
language: methods_calendar.data['language'],
currency: methods_currency.data['sign'],
currency_code: methods_currency.data['code'],
cart_data: methods_cart.cart,
form: methods_form.get(),
address_billing_data: methods_order.payment.address_billing.get(),
address_shipping_data: methods_order.payment.address_shipping.get(),
payment_method: paymentMethod,
form_addon_data: methods_order.payment.form_addon.get(),
card_data: methods_order.payment.card.get(),
token: $('#DOPBSPCalendar-payment-token'+ID).val(),
page_url: window.location.href}, function(data){
data=$.trim(data);
$('#DOPBSPCalendar-payment-token'+ID).val('');
$('#DOPBSPCalendar-payment-token-message'+ID).val('');
if(data==='security'){
methods_info.toggleMessages('Error 120!',
'dopbsp-error');
methods_reservation.clear();
methods_schedule.reset();
return false;
}
if(data==='unavailable'){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'order', 'unavailable'),
'dopbsp-error');
methods_reservation.clear();
methods_schedule.reset();
return false;
}
if(data==='unavailable-coupon'){
methods_info.toggleMessages(DOPBSPFrontEnd.text(ID, 'order', 'unavailableCoupon'),
'dopbsp-error');
methods_coupons.vars.use=false;
methods_reservation.set();
return false;
}
if(paymentMethod!=='none'
&& paymentMethod!=='default'){
var response=data.split(';;;;;');
if(response[0]==='success'){
$('#DOPBSPCalendar-submit'+ID).css('display', 'block');
$('#DOPBSPCalendar-submit-loader'+ID).css('display', 'none');
$('#DOPBSPCalendar-submit-loader'+ID).addClass('DOPBSPCalendar-hidden');
methods_info.toggleMessages(paymentGateways[paymentMethod]['text']['success'],
'dopbsp-success');
methods_reservation.clear();
methods_schedule.reset();
}
else if(response[0]==='success_redirect'){
window.location.href=response[1];
}else if(response[0]==='callback'){
eval(response[1]+"("+ID+","+ response[2]+",'"+ response[3]+"','"+ response[4]+"','"+response[5]+"');");
}else{
$('#DOPBSPCalendar-submit'+ID).css('display', 'block');
$('#DOPBSPCalendar-submit-loader'+ID).css('display', 'none');
$('#DOPBSPCalendar-submit-loader'+ID).addClass('DOPBSPCalendar-hidden');
methods_info.toggleMessages(data);
return false;
}}else{
if(methods_order.data['redirect']!==null
&& methods_order.data['redirect']!==''){
window.location.href=methods_order.data['redirect'];
}
$('#DOPBSPCalendar-submit'+ID).css('display', 'block');
$('#DOPBSPCalendar-submit-loader'+ID).css('display', 'none');
$('#DOPBSPCalendar-submit-loader'+ID).addClass('DOPBSPCalendar-hidden');
methods_info.toggleMessages((methods_order.data['paymentArrivalWithApproval'] ? DOPBSPFrontEnd.text(ID, 'order', 'paymentArrivalWithApprovalSuccess'):DOPBSPFrontEnd.text(ID, 'order', 'paymentArrivalSuccess')),
'dopbsp-success');
methods_reservation.clear();
methods_reservation.clearUrl();
if(methods_order.data['paymentArrivalWithApproval']){
methods_schedule.reset();
}else{
methods_calendar.display();
methods_components.init();
}}
});
},
toggleMessages:function(message,
display,
type){
display=display===undefined ? 'block':display;
type=type===undefined ? 'dopbsp-error':type;
$('#DOPBSPCalendar-order'+ID+' .dopbsp-message').html(message)
.removeClass('dopbsp-success')
.removeClass('dopbsp-error')
.addClass(type)
.css('display', display);
if(display==='block'){
$('#DOPBSPCalendar-order'+ID+' .dopbsp-message').removeClass('DOPBSPCalendar-hidden');
}else{
$('#DOPBSPCalendar-order'+ID+' .dopbsp-message').addClass('DOPBSPCalendar-hidden');
}}
},
methods_woocommerce={
data: {},
text: {},
init:function(){
$('.cart button[type=submit]').css('display', 'none');
methods_woocommerce.events();
},
events:function(){
if(!methods_woocommerce.data['addToCart']){
$('.cart').unbind('submit');
$('.cart').bind('submit', function(e){
e.preventDefault();
methods_woocommerce.add();
});
}
$('input[name=DOPBSPCalendar-pay-full-amount'+ID+']').unbind('click');
$('input[name=DOPBSPCalendar-pay-full-amount'+ID+']').bind('click', function(){
methods_reservation.set();
});
},
set:function(){
if(!methods_woocommerce.data['addToCart']){
$('.cart button[type=submit]').css('display', 'block');
}else{
$('#DOPBSPCalendar-add-to-cart'+ID).css('display','block');
$('#DOPBSPCalendar-add-to-cart'+ID).removeClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-pay-full-amount-wrapper'+ID).removeClass('DOPBSPCalendar-hidden');
}},
add:function(){
$('#DOPBSPCalendar-add-to-cart'+ID).addClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-pay-full-amount-wrapper'+ID).addClass('DOPBSPCalendar-hidden');
$('#DOPBSPCalendar-add-to-cart-loader'+ID).removeClass('DOPBSPCalendar-hidden');
$.post(ajaxURL, {action: 'dopbsp_woocommerce_add_to_cart',
dopbsp_frontend_ajax_request: true,
calendar_id: ID,
language: methods_calendar.data['language'],
currency: methods_currency.data['sign'],
currency_code: methods_currency.data['code'],
cart_data: methods_cart.cart,
product_id: methods_woocommerce.data['productID']}, function(data){
data=$.trim(data);
var result=data.split(';;;;;')[0],
message=data.split(';;;;;')[1];
$('#DOPBSPCalendar-add-to-cart-loader'+ID).addClass('DOPBSPCalendar-hidden');
if(result==='success'){
if(methods_woocommerce.data['redirect']){
window.location.href=methods_woocommerce.data['cartURL'];
}else{
methods_info.toggleMessages(message,
'dopbsp-success');
$(document.body).trigger('wc_fragment_refresh');
methods_reservation.clear();
}}
else if(result==='unavailable'){
methods_info.toggleMessages(message,
'dopbsp-error');
methods_reservation.clear();
methods_schedule.reset();
}else{
methods_info.toggleMessages(message,
'dopbsp-error');
}});
}};
this.methods_info_toggleMessages=function(message,
type){
methods_info.toggleMessages(message,
type);
};
this.methods_reservation_clear=function(){
methods_reservation.clear();
};
this.methods_schedule_reset=function(){
methods_schedule.reset();
};
return methods.init.apply(this);
};})(jQuery);
(function($){
'use strict';
$.fn.DOPBSPSearch=function(options){
var Data={"availability": {"data": {"enabled": false,
"max": 10,
"min": 1},
"text": {"title": "No. book items"}},
"currency": {"data": {"code": "USD",
"position": "before",
"sign": "$"},
"text":{},
"days": {"data": {"first": 1,
"multipleSelect": true},
"text": {"names": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
"shortNames": ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]}},
"hours": {"data": {"ampm": false,
"definitions": [{"value": "00:00"},{"value": "01:00"},{"value": "02:00"},{"value": "03:00"},{"value": "04:00"},{"value": "05:00"},{"value": "06:00"},{"value": "07:00"},{"value": "08:00"},{"value": "09:00"},{"value": "10:00"},{"value": "11:00"},{"value": "12:00"},{"value": "13:00"},{"value": "14:00"},{"value": "15:00"},{"value": "16:00"},{"value": "17:00"},{"value": "18:00"},{"value": "19:00"},{"value": "20:00"},{"value": "21:00"},{"value": "22:00"},{"value": "23:00"}],
"enabled": false,
"multipleSelect": true},
"text": {}},
"ID": 0,
"months": {"data": {},
"text": {"names": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
"nextMonth": "Next month",
"previousMonth": "Previous month",
"shortNames": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]}},
"price": {"data": {"enabled": true,
"max": 1000,
"min": 0},
"text": {}},
"search": {"data": {"dateType": 1,
"enabled": false,
"language": 'en',
"template": 'default'},
"text": {"checkIn": "Check in",
"checkOut": "Check out",
"hourEnd": "Finish at",
"hourStart": "Start at",
"title": "Search"}},
"sort": {"data": {},
"text": {"name": "Name",
"price": "Price",
"title": "Sort by"}},
"URL": "",
"view": {"data": {"default": "list",
"gridEnabled": false,
"listEnabled": true,
"mapEnabled": false,
"results": 10},
"text": {"grid": "Grid view",
"list": "List view",
"map": "Map view"}}}},
ajaxRequestInProgress,
ajaxURL='',
Container=this,
ID=0,
methods={
init:function(){
return this.each(function(){
if(options){
$.extend(Data, options);
}
methods.parse();
$(window).bind('resize.DOPBSPSearch', methods.rp);
});
},
parse:function(){
ajaxURL=prototypes.acaoBuster(Data['URL']);
methods_availability.data=Data['availability']['data'];
methods_availability.text=Data['availability']['text'];
methods_currency.data=Data['currency']['data'];
methods_currency.text=Data['currency']['text'];
methods_days.data=Data['days']['data'];
methods_days.text=Data['days']['text'];
methods_hours.data=Data['hours']['data'];
methods_hours.text=Data['hours']['text'];
ID=Data['ID'];
methods_months.data=Data['months']['data'];
methods_months.text=Data['months']['text'];
methods_price.data=Data['price']['data'];
methods_price.text=Data['price']['text'];
methods_search.data=Data['search']['data'];
methods_search.text=Data['search']['text'];
methods_sort.data=Data['sort']['data'];
methods_sort.text=Data['sort']['text'];
methods_view.data=Data['view']['data'];
methods_view.text=Data['view']['text'];
methods_components.init();
},
rp:function(){
var $container=$(Container),
width=$container.width();
$container.removeClass('desktop')
.removeClass('laptop')
.removeClass('tablet')
.removeClass('mobile');
if(width >=1170){
$container.addClass('desktop');
}
else if(width >=940
&& width <=1169){
$container.addClass('laptop');
}
else if(width >=700
&& width <=939){
$container.addClass('tablet');
}
else if(width <=699){
$container.addClass('mobile');
}}
},
methods_components={
init:function(){
methods_search.vars.todayDate=new Date();
methods_search.vars.todayDay=methods_search.vars.todayDate.getDate();
methods_search.vars.todayMonth=methods_search.vars.todayDate.getMonth()+1;
methods_search.vars.todayYear=methods_search.vars.todayDate.getFullYear();
if(methods_view.data['mapEnabled']){
methods_map.load();
}
methods_sidebar.init();
methods.rp();
$('#DOPBSPSearch-loader'+ID).remove();
$(Container).removeClass('DOPBSPSearch-hidden');
methods_search.get();
}},
methods_currency={
data:{},
text:{},
vars: {currencies: {}},
init: function(){
},
parse: function(){
var currencies={};
if(typeof methods_currency.data['currencies']!=='undefined'){
var currenciesJSON=methods_currency.data['currencies'].replace(new RegExp('"', 'g'), ""),
currenciesJSON=currenciesJSON.replace(new RegExp(';;;', 'g'), '"');
currencies=JSON.parse(currenciesJSON);
}
methods_currency.vars.currencies=currencies;
},
exchange: function(amount, currency_code, type){
var currencies=methods_currency.vars.currencies;
if(methods_currency.data['code']!==currency_code){
for (var index in currencies){
if(currencies[index]['code']===currency_code){
if(type==='exchange'){
amount=parseInt(amount*currencies[index]['rate']);
}else{
amount=parseInt(amount*currencies[index]['inverse']);
}}
}}
return amount;
}},
methods_search={
data: {},
text: {},
vars: {todayDate: new Date(),
todayDay: new Date(),
todayMonth: new Date(),
todayYear: new Date()},
init: function(){
methods_days.init();
if(methods_hours.data['enabled']){
methods_hours.init();
}
if(methods_availability.data['enabled']){
methods_availability.init();
}
if(methods_price.data['enabled']){
methods_price.init();
}
methods_sort.init();
methods_view.init();
},
get:function(page){
var $checkIn=$('#DOPBSPSearch-check-in'+ID).val(),
$checkOut=$('#DOPBSPSearch-check-out'+ID).val(),
$startHour=$('#DOPBSPSearch-start-hour'+ID).val(),
$endHour=$('#DOPBSPSearch-end-hour'+ID).val(),
checkIn=$checkIn===undefined ? '':$checkIn,
checkOut=$checkOut===undefined||$checkOut==='' ? checkIn:$checkOut,
startHour=$startHour===undefined ? '':$startHour,
endHour=$endHour===undefined||$endHour==='' ? startHour:$endHour;
page=page===undefined ? 1:page;
if(ajaxRequestInProgress!==undefined){
ajaxRequestInProgress.abort();
}
$('#DOPBSPSearch-results-loader'+ID).removeClass('DOPBSPSearch-hidden');
$('#DOPBSPSearch-results'+ID).html('');
ajaxRequestInProgress=$.post(ajaxURL, {action: 'dopbsp_search_results_get',
dopbsp_frontend_ajax_request: true,
id: ID,
language: methods_search.data['language'],
check_in: checkIn,
check_out: checkOut,
start_hour: startHour,
end_hour: endHour,
no_items: $('#DOPBSPSearch-no-items'+ID).val()===undefined ? '':$('#DOPBSPSearch-no-items'+ID).val(),
price_min: $('#DOPBSPSearch-price-min-value'+ID).val()===undefined ? '':$('#DOPBSPSearch-price-min-value'+ID).val(),
price_max: $('#DOPBSPSearch-price-max-value'+ID).val()===undefined ? '':$('#DOPBSPSearch-price-max-value'+ID).val(),
sort_by: $('#DOPBSPSearch-sort-by'+ID).val()===undefined ? 'price':$('#DOPBSPSearch-sort-by'+ID).val(),
sort_direction: $('#DOPBSPSearch-sort-direction-value'+ID).val()===undefined ? 'ASC':$('#DOPBSPSearch-sort-direction-value'+ID).val(),
view: $('#DOPBSPSearch-view'+ID).val()===undefined ? 'list':$('#DOPBSPSearch-view'+ID).val(),
results: methods_view.data['results'],
page: page}, function(data){
data=$.trim(data);
switch ($('#DOPBSPSearch-view'+ID).val()){
case 'map':
methods_map.display(data);
break;
default:
$('#DOPBSPSearch-results-loader'+ID).addClass('DOPBSPSearch-hidden');
$('#DOPBSPSearch-results'+ID).html(data);
methods_search.events();
}});
},
events:function(){
$('#DOPBSPSearch-results'+ID+' .dopbsp-pagination li').unbind('click');
$('#DOPBSPSearch-results'+ID+' .dopbsp-pagination li').bind('click', function(){
if(!$(this).hasClass('selected')){
methods_search.get($(this).attr('class').split('dopbsp-page')[1]);
}});
}},
methods_sidebar={
data:{},
text:{},
init:function(){
methods_search.init();
}},
methods_months={
data:{},
text:{}},
methods_days={
data:{},
text:{},
init:function(){
methods_days.events.init();
methods_search.get();
},
initDatepicker:function(id,
altId,
minDate){
minDate=minDate===undefined ? 0:minDate;
$(id).datepicker('destroy');
$(id).datepicker({altField: altId,
altFormat: 'yy-mm-dd',
beforeShow: function(input, inst){
$('#ui-datepicker-div').removeClass('DOPBSPSearch-datepicker')
.addClass('DOPBSPSearch-datepicker');
},
dateFormat: methods_search.data['dateType']===1 ? 'MM dd, yy':'dd MM yy',
dayNames: methods_days.text['names'],
dayNamesMin: methods_days.text['shortNames'],
firstDay: methods_days.data['first'],
minDate: minDate,
monthNames: methods_months.text['names'],
monthNamesMin: methods_months.text['shortNames'],
nextText: methods_months.text['nextMonth'],
prevText: methods_months.text['previousMonth']});
$('.ui-datepicker').removeClass('notranslate').addClass('notranslate');
},
validate:function(day){
var dayPieces=day.split('-');
if(day===''
|| dayPieces.length!==3
|| dayPieces[0].length!==4
|| dayPieces[1].length!==2
|| dayPieces[2].length!==2){
return false;
}else{
return true;
}},
events: {
init:function(){
methods_days.initDatepicker('#DOPBSPSearch-check-in-view'+ID,
'#DOPBSPSearch-check-in'+ID);
methods_days.events.checkIn();
if(methods_days.data['multipleSelect']){
methods_days.initDatepicker('#DOPBSPSearch-check-out-view'+ID,
'#DOPBSPSearch-check-out'+ID);
methods_days.events.checkOut();
}},
checkIn:function(){
$('#DOPBSPSearch-check-in-view'+ID).unbind('click');
$('#DOPBSPSearch-check-in-view'+ID).bind('click', function(){
$(this).val('');
$('#DOPBSPSearch-check-in'+ID).val('');
});
$('#DOPBSPSearch-check-in-view'+ID).unbind('blur');
$('#DOPBSPSearch-check-in-view'+ID).bind('blur', function(){
var $this=$(this);
if($this.val()===''){
$this.val(methods_search.text['checkIn']);
$('#DOPBSPSearch-check-in'+ID).val('');
}});
$('#DOPBSPSearch-check-in-view'+ID).unbind('change');
$('#DOPBSPSearch-check-in-view'+ID).bind('change', function(){
var ciDay=$('#DOPBSPSearch-check-in'+ID).val(),
minDateValue;
if(methods_days.validate(ciDay)){
if(methods_days.data['multipleSelect']){
minDateValue=prototypes.getNoDays(prototypes.getToday(), ciDay)-1;
methods_days.initDatepicker('#DOPBSPSearch-check-out-view'+ID,
'#DOPBSPSearch-check-out'+ID,
minDateValue);
if(($('#DOPBSPSearch-check-in'+ID).val() > $('#DOPBSPSearch-check-out'+ID).val()
&& $('#DOPBSPSearch-check-out'+ID).val()!=='')
|| $('#DOPBSPSearch-check-out'+ID).val()===''){
setTimeout(function(){
$('#DOPBSPSearch-check-out-view'+ID).val('')
.select();
$('#DOPBSPSearch-check-out'+ID).val('');
}, 100);
}else{
methods_search.get();
}}else{
methods_search.get();
}}else{
$('#DOPBSPSearch-check-in-view'+ID).val(methods_search.text['checkIn']);
$('#DOPBSPSearch-check-in'+ID).val('');
}});
},
checkOut:function(){
$('#DOPBSPSearch-check-out-view'+ID).unbind('click');
$('#DOPBSPSearch-check-out-view'+ID).bind('click', function(){
$(this).val('');
$('#DOPBSPSearch-check-out'+ID).val('');
});
$('#DOPBSPSearch-check-out-view'+ID).unbind('blur');
$('#DOPBSPSearch-check-out-view'+ID).bind('blur', function(){
var $this=$(this);
if($this.val()===''){
$this.val(methods_search.text['checkOut']);
$('#DOPBSPSearch-check-out'+ID).val('');
}});
$('#DOPBSPSearch-check-out-view'+ID).unbind('change');
$('#DOPBSPSearch-check-out-view'+ID).bind('change', function(){
var coDay=$('#DOPBSPSearch-check-out'+ID).val();
if(methods_days.validate(coDay)){
if($('#DOPBSPSearch-check-in'+ID).val()!==''){
methods_search.get();
}}else{
$('#DOPBSPSearch-check-out-view'+ID).val(methods_search.text['checkOut']);
$('#DOPBSPSearch-check-out'+ID).val('');
}});
}}
},
methods_hours={
data:{},
text:{},
init:function(){
$('#DOPBSPSearch-start-hour'+ID).DOPSelect();
if(methods_hours.data['multipleSelect']){
$('#DOPBSPSearch-end-hour'+ID).DOPSelect();
}
methods_hours.events();
},
set:function(){
var HTML=new Array(),
hours=methods_hours.data['definitions'],
i,
startHour=$('#DOPBSPSearch-start-hour'+ID).val(),
endHour=$('#DOPBSPSearch-end-hour'+ID).val();
HTML.push('<select id="DOPBSPSearch-end-hour'+ID+'" class="dopbsp-small">');
for (i=0; i<hours.length; i++){
if(startHour <=hours[i]['value']){
HTML.push('     <option value="'+hours[i]['value']+'"'+(endHour===hours[i]['value'] ? ' selected="selected"':'')+'>'+(methods_hours.data['ampm']===true ? prototypes.getAMPM(hours[i]['value']):hours[i]['value'])+'</option>');
}}
HTML.push('</select>');
$('#DOPSelect-DOPBSPSearch-end-hour'+ID).replaceWith(HTML.join());
$('#DOPBSPSearch-end-hour'+ID).DOPSelect();
methods_hours.events();
},
events:function(){
$('#DOPBSPSearch-start-hour'+ID).unbind('change');
$('#DOPBSPSearch-start-hour'+ID).bind('change',function(){
if(methods_hours.data['multipleSelect']){
methods_hours.set();
}
methods_search.get();
});
if(methods_hours.data['multipleSelect']){
$('#DOPBSPSearch-end-hour'+ID).unbind('change');
$('#DOPBSPSearch-end-hour'+ID).bind('change',function(){
if($('#DOPBSPSearch-start-hour'+ID).val()!==''){
methods_search.get();
}});
}}
},
methods_availability={
data:{},
text:{},
init:function(){
$('#DOPBSPSearch-no-items'+ID).DOPSelect();
methods_availability.events();
},
events:function(){
$('#DOPBSPSearch-no-items'+ID).unbind('change');
$('#DOPBSPSearch-no-items'+ID).bind('change',function(){
methods_search.get();
});
}},
methods_price={
data:{},
text:{},
init:function(){
$('#DOPBSPSearch-price'+ID).slider({max: methods_price.data['max'],
min: methods_price.data['min'],
values: [methods_price.data['min'], methods_price.data['max']],
range: true,
step: 0.1,
create:function(event, ui){
$('#DOPBSPSearch-price-min'+ID).html(methods_price.set(methods_price.data['min']));
$('#DOPBSPSearch-price-max'+ID).html(methods_price.set(methods_price.data['max']));
$('#DOPBSPSearch-price-min-value'+ID).val(methods_price.data['min']);
$('#DOPBSPSearch-price-max-value'+ID).val(methods_price.data['max']);
},
slide:function(event, ui){
$('#DOPBSPSearch-price-min'+ID).html(methods_price.set(ui.values[0]));
$('#DOPBSPSearch-price-max'+ID).html(methods_price.set(ui.values[1]));
$('#DOPBSPSearch-price-min-value'+ID).val(ui.values[0]);
$('#DOPBSPSearch-price-max-value'+ID).val(ui.values[1]);
},
stop:function(event, ui){
methods_search.get();
}});
},
set:function(price){
var priceDisplayed='';
price=prototypes.getWithDecimals(Math.abs(price),
2);
switch (methods_currency.data['position']){
case 'after':
priceDisplayed=price+methods_currency.data['sign'];
break;
case 'after_with_space':
priceDisplayed=price+' '+methods_currency.data['sign'];
break;
case 'before_with_space':
priceDisplayed=methods_currency.data['sign']+' '+price;
break;
default:
priceDisplayed=methods_currency.data['sign']+price;
}
return priceDisplayed;
}},
methods_sort={
data:{},
text:{},
init:function(){
$('#DOPBSPSearch-sort-by'+ID).DOPSelect();
methods_sort.events();
},
events: function(){
$('#DOPBSPSearch-sort-by'+ID).unbind('change');
$('#DOPBSPSearch-sort-by'+ID).bind('change',function(){
methods_search.get();
});
$('#DOPBSPSearch-sort-direction'+ID).unbind('click');
$('#DOPBSPSearch-sort-direction'+ID).bind('click',function(){
if($(this).hasClass('dopbsp-asc')){
$(this).removeClass('dopbsp-asc')
.addClass('dopbsp-desc');
$('#DOPBSPSearch-sort-direction-value'+ID).val('DESC');
}else{
$(this).removeClass('dopbsp-desc')
.addClass('dopbsp-asc');
$('#DOPBSPSearch-sort-direction-value'+ID).val('ASC');
}
methods_search.get();
});
}},
methods_view={
data:{},
text:{},
init:function(){
methods_view.events();
},
events:function(){
if(methods_view.data['listEnabled']){
$('#DOPBSPSearch-view-list'+ID).unbind('click');
$('#DOPBSPSearch-view-list'+ID).bind('click',function(){
if(!$(this).hasClass('dopbsp-selected')){
methods_view.data['gridEnabled'] ? $('#DOPBSPSearch-view-grid'+ID).removeClass('dopbsp-selected'):'';
methods_view.data['mapEnabled'] ? $('#DOPBSPSearch-view-map'+ID).removeClass('dopbsp-selected'):'';
$(this).addClass('dopbsp-selected');
$('#DOPBSPSearch-view'+ID).val('list');
methods_search.get();
}});
}
if(methods_view.data['gridEnabled']){
$('#DOPBSPSearch-view-grid'+ID).unbind('click');
$('#DOPBSPSearch-view-grid'+ID).bind('click',function(){
if(!$(this).hasClass('dopbsp-selected')){
methods_view.data['listEnabled'] ? $('#DOPBSPSearch-view-list'+ID).removeClass('dopbsp-selected'):'';
methods_view.data['mapEnabled'] ? $('#DOPBSPSearch-view-map'+ID).removeClass('dopbsp-selected'):'';
$(this).addClass('dopbsp-selected');
$('#DOPBSPSearch-view'+ID).val('grid');
methods_search.get();
}});
}
if(methods_view.data['mapEnabled']){
$('#DOPBSPSearch-view-map'+ID).unbind('click');
$('#DOPBSPSearch-view-map'+ID).bind('click',function(){
if(!$(this).hasClass('dopbsp-selected')){
methods_view.data['listEnabled'] ? $('#DOPBSPSearch-view-list'+ID).removeClass('dopbsp-selected'):'';
methods_view.data['gridEnabled'] ? $('#DOPBSPSearch-view-grid'+ID).removeClass('dopbsp-selected'):'';
$(this).addClass('dopbsp-selected');
$('#DOPBSPSearch-view'+ID).val('map');
methods_search.get();
}});
}}
},
methods_map={
vars:{locations: new Array(),
map: null},
load:function(){
if(typeof google!=='object'
|| typeof google.maps!=='object'){
var script=document.createElement('script');
script.type='text/JavaScript';
script.src='https://maps.googleapis.com/maps/api/js?key='+dopbspGoogleAPIkey+'&v=3.exp&libraries=places&callback=DOPBSPSearchLoadInfobox';
$('body').append(script);
}else{
DOPBSPSearchLoadInfobox();
}},
display:function(data){
var HTML=new Array();
if(typeof google==='object'
&& typeof google.maps==='object'
&& typeof InfoBox==='function'){
methods_map.vars.locations=JSON.parse(data.split(';;;;;')[0]);
HTML.push('<div id="DOPBSPSearch-results-map'+ID+'" class="dopbsp-map"></div>');
HTML.push(data.split(';;;;;')[1]);
$('#DOPBSPSearch-results-loader'+ID).addClass('DOPBSPSearch-hidden');
$('#DOPBSPSearch-results'+ID).html(HTML.join(''));
methods_search.events();
setTimeout(function(){
google.maps.event.addDomListener(window, 'load', methods_map.init());
}, 100);
}else{
setTimeout(function(){
methods_map.display();
}, 500);
}},
init:function(){
var //$coordinates=$('#DOPBSP-location-coordinates').val(),
options;
options={center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 2};
methods_map.vars.map=new google.maps.Map(document.getElementById('DOPBSPSearch-results-map'+ID), options);
methods_map.set();
},
set:function(){
var bounds=new google.maps.LatLngBounds(),
coordinates,
icon=new google.maps.MarkerImage(methods_search.data['template']+'/images/marker.png',
new google.maps.Size(36, 52),
new google.maps.Point(1, 0),
new google.maps.Point(18, 52)),
i,
locations=methods_map.vars.locations,
markers=new Array(),
position=new Array(),
shadow=new google.maps.MarkerImage(methods_search.data['template']+'/images/marker.png',
new google.maps.Size(36, 52),
new google.maps.Point(1, 0),
new google.maps.Point(18, 52)),
shape={coord: [0, 0, 36, 0, 36, 52, 0, 52],
type: 'poly'};
for (i=0; i<locations.length; i++){
coordinates=JSON.parse(locations[i]['coordinates']);
position=new google.maps.LatLng(coordinates[0], coordinates[1]);
bounds.extend(position);
markers[i]=new google.maps.Marker({animation: null,
clickable: true,
draggable: false,
icon: icon,
map: methods_map.vars.map,
position: position,
shadow: shadow,
shape: shape});
markers[i].info=new InfoBox({alignBottom: true,
boxClass: 'dopbsp-infobox',
closeBoxMargin: '0px',
closeBoxURL: methods_search.data['template']+'/images/close.png',
disableAutoPan: false,
content: methods_map.get(locations[i]['calendars'], i),
isHidden: false,
infoBoxClearance: new google.maps.Size(20, 20),
pixelOffset: new google.maps.Size(-190, -60),
position: position});
markers[i].index=i;
google.maps.event.addListener(markers[i], 'click', function(){
var index=this.index;
for (i=0; i<locations.length; i++){
markers[i].info.close();
}
this.info.open(methods_map.vars.map, this);
setTimeout(function(){
methods_map.events(index);
}, 100);
});
}
methods_map.vars.map.fitBounds(bounds);
},
get:function(calendars,
index){
var HTML=new Array(),
i;
HTML.push('<ul class="dopbsp-locations" id="DOPBSPSearch-locations-'+ID+'-'+index+'">');
for (i=0; i<calendars.length; i++){
HTML.push('<li>');
HTML.push('     <div class="dopbsp-image">');
HTML.push('         <a href="'+calendars[i]['link']+'" target="_self" style="background-image: url('+calendars[i]['image']+');">');
HTML.push('             <img src="'+calendars[i]['image']+'" alt="'+calendars[i]['name']+'" title="'+calendars[i]['name']+'" />');
HTML.push('         </a>');
HTML.push('     </div>');
HTML.push('     <div class="dopbsp-content">');
HTML.push('         <h3>');
HTML.push('             <a href="'+calendars[i]['link']+'" target="_self">'+calendars[i]['name']+'</a>');
HTML.push('         </h3>');
HTML.push('         <div class="dopbsp-address">'+(calendars[i]['address_alt']==='' ? calendars[i]['address']:calendars[i]['address_alt'])+'</div>');
HTML.push('         <div class="dopbsp-price-wrapper">'+calendars[i]['price']+'</div>');
HTML.push('     </div>');
HTML.push('</li>');
}
HTML.push('</ul>');
if(calendars.length > 1){
HTML.push('<div class="dopbsp-navigation" id="DOPBSPSearch-locations-navigation-'+ID+'-'+index+'">');
HTML.push('     <a href="javascript:void(0)" class="dopbsp-prev dopbsp-disabled"></a>');
HTML.push('     <a href="javascript:void(0)" class="dopbsp-next"></a>');
HTML.push('</div>');
}
return HTML.join('');
},
events:function(i){
$('#DOPBSPSearch-locations-navigation-'+ID+'-'+i+' .dopbsp-prev').unbind('click');
$('#DOPBSPSearch-locations-navigation-'+ID+'-'+i+' .dopbsp-prev').bind('click', function(){
var $this=$(this),
id=$this.parent().attr('id').split('DOPBSPSearch-locations-navigation-')[1],
$li=$('#DOPBSPSearch-locations-'+id+' li:first-child');
if(!$this.hasClass('dopbsp-disabled')){
$('#DOPBSPSearch-locations-navigation-'+ID+'-'+i+' .dopbsp-next').removeClass('dopbsp-disabled');
$li.css('margin-top', parseInt($li.css('margin-top'))+($li.height()+parseInt($li.css('margin-bottom'))));
setTimeout(function(){
if(parseInt($li.css('margin-top')) >=0){
$this.addClass('dopbsp-disabled');
}}, 150);
}});
$('#DOPBSPSearch-locations-navigation-'+ID+'-'+i+' .dopbsp-next').unbind('click');
$('#DOPBSPSearch-locations-navigation-'+ID+'-'+i+' .dopbsp-next').bind('click', function(){
var $this=$(this),
id=$this.parent().attr('id').split('DOPBSPSearch-locations-navigation-')[1],
$li=$('#DOPBSPSearch-locations-'+id+' li:first-child'),
locations=methods_map.vars.locations;
if(!$this.hasClass('dopbsp-disabled')){
$('#DOPBSPSearch-locations-navigation-'+ID+'-'+i+' .dopbsp-prev').removeClass('dopbsp-disabled');
$li.css('margin-top', parseInt($li.css('margin-top'))-($li.height()+parseInt($li.css('margin-bottom'))));
setTimeout(function(){
if(-1*parseInt($li.css('margin-top')) >=($li.height()+parseInt($li.css('margin-bottom')))*(locations.length-1)){
$this.addClass('dopbsp-disabled');
}}, 150);
}});
}},
prototypes={
doHiddenBuster:function(item){
var parent=item.parent(),
items=new Array();
if(item.prop('tagName')!==undefined
&& item.prop('tagName').toLowerCase()!=='body'){
items=prototypes.doHiddenBuster(parent);
}
if(item.css('display')==='none'){
item.css('display', 'block');
items.push(item);
}
return items;
},
undoHiddenBuster:function(items){
var i;
for (i=0; i<items.length; i++){
items[i].css('display', 'none');
}},
openLink:function(url,
target){
switch (target.toLowerCase()){
case '_blank':
window.open(url);
break;
case '_parent':
parent.location.href=url;
break;
case '_top':
top.location.href=url;
break;
default:
window.location=url;
}},
randomizeArray:function(theArray){
theArray.sort(function(){
return 0.5-Math.random();
});
return theArray;
},
scrollToY:function(position,
speed){
speed=speed!==undefined ? speed: 300;
$('html').stop(true, true)
.animate({'scrollTop': position},
speed);
$('body').stop(true, true)
.animate({'scrollTop': position},
speed);
},
touchNavigation:function(parent,
child){
var prevX,
prevY,
currX,
currY,
touch,
childX,
childY;
parent.bind('touchstart', function(e){
touch=e.originalEvent.touches[0];
prevX=touch.clientX;
prevY=touch.clientY;
});
parent.bind('touchmove', function(e){
touch=e.originalEvent.touches[0];
currX=touch.clientX;
currY=touch.clientY;
childX=currX>prevX ? parseInt(child.css('margin-left'))+(currX-prevX):parseInt(child.css('margin-left'))-(prevX-currX);
childY=currY>prevY ? parseInt(child.css('margin-top'))+(currY-prevY):parseInt(child.css('margin-top'))-(prevY-currY);
if(childX < (-1)*(child.width()-parent.width())){
childX=(-1)*(child.width()-parent.width());
}
else if(childX > 0){
childX=0;
}else{
e.preventDefault();
}
if(childY < (-1)*(child.height()-parent.height())){
childY=(-1)*(child.height()-parent.height());
}
else if(childY > 0){
childY=0;
}else{
e.preventDefault();
}
prevX=currX;
prevY=currY;
if(parent.width() < child.width()){
child.css('margin-left', childX);
}
if(parent.height() < child.height()){
child.css('margin-top', childY);
}});
parent.bind('touchstart', function(e){
if(!prototypes.isChromeMobileBrowser()){
e.preventDefault();
}});
},
isAndroid:function(){
var isAndroid=false,
agent=navigator.userAgent.toLowerCase();
if(agent.indexOf('android')!==-1){
isAndroid=true;
}
return isAndroid;
},
isChromeMobileBrowser:function(){
var isChromeMobile=false,
agent=navigator.userAgent.toLowerCase();
if((agent.indexOf('chrome')!==-1 
|| agent.indexOf('crios')!==-1)
&& prototypes.isTouchDevice()){
isChromeMobile=true;
}
return isChromeMobile;
},
isIE8Browser:function(){
var isIE8=false,
agent=navigator.userAgent.toLowerCase();
if(agent.indexOf('msie 8')!==-1){
isIE8=true;
}
return isIE8;
},
isIEBrowser:function(){
var isIE=false,
agent=navigator.userAgent.toLowerCase();
if(agent.indexOf('msie')!==-1){
isIE=true;
}
return isIE;
},
isTouchDevice:function(){
var os=navigator.platform;
if(os.toLowerCase().indexOf('win')!==-1){
return window.navigator.msMaxTouchPoints;
}else{
return 'ontouchstart' in document;
}},
deleteCookie:function(name,
path,
domain){
if(prototypes.getCookie(name)){
document.cookie=name+'='+((path) ? ';path='+path:'')+((domain) ? ';domain='+domain:'')+';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}},
getCookie:function(name){
var namePiece=name+"=",
cookie=document.cookie.split(";"),
i;
for (i=0; i<cookie.length; i++){
var cookiePiece=cookie[i];
while (cookiePiece.charAt(0)===' '){
cookiePiece=cookiePiece.substring(1, cookiePiece.length);
}
if(cookiePiece.indexOf(namePiece)===0){
return unescape(cookiePiece.substring(namePiece.length, cookiePiece.length));
}}
return null;
},
setCookie:function(name,
value,
expire){
var expirationDate=new Date();
expirationDate.setDate(expirationDate.getDate()+expire);
document.cookie=name+'='+escape(value)+((expire===null) ? '': ';expires='+expirationDate.toUTCString())+';javahere=yes;path=/';
},
getAMPM:function(time){
var hour=parseInt(time.split(':')[0], 10),
minutes=time.split(':')[1],
result='';
if(hour===0){
result='12';
}
else if(hour > 12){
result=prototypes.getLeadingZero(hour-12);
}else{
result=prototypes.getLeadingZero(hour);
}
result +=':'+minutes+' '+(hour < 12 ? 'AM':'PM');
return result;
},
getDatesDifference:function(date1,
date2,
type,
valueType,
noDecimals){
var y1=date1.split('-')[0],
m1=date1.split('-')[1],
d1=date1.split('-')[2],
y2=date2.split('-')[0],
m2=date2.split('-')[1],
d2=date2.split('-')[2],
time1=(new Date(y1, m1-1, d1)).getTime(),
time2=(new Date(y2, m2-1, d2)).getTime(),
diff=Math.abs(time1-time2);
if(type===undefined){
type='seconds';
}
if(valueType===undefined){
valueType='float';
}
if(noDecimals===undefined){
noDecimals=-1;
}
switch (type){
case 'days':
diff=diff/(1000*60*60*24);
break;
case 'hours':
diff=diff/(1000*60*60);
break;
case 'minutes':
diff=diff/(1000*60);
break;
default:
diff=diff/(1000);
}
if(valueType==='float'){
return noDecimals===-1 ? diff:prototypes.getWithDecimals(diff, noDecimals);
}else{
return Math.ceil(diff);
}},
getHoursDifference:function(hour1,
hour2,
type,
valueType,
noDecimals){
var hours1=parseInt(hour1.split(':')[0], 10),
minutes1=parseInt(hour1.split(':')[1], 10),
seconds1=hour1.split(':')[2]!==undefined ? parseInt(hour1.split(':')[2], 10):0,
hours2=parseInt(hour2.split(':')[0], 10),
minutes2=parseInt(hour2.split(':')[1], 10),
seconds2=hour2.split(':')[2]!==undefined ? parseInt(hour2.split(':')[2], 10):0,
time1,
time2,
diff;
if(type===undefined){
type='seconds';
}
if(valueType===undefined){
valueType='float';
}
if(noDecimals===undefined){
noDecimals=-1;
}
switch (type){
case 'hours':
time1=hours1+minutes1/60+seconds1/60/60;
time2=hours2+minutes2/60+seconds2/60/60;
break;
case 'minutes':
time1=hours1*60+minutes1+seconds1/60;
time2=hours2*60+minutes2+seconds2/60;
break;
default:
time1=hours1*60*60+minutes1*60+seconds1;
time2=hours2*60*60+minutes2*60+seconds2;
}
diff=Math.abs(time1-time2);
if(valueType==='float'){
return noDecimals===-1 ? diff:prototypes.getWithDecimals(diff, noDecimals);
}else{
return Math.ceil(diff);
}},
getNextDay:function(date){
var nextDay=new Date(),
parts=date.split('-');
nextDay.setFullYear(parts[0], parts[1], parts[2]);
nextDay.setTime(nextDay.getTime()+86400000);
return nextDay.getFullYear()+'-'+prototypes.getLeadingZero(nextDay.getMonth())+'-'+prototypes.getLeadingZero(nextDay.getDate());
},
getNoDays:function(date1,
date2){
var y1=date1.split('-')[0],
m1=date1.split('-')[1],
d1=date1.split('-')[2],
y2=date2.split('-')[0],
m2=date2.split('-')[1],
d2=date2.split('-')[2],
time1=(new Date(y1, m1-1, d1)).getTime(),
time2=(new Date(y2, m2-1, d2)).getTime(),
diff=Math.abs(time1-time2);
return Math.round(diff/(1000*60*60*24))+1;
},
getPrevDay:function(date){
var previousDay=new Date(),
parts=date.split('-');
previousDay.setFullYear(parts[0],
parseInt(parts[1])-1,
parts[2]);
previousDay.setTime(previousDay.getTime()-86400000);
return previousDay.getFullYear()+'-'+prototypes.getLeadingZero(previousDay.getMonth()+1)+'-'+prototypes.getLeadingZero(previousDay.getDate());
},
getPrevTime:function(time,
diff,
diffBy){
var timePieces=time.split(':'),
hours=parseInt(timePieces[0], 10),
minutes=timePieces[1]===undefined ? 0:parseInt(timePieces[1], 10),
seconds=timePieces[2]===undefined ? 0:parseInt(timePieces[2], 10);
switch (diffBy){
case 'seconds':
seconds=seconds-diff;
if(seconds < 0){
seconds=60+seconds;
minutes=minutes-1;
if(minutes < 0){
minutes=60+minutes;
hours=hours-1 < 0 ? 0:hours-1;
}}
break;
case 'minutes':
minutes=minutes-diff;
if(minutes < 0){
minutes=60+minutes;
hours=hours-1 < 0 ? 0:hours-1;
}
break;
default:
hours=hours-diff < 0 ? 0:hours-diff;
}
return prototypes.getLeadingZero(hours)+(timePieces[1]===undefined ? '':':'+prototypes.getLeadingZero(minutes)+(timePieces[2]===undefined ? '':':'+prototypes.getLeadingZero(seconds)));
},
getToday:function(){
var today=new Date();
return today.getFullYear()+'-'+prototypes.getLeadingZero(today.getMonth()+1)+'-'+prototypes.getLeadingZero(today.getDate());
},
getWeekDay:function(date){
var months=['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
year=date.split('-')[0],
month=date.split('-')[1],
day=date.split('-')[2],
newDate=new Date(eval('"'+day+' '+months[parseInt(month, 10)-1]+', '+year+'"'));
return newDate.getDay();
},
$_GET:function(name){
var url=window.location.href.split('?')[1],
variables=url!==undefined ? url.split('&'):[],
i;
for (i=0; i<variables.length; i++){
if(variables[i].indexOf(name)!==-1){
return variables[i].split('=')[1];
break;
}}
return undefined;
},
acaoBuster:function(url){
var browserURL=window.location.href,
pathPiece1='', pathPiece2='';
if(prototypes.getDomain(browserURL)===prototypes.getDomain(url)){
if(url.indexOf('https')!==-1 
|| url.indexOf('http')!==-1){
if(browserURL.indexOf('http://www.')!==-1){
pathPiece1='http://www.';
}
else if(browserURL.indexOf('http://')!==-1){
pathPiece1='http://';
}
else if(browserURL.indexOf('https://www.')!==-1){
pathPiece1='https://www.';
}
else if(browserURL.indexOf('https://')!==-1){
pathPiece1='https://';
}
if(url.indexOf('http://www.')!==-1){
pathPiece2=url.split('http://www.')[1];
}
else if(url.indexOf('http://')!==-1){
pathPiece2=url.split('http://')[1];
}
else if(url.indexOf('https://www.')!==-1){
pathPiece2=url.split('https://www.')[1];
}
else if(url.indexOf('https://')!==-1){
pathPiece2=url.split('https://')[1];
}
return pathPiece1+pathPiece2;
}else{
return url;
}}else{
return url;
}},
getDomain:function(url){
var domain=url;
domain=domain.replace(new RegExp(/^\s+/),"");
domain=domain.replace(new RegExp(/\s+$/),"");
domain=domain.replace(new RegExp(/\\/g),"/");
domain=domain.replace(new RegExp(/^http\:\/\/|^https\:\/\/|^ftp\:\/\//i),"");
domain=domain.replace(new RegExp(/^www\./i),"");
domain=domain.replace(new RegExp(/\/(.*)/),"");
return domain;
},
hasSubdomain:function(url){
var subdomain;
url=url.replace(new RegExp(/^\s+/),"");
url=url.replace(new RegExp(/\s+$/),"");
url=url.replace(new RegExp(/\\/g),"/");
url=url.replace(new RegExp(/^http\:\/\/|^https\:\/\/|^ftp\:\/\//i),"");
url=url.replace(new RegExp(/^www\./i),"");
url=url.replace(new RegExp(/\/(.*)/),"");
if(url.match(new RegExp(/\.[a-z]{2,3}\.[a-z]{2}$/i))){
url=url.replace(new RegExp(/\.[a-z]{2,3}\.[a-z]{2}$/i),"");
}
else if(url.match(new RegExp(/\.[a-z]{2,4}$/i))){
url=url.replace(new RegExp(/\.[a-z]{2,4}$/i),"");
}
subdomain=(url.match(new RegExp(/\./g))) ? true:false;
return(subdomain);
},
rp:function(parent,
child,
pw,
ph,
cw,
ch,
pos,
type){
var newW=0,
newH=0;
if(cw <=pw
&& ch <=ph){
newW=cw;
newH=ch;
}else{
switch (type){
case 'fill':
newH=ph;
newW=(cw*ph)/ch;
if(newW < pw){
newW=pw;
newH=(ch*pw)/cw;
}
break;
default:
newH=ph;
newW=(cw*ph)/ch;
if(newW > pw){
newW=pw;
newH=(ch*pw)/cw;
}
break;
}}
child.width(newW);
child.height(newH);
switch(pos.toLowerCase()){
case 'bottom':
prototypes.rpBottom(parent,
child,
ph);
break;
case 'bottom-center':
prototypes.rpBottomCenter(parent,
child,
pw,
ph);
break;
case 'bottom-left':
prototypes.rpBottomLeft(parent,
child,
pw,
ph);
break;
case 'bottom-right':
prototypes.rpBottomRight(parent,
child,
pw,
ph);
break;
case 'center':
prototypes.rpCenter(parent,
child,
pw,
ph);
break;
case 'left':
prototypes.rpLeft(parent,
child,
pw);
break;
case 'horizontal-center':
prototypes.rpCenterHorizontally(parent,
child,
pw);
break;
case 'middle-left':
prototypes.rpMiddleLeft(parent,
child,
pw,
ph);
break;
case 'middle-right':
prototypes.rpMiddleRight(parent,
child,
pw,
ph);
break;
case 'right':
prototypes.rpRight(parent,
child,
pw);
break;
case 'top':
prototypes.rpTop(parent,
child,
ph);
break;
case 'top-center':
prototypes.rpTopCenter(parent,
child,
pw,
ph);
break;
case 'top-left':
prototypes.rpTopLeft(parent,
child,
pw,
ph);
break;
case 'top-right':
prototypes.rpTopRight(parent,
child,
pw,
ph);
break;
case 'vertical-center':
prototypes.rpCenterVertically(parent,
child,
ph);
break;
}},
rpBottom:function(parent,
child,
ph){
if(ph!==undefined){
parent.height(ph);
}
child.css('margin-top', parent.height()-child.height());
},
rpBottomCenter:function(parent,
child,
pw,
ph){
prototypes.rpBottom(parent,
child,
ph);
prototypes.rpCenterHorizontally(parent,
child,
pw);
},
rpBottomLeft:function(parent,
child,
pw,
ph){
prototypes.rpBottom(parent,
child,
ph);
prototypes.rpLeft(parent,
child,
pw);
},
rpBottomRight:function(parent,
child,
pw,
ph){
prototypes.rpBottom(parent,
child,
ph);
prototypes.rpRight(parent,
child,
pw);
},
rpCenter:function(parent,
child,
pw,
ph){
prototypes.rpCenterHorizontally(parent,
child,
pw);
prototypes.rpCenterVertically(parent,
child,
ph);
},
rpCenterHorizontally:function(parent,
child,
pw){
if(pw!==undefined){
parent.width(pw);
}
child.css('margin-left', (parent.width()-child.width())/2);
},
rpCenterVertically:function(parent,
child,
ph){
if(ph!==undefined){
parent.height(ph);
}
child.css('margin-top', (parent.height()-child.height())/2);
},
rpLeft:function(parent,
child,
pw){
if(pw!==undefined){
parent.width(pw);
}
child.css('margin-left', 0);
},
rpMiddleLeft:function(parent,
child,
pw,
ph){
prototypes.rpCenterVertically(parent,
child,
ph);
prototypes.rpLeft(parent,
child,
pw);
},
rpMiddleRight:function(parent,
child,
pw,
ph){
prototypes.rpCenterVertically(parent,
child,
ph);
prototypes.rpRight(parent,
child,
pw);
},
rpRight:function(parent,
child,
pw){
if(pw!==undefined){
parent.width(pw);
}
child.css('margin-left', parent.width()-child.width());
},
rpTop:function(parent,
child,
ph){
if(ph!==undefined){
parent.height(ph);
}
child.css('margin-top', 0);
},
rpTopCenter:function(parent,
child,
pw,
ph){
prototypes.rpTop(parent,
child,
ph);
prototypes.rpCenterHorizontally(parent,
child,
pw);
},
rpTopLeft:function(parent,
child,
pw,
ph){
prototypes.rpTop(parent,
child,
ph);
prototypes.rpLeft(parent,
child,
pw);
},
rpTopRight:function(parent,
child,
pw,
ph){
prototypes.rpTop(parent,
child,
ph);
prototypes.rpRight(parent,
child,
pw);
},
cleanInput:function(input,
allowedCharacters,
firstNotAllowed,
min){
var characters=input.val().split(''),
returnStr='',
i,
startIndex=0;
if(characters.length > 1
&& characters[0]===firstNotAllowed){
startIndex=1;
}
for (i=startIndex; i<characters.length; i++){
if(allowedCharacters.indexOf(characters[i])!==-1){
returnStr +=characters[i];
}}
if(min > returnStr){
returnStr=min;
}
input.val(returnStr);
},
getLeadingZero:function(no){
if(no < 10){
return '0'+no;
}else{
return no;
}},
getRandomString:function(stringLength,
allowedCharacters){
var randomString='',
charactersPosition,
i;
allowedCharacters=allowedCharacters!==undefined ? allowedCharacters:'0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
for (i=0; i<stringLength; i++){
charactersPosition=Math.floor(Math.random()*allowedCharacters.length);
randomString +=allowedCharacters.substring(charactersPosition, charactersPosition+1);
}
return randomString;
},
getShortString:function(str,
size){
var newStr=new Array(),
pieces=str.split(''), i;
if(pieces.length <=size){
newStr.push(str);
}else{
for (i=0; i<size-3; i++){
newStr.push(pieces[i]);
}
newStr.push('...');
}
return newStr.join('');
},
getWithDecimals:function(number,
no){
no=no===undefined ? 2:no;
return parseInt(number)===number ? String(number):parseFloat(number).toFixed(no);
},
validateCharacters:function(str,
allowedCharacters){
var characters=str.split(''), i;
for (i=0; i<characters.length; i++){
if(allowedCharacters.indexOf(characters[i])===-1){
return false;
}}
return true;
},
validEmail:function(email){
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,16}(?:\.[a-z]{2})?)$/i;
if(filter.test(email)){
return true;
}
return false;
},
stripSlashes:function(str){
return (str + '').replace(/\\(.?)/g, function (s, n1){
switch (n1){
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}});
},
getHEXfromRGB:function(rgb){
var hexDigits=new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
rgb=rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
return (isNaN(rgb[1]) ? '00':hexDigits[(rgb[1]-rgb[1]%16)/16]+hexDigits[rgb[1]%16])+
(isNaN(rgb[2]) ? '00':hexDigits[(rgb[2]-rgb[2]%16)/16]+hexDigits[rgb[2]%16])+
(isNaN(rgb[3]) ? '00':hexDigits[(rgb[3]-rgb[3]%16)/16]+hexDigits[rgb[3]%16]);
},
getIdealTextColor:function(bgColor){
var rgb=/rgb\((\d+).*?(\d+).*?(\d+)\)/.exec(bgColor);
if(rgb!==null){
return parseInt(rgb[1], 10)+parseInt(rgb[2], 10)+parseInt(rgb[3], 10) < 3*256/2 ? 'white':'black';
}else{
return parseInt(bgColor.substring(0, 2), 16)+parseInt(bgColor.substring(2, 4), 16)+parseInt(bgColor.substring(4, 6), 16) < 3*256/2 ? 'white':'black';
}}
};
return methods.init.apply(this);
};})(jQuery);
function DOPBSPSearchLoadInfobox(){
var script=document.createElement('script');
script.type='text/JavaScript';
script.src='https://cdn.jsdelivr.net/gh/googlemaps/v3-utility-library@master/archive/infobox/src/infobox_packed.js';
jQuery('body').append(script);
return true;
};
var DOPBSPFrontEnd=new function(){
'use strict';
var $=jQuery.noConflict();
this.calendar=new Array();
this.__construct=function(){
};
this.setPrice=function(ID,
price){
var dataCurrency=DOPBSPFrontEnd.calendar[ID]['currency']['data'],
priceDisplayed='';
price=DOPPrototypes.getWithDecimals(Math.abs(price),
2);
switch (dataCurrency['position']){
case 'after':
priceDisplayed=price+dataCurrency['sign'];
break;
case 'after_with_space':
priceDisplayed=price+' '+dataCurrency['sign'];
break;
case 'before_with_space':
priceDisplayed=dataCurrency['sign']+' '+price;
break;
default:
priceDisplayed=dataCurrency['sign']+price;
}
return priceDisplayed;
};
this.text=function(ID,
section,
key,
plugin){
plugin=plugin===undefined ? 'calendar':plugin;
switch (plugin){
case 'calendar':
return DOPBSPFrontEnd.calendar[ID][section]['text'][key];
break;
}};
return this.__construct();
};
var DOPBSPFrontEndDeposit=new function(){
'use strict';
var $=jQuery.noConflict();
this.__construct=function(){
};
this.get=function(ID){
var dataDeposit=DOPBSPFrontEnd.calendar[ID]['deposit']['data'],
dataWooCommerce=DOPBSPFrontEnd.calendar[ID]['woocommerce']['data'],
deposit={'price': 0,
'price_type': 'percent'};
if(window.methods_reservation!==undefined){
if(window.methods_reservation['pay_full']===true){
deposit['price']=0;
deposit['price_type']=dataDeposit['type'];
return deposit;
}}
if(dataDeposit['deposit']!==0){
deposit['price']=dataDeposit['deposit'];
deposit['price_type']=dataDeposit['type'];
}
return deposit;
};
this.getPrice=function(ID,
deposit,
totalPrice){
var dataWooCommerce=DOPBSPFrontEnd.calendar[ID]['woocommerce']['data'],
price=0;
price +=parseFloat(deposit['price'])
*(deposit['price_type']==='fixed' ? 1:totalPrice)/
(deposit['price_type']==='fixed' ? 1:100);
return price;
};
this.set=function(ID,
deposit,
totalPrice){
var HTML=new Array(),
price=0;
if(deposit['price']!==0){
price=DOPBSPFrontEndDeposit.getPrice(ID,
deposit,
totalPrice);
HTML.push(' <tr class="dopbsp-deposit">');
HTML.push('     <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID, 'deposit', 'title')+'</td>');
HTML.push('     <td class="dopbsp-value">'+DOPBSPFrontEnd.setPrice(ID, price)+'</td>');
HTML.push(' </tr>');
}
return HTML.join('');
};
return this.__construct();
};
var DOPBSPFrontEndDiscounts=new function(){
'use strict';
this.__construct=function(){
};
this.get=function(ID,
ciDay,
coDay,
startHour,
endHour){
var dataDays=DOPBSPFrontEnd.calendar[ID]['days']['data'],
dataDiscounts=DOPBSPFrontEnd.calendar[ID]['discounts']['data'],
dataHours=DOPBSPFrontEnd.calendar[ID]['hours']['data'],
discount={
'id':0,
'rule_id':0,
'operation':'-',
'price':0,
'price_type':'percent',
'price_by':'once',
'start_date':'',
'end_date':'',
'start_hour':'',
'end_hour':'',
'translation': ''
},
discounts=dataDiscounts['discount'],
i,
j,
rule,
ruleFound,
timeLapse;
coDay=coDay===''
? ciDay
: coDay;
endHour=endHour===''
? startHour
: endHour;
timeLapse=dataHours['enabled']
? DOPPrototypes.getHoursDifference(startHour,
endHour,
'hours')
+(dataHours['addLastHourToTotalPrice']
? 0
: 0)
: DOPPrototypes.getNoDays(ciDay,
coDay)
-(dataDays['morningCheckOut']
? 1
: 0);
if(dataHours['enabled']
&& dataHours['interval_autobreak']){
if(timeLapse%2===0){
timeLapse=parseInt(timeLapse/2);
}else{
timeLapse=parseInt(timeLapse/2)+1;
}}
for (i=0; i<discounts.length; i++){
if((discounts[i]['start_time_lapse']===''
|| parseFloat(discounts[i]['start_time_lapse'])<=timeLapse)
&& (discounts[i]['end_time_lapse']===''
|| parseFloat(discounts[i]['end_time_lapse'])>=timeLapse)){
discount['id']=discounts[i]['id'];
discount['operation']=discounts[i]['operation'];
discount['price']=discounts[i]['price'];
discount['price_by']=discounts[i]['price_by'];
discount['price_type']=discounts[i]['price_type'];
discount['translation']=discounts[i]['translation'];
for (j=0; j<discounts[i]['rules'].length; j++){
rule=discounts[i]['rules'][j];
ruleFound=false;
if((rule['start_date']===''
|| rule['start_date']<=ciDay)
&& (rule['end_date']===''
|| rule['end_date']>=coDay)){
if(dataHours['enabled']){
if((rule['start_hour']===''
|| rule['start_hour']<=startHour)
&& (rule['end_hour']===''
|| rule['end_hour']>=endHour)){
ruleFound=true;
}}else{
ruleFound=true;
}}
if(ruleFound){
discount['rule_id']=rule['id'];
discount['operation']=rule['operation'];
discount['price']=rule['price'];
discount['price_by']=rule['price_by'];
discount['price_type']=rule['price_type'];
discount['start_date']=rule['start_date'];
discount['end_date']=rule['end_date'];
break;
}}
if(discounts[i]['rules'].length===0
&& discounts[i]['price']!==0
|| ruleFound){
break;
}}
}
return discount;
};
this.getPrice=function(ID,
discount,
reservationPrice,
extrasPrice,
ciDay,
coDay,
startHour,
endHour,
noItems){
var dataDays=DOPBSPFrontEnd.calendar[ID]['days']['data'],
dataDiscounts=DOPBSPFrontEnd.calendar[ID]['discounts']['data'],
dataHours=DOPBSPFrontEnd.calendar[ID]['hours']['data'],
timeLapse;
coDay=coDay===''
? ciDay
: coDay;
endHour=endHour===''
? startHour
: endHour;
timeLapse=dataHours['enabled']
? DOPPrototypes.getHoursDifference(startHour,
endHour,
'hours')+(dataHours['addLastHourToTotalPrice']
? 1
: 0)
:
DOPPrototypes.getNoDays(ciDay,
coDay)-(dataDays['morningCheckOut']
? 1
: 0);
return (discount['operation']==='-'
? -1
: 1)
*(discount['price_by']==='once'
? 1
: timeLapse)
*discount['price']
*(discount['price_type']==='fixed'
? noItems
: (reservationPrice+(dataDiscounts['extras']
? extrasPrice
: 0)))/
(discount['price_type']==='fixed'
? 1
: 100);
};
this.set=function(ID,
discount,
reservationPrice,
extrasPrice,
ciDay,
coDay,
startHour,
endHour,
noItems){
var dataHours=DOPBSPFrontEnd.calendar[ID]['hours']['data'],
HTML=[],
price;
coDay=coDay===''
? ciDay
: coDay;
endHour=endHour===''
? startHour
: endHour;
if(discount['price']>0){
price=DOPBSPFrontEndDiscounts.getPrice(ID,
discount,
reservationPrice,
extrasPrice,
ciDay,
coDay,
startHour,
endHour,
noItems);
if(price!==0){
HTML.push(' <tr class="dopbsp-separator">');
HTML.push('     <td class="dopbsp-label"><div class="dopbsp-line"></div></td>');
HTML.push('     <td class="dopbsp-value"><div class="dopbsp-line"></div></td>');
HTML.push(' </tr>');
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+DOPBSPFrontEnd.text(ID,
'discounts',
'title')+'</td>');
HTML.push('     <td class="dopbsp-value dopbsp-info">');
HTML.push('         '+discount['translation']+'<br />');
if(discount['price_type']!=='fixed'
|| discount['price_by']!=='once'){
HTML.push('         <span class="dopbsp-info-rule">&#9632;&nbsp;');
if(discount['price_type']==='fixed'){
HTML.push(discount['operation']+DOPBSPFrontEnd.setPrice(ID,
discount['price']));
}else{
HTML.push(discount['operation']+discount['price']+'%');
}
if(discount['price_by']!=='once'){
HTML.push('/'+(dataHours['enabled']
? DOPBSPFrontEnd.text(ID,
'discounts',
'byHour')
: DOPBSPFrontEnd.text(ID,
'discounts',
'byDay')));
}
HTML.push('         </span><br />');
}
HTML.push('         <span class="dopbsp-info-price">'+discount['operation']+'&nbsp;'+DOPBSPFrontEnd.setPrice(ID,
price)+'</span>');
HTML.push('     </td>');
HTML.push(' </tr>');
}}
return HTML.join('');
};
return this.__construct();
};
var DOPBSPFrontEndFees=new function(){
'use strict';
var $=jQuery.noConflict();
this.__construct=function(){
};
this.get=function(ID,
reservationPrice,
discountPrice,
extrasPrice,
ciDay,
coDay,
startHour,
endHour,
noItems){
var dataDays=DOPBSPFrontEnd.calendar[ID]['days']['data'],
dataFees=DOPBSPFrontEnd.calendar[ID]['fees']['data'],
dataHours=DOPBSPFrontEnd.calendar[ID]['hours']['data'],
dataWooCommerce=DOPBSPFrontEnd.calendar[ID]['woocommerce']['data'],
fees=dataFees['fees'],
i,
timeLapse;
coDay=coDay==='' ? ciDay:coDay;
endHour=endHour==='' ? startHour:endHour;
timeLapse=dataHours['enabled'] ? DOPPrototypes.getHoursDifference(startHour, endHour, 'hours')+(dataHours['addLastHourToTotalPrice'] ? 1:0):
DOPPrototypes.getNoDays(ciDay, coDay)-(dataDays['morningCheckOut'] ? 1:0);
for (i=0; i<fees.length; i++){
fees[i]['price_total']=this.getPrice(ID,
[fees[i]],
reservationPrice,
discountPrice,
extrasPrice,
ciDay,
coDay,
startHour,
endHour,
noItems);
}
return fees;
};
this.getPrice=function(ID,
fees,
reservationPrice,
discountPrice,
extrasPrice,
ciDay,
coDay,
startHour,
endHour,
noItems){
var dataDays=DOPBSPFrontEnd.calendar[ID]['days']['data'],
dataHours=DOPBSPFrontEnd.calendar[ID]['hours']['data'],
dataWooCommerce=DOPBSPFrontEnd.calendar[ID]['woocommerce']['data'],
fee,
i,
price=0,
timeLapse;
coDay=coDay==='' ? ciDay:coDay;
endHour=endHour==='' ? startHour:endHour;
timeLapse=dataHours['enabled'] ? DOPPrototypes.getHoursDifference(startHour, endHour, 'hours')+(dataHours['addLastHourToTotalPrice'] ? 1:0):
DOPPrototypes.getNoDays(ciDay, coDay)-(dataDays['morningCheckOut'] ? 1:0);
for (i=0; i<fees.length; i++){
fee=fees[i];
if(fee['included']==='false'){
price +=(fee['operation']==='-' ? -1:1)
*(fee['price_by']==='once' ? 1:timeLapse)
*parseFloat(fee['price'])
*(fee['price_type']==='fixed' ? noItems:(reservationPrice+discountPrice+(fee['extras']==='true' ? extrasPrice:0)))/
(fee['price_type']==='fixed' ? 1:100);
}}
return price;
};
this.set=function(ID,
type,
fees,
ciDay,
coDay,
startHour,
endHour){
var dataCart=DOPBSPFrontEnd.calendar[ID]['cart']['data'],
dataHours=DOPBSPFrontEnd.calendar[ID]['hours']['data'],
HTML=new Array(),
i;
coDay=coDay==='' ? ciDay:coDay;
endHour=endHour==='' ? startHour:endHour;
if(fees.length > 0){
HTML.push(' <tr class="dopbsp-separator">');
HTML.push('     <td class="dopbsp-label"><div class="dopbsp-line"></div></td>');
HTML.push('     <td class="dopbsp-value"><div class="dopbsp-line"></div></td>');
HTML.push(' </tr>');
}
for (i=0; i<fees.length; i++){
if((type==='reservation'
&& (fees[i]['cart']==='false'
|| !dataCart['enabled']))
|| (type==='cart'
&& fees[i]['cart']==='true')){
HTML.push(' <tr>');
HTML.push('     <td class="dopbsp-label">'+fees[i]['translation']+'</td>');
HTML.push('     <td class="dopbsp-value">');
if(fees[i]['price_type']!=='fixed'
|| fees[i]['price_by']!=='once'){
HTML.push('         <span class="dopbsp-info-rule">&#9632;&nbsp;');
if(fees[i]['price_type']==='fixed'){
HTML.push(fees[i]['operation']+DOPBSPFrontEnd.setPrice(ID, fees[i]['price']));
}else{
HTML.push(fees[i]['operation']+fees[i]['price']+'%');
}
if(fees[i]['price_by']!=='once'){
HTML.push('/'+(dataHours['enabled'] ? DOPBSPFrontEnd.text(ID, 'fees', 'byHour'):DOPBSPFrontEnd.text(ID, 'fees', 'byDay')));
}
HTML.push('         </span><br />');
}
HTML.push('         <span class="dopbsp-info-price">');
if(fees[i]['included']==='true'){
HTML.push(DOPBSPFrontEnd.text(ID, 'fees', 'included'));
}else{
HTML.push(fees[i]['operation']+'&nbsp;'+DOPBSPFrontEnd.setPrice(ID, fees[i]['price_total']));
}
HTML.push('         </span>');
HTML.push('     </td>');
HTML.push(' </tr>');
}}
return HTML.join('');
};
return this.__construct();
};
var DOPBSPFrontEndRules=new function(){
'use strict';
var $=jQuery.noConflict();
this.__construct=function(){
};
this.getMaxTimeLapse=function(ID){
var dataRules=DOPBSPFrontEnd.calendar[ID]['rules']['data'];
if(dataRules['rule']!=null){
return dataRules['id']!=='0' ? parseFloat(dataRules['rule']['time_lapse_max']):0;
}else{
return 0;
}};
this.getMinTimeLapse=function(ID){
var dataRules=DOPBSPFrontEnd.calendar[ID]['rules']['data'];
if(dataRules['rule']!=null){
return dataRules['id']!=='0' ? parseFloat(dataRules['rule']['time_lapse_min']):0;
}else{
return 0;
}};
return this.__construct();
};
var DOT=new function(){
this.ajax={
keys: new Array(),
var: 'action',
url: ''
};
this.calendars=new Array();
this.id='pbs';
this.layouts={};
this.methods={};};
DOT.ajax.keys['user_calendars_data']='pbs_user_calendars_data';
DOT.ajax.keys['addons_stripe_error']='pbs_addons_stripe_error';
DOT.ajax.keys['addons_stripe_success']='pbs_addons_stripe_success';
DOT.methods.calendar=new function(){
'use strict';
var $=jQuery.noConflict();
this.settings=new Array();
this.__construct=function(){
};
return this.__construct();
};
DOT.methods.calendar_availability=new function(){
'use strict';
var $=jQuery.noConflict();
this.data=new Array();
this.__construct=function(){
};
this.verify=function(id,
dayStart,
dayEnd,
timeStart,
timeEnd){
var availability=DOT.methods.calendar_availability.data[id],
dateStart,
dateEnd,
i;
timeStart=timeStart===undefined ? '00:00:00':timeStart+':00';
timeEnd=timeEnd===undefined ? '23:59:59':DOPPrototypes.getPrevTime(timeEnd+':00', 1, 'seconds');
dateStart=dayStart+' '+timeStart;
dateEnd=dayEnd+' '+timeEnd;
for (i=0; i<=availability.length-1; i++){
if(availability[i]['date_start'] <=dateStart
&& availability[i]['date_end'] >=dateEnd){
return true;
}
else if(availability[i]['date_start'] > dateEnd){
return false;
}}
return false;
};
return this.__construct();
};
DOT.methods.calendar_days=new function(){
'use strict';
var $=jQuery.noConflict();
this.settings=new Array();
this.text=new Array();
this.__construct=function(){
};
return this.__construct();
};
DOT.methods.calendar_day=new function(){
'use strict';
var $=jQuery.noConflict();
this.__construct=function(){
};
this.default=function(){
return {"available": 0,
"bind": 0,
"hours_definitions": [{"value": "00:00"}],
"hours": {},
"info": "",
"info_body": "",
"info_tooltip": "",
"notes": "",
"price": 0,
"promo": 0,
"status": "none"};};
this.get=function(id,
date){
var weekday=DOT.methods.calendar_day.weekday(date);
if(!DOT.methods.calendar_days.settings[id].available[weekday]){
return DOT.methods.calendar_day.unavailable();
}
if(DOT.methods.calendar_schedule.data[id][date]!==undefined&&DOT.methods.calendar_schedule.data[id][date]!==null){
return DOT.methods.calendar_schedule.data[id][date];
}
return DOT.methods.calendar_schedule.default[id];
};
this.unavailable=function(){
return {"available": 0,
"bind": 0,
"hours_definitions": [{"value": "00:00"}],
"hours": {},
"info": "",
"info_body": "",
"info_tooltip": "",
"notes": "",
"price": 0,
"promo": 0,
"status": "unavailable"};};
this.weekday=function(date){
var months=['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
datePieces=date.split('-'),
year=datePieces[0],
month=datePieces[1],
day=datePieces[2],
dateFull=new Date(eval('"'+day+' '+months[parseInt(month, 10)-1]+', '+year+'"'));
return dateFull.getDay();
};
return this.__construct();
};
DOT.methods.calendar_schedule=new function(){
'use strict';
var $=jQuery.noConflict();
this.data=new Array();
this.default=new Array();
this.__construct=function(){
};
return this.__construct();
};