var JABB = JABB || {};
JABB.version = "0.3";
JABB.Ajax = {
onStart: null,
onStop: null,
onError: null,
XMLHttpFactories: [
function () {return new XMLHttpRequest()},
function () {return new ActiveXObject("Msxml2.XMLHTTP")},
function () {return new ActiveXObject("Msxml3.XMLHTTP")},
function () {return new ActiveXObject("Microsoft.XMLHTTP")}
],
sendRequest: function (url, callback, postData) {
var req = this.createXMLHTTPObject();
if (!req) {
return;
}
var method = (postData) ? "POST" : "GET";
var calledOnce = false;
req.open(method, url, true);
//Refused to set unsafe header "User-Agent"
//req.setRequestHeader('User-Agent', 'XMLHTTP/1.0');
req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
if (postData) {
req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
}
req.onreadystatechange = function () {
switch (req.readyState) {
case 1:
if (!calledOnce) {
JABB.Ajax.onAjaxStart();
calledOnce = true;
}
break;
case 2:
return;
break;
case 3:
return;
break;
case 4:
JABB.Ajax.onAjaxStop();
if (req.status == 200) {
callback(req);
} else {
JABB.Ajax.onAjaxError();
}
delete req;
break;
}/*
if (req.readyState != 4) {
return;
}
if (req.status != 200 && req.status != 304) {
return;
}
callback(req);*/
};
if (req.readyState == 4) {
return;
}
req.send(postData);
},
onAjaxStart: function () {
if (typeof this.onStart == 'function') {
this.onStart();
}
},
onAjaxStop: function () {
if (typeof this.onStop == 'function') {
this.onStop();
}
},
onAjaxError: function () {
if (typeof this.onError == 'function') {
this.onError();
}
},
createXMLHTTPObject: function () {
var xmlhttp = false;
for (var i = 0; i < this.XMLHttpFactories.length; i++) {
try {
xmlhttp = this.XMLHttpFactories[i]();
}
catch (e) {
continue;
}
break;
}
return xmlhttp;
},
getJSON: function (url, callback) {
this.sendRequest(url, function (req) {
callback(eval("(" + req.responseText + ")"));
});
},
postJSON: function (url, callback, postData) {
this.sendRequest(url, function (req) {
callback(eval("(" + req.responseText + ")"));
}, postData);
},
get: function (url, container_id) {
this.sendRequest(url, function (req) {
document.getElementById(container_id).innerHTML = JABB.Utils.parseScript(req.responseText);
});
},
post: function (url, container_id, postData) {
this.sendRequest(url, function (req) {
document.getElementById(container_id).innerHTML = JABB.Utils.parseScript(req.responseText);
}, postData);
}
};
JABB.Utils = {
addClass: function (ele, cls) {
if (!this.hasClass(ele, cls)) {
ele.className += " " + cls;
}
},
hasClass: function (ele, cls) {
return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
},
removeClass: function (ele, cls) {
if (this.hasClass(ele, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, ' ');
}
},
importCss: function (cssFile) {
if (document.createStyleSheet) {
document.createStyleSheet(cssFile);
} else {
var styles = "@import url(" + cssFile + ");";
var newSS = document.createElement('link');
newSS.rel = 'stylesheet';
newSS.href = 'data:text/css,' + escape(styles);
document.getElementsByTagName("head")[0].appendChild(newSS);
}
},
importJs: function (jsFile) {
var d = window.document;
if (d.createElement) {
var js = d.createElement("script");
js.type = "text/javascript";
js.src = jsFile;
if (js) {
d.getElementsByTagName("head")[0].appendChild(js);
}
}
},
getElementsByClass: function (searchClass, node, tag) {
var classElements = new Array();
if (node == null) {
node = document;
}
if (tag == null) {
tag = '*';
}
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
for (var i = 0, j = 0; i < elsLen; i++) {
if (pattern.test(els[i].className)) {
classElements[j] = els[i];
j++;
}
}
return classElements;
},
addEvent: function (obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false);
} else if (obj.attachEvent) {
obj["e" + type + fn] = fn;
obj[type + fn] = function() { obj["e" + type + fn](window.event); };
obj.attachEvent("on" + type, obj[type + fn]);
} else {
obj["on" + type] = obj["e" + type + fn];
}
},
fireEvent: function (element, event) {
if (!element) return false;
if (document.createEventObject) {
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on' + event, evt);
} else {
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
},
serialize: function (form) {
if (!form || form.nodeName !== "FORM") {
return undefined;
}
var i, j, q = [];
for (i = form.elements.length - 1; i >= 0; i = i - 1) {
if (form.elements[i].name === "") {
continue;
}
switch (form.elements[i].nodeName) {
case 'INPUT':
switch (form.elements[i].type) {
case 'text':
case 'hidden':
case 'password':
case 'button':
case 'reset':
case 'submit':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case 'checkbox':
case 'radio':
if (form.elements[i].checked) {
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
}
break;
case 'file':
break;
}
break;
case 'TEXTAREA':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case 'SELECT':
switch (form.elements[i].type) {
case 'select-one':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[form.elements[i].selectedIndex].value));
break;
case 'select-multiple':
for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {
if (form.elements[i].options[j].selected) {
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value));
}
}
break;
}
break;
case 'BUTTON':
switch (form.elements[i].type) {
case 'reset':
case 'submit':
case 'button':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
}
break;
}
}
return q.join("&");
},
extend: function (obj, args) {
var i;
for (i in args) {
obj[i] = args[i];
}
return obj;
},
createElement: function (element) {
if (typeof document.createElementNS != 'undefined') {
return document.createElementNS('http://www.w3.org/1999/xhtml', element);
}
if (typeof document.createElement != 'undefined') {
return document.createElement(element);
}
return false;
},
getEventTarget: function (e) {
var targ;
if (!e) {
e = window.event;
}
if (e.target) {
targ = e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
if (targ.nodeType == 3) {
targ = targ.parentNode;
}
return targ;
},
parseScript: function (_source) {
var source = _source,
scripts = [];
while (source.indexOf(" -1) {
var s = source.indexOf("", e);
scripts.push(source.substring(s_e+1, e));
source = source.substring(0, s) + source.substring(e_e+1);
}
for (var i = 0; i < scripts.length; i++) {
try {
eval(scripts[i]);
} catch(ex) {
// do what you want here when a script fails
}
}
return source;
},
createCookie: function (name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}
else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
},
readCookie: function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
},
eraseCookie: function (name) {
this.createCookie(name, "", -1);
}
};
/*
* CalendarJS v1.2
*
* Copyright 2011, Dimitar Ivanov (http://www.bulgaria-web-developers.com/projects/javascript/calendar/)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL Version 3
* (http://www.opensource.org/licenses/gpl-3.0.html) license.
*
* Date: Thu Sep 22 00:49:51 2011 +0300
*/
(function(window,undefined){var now=new Date(),today=[now.getFullYear(),now.getMonth(),now.getDate()].join("-"),midnight=new Date(now.getFullYear(),now.getMonth(),now.getDate()),d=window.document;function Calendar(options){this.isOpen=false;this.focus=false;this.opts={year:new Date().getFullYear(),month:new Date().getMonth(),dayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],dayNamesFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],monthNamesFull:["January","February","March","April","May","June","July","August","September","October","November","December"],startDay:0,weekNumbers:false,months:1,inline:false,disablePast:false,dateFormat:"Y-m-d",onBeforeOpen:function(){},onBeforeClose:function(){},onOpen:function(){},onClose:function(){},onSelect:function(){}};for(var key in options){if(options.hasOwnProperty(key)){this.opts[key]=options[key]}}this.init.call(this)}Calendar.Util={addClass:function(ele,cls){if(!this.hasClass(ele,cls)&&ele){ele.className+=ele.className.length>0?" "+cls:cls}},hasClass:function(ele,cls){if(ele&&typeof ele.className!="undefined"&&typeof ele.nodeType!="undefined"&&ele.nodeType===1){return ele.className.match(new RegExp("(\\s|^)"+cls+"(\\s|$)"))}return false},removeClass:function(ele,cls){if(this.hasClass(ele,cls)){var reg=new RegExp("(\\s|^)"+cls+"(\\s|$)");ele.className=ele.className.replace(reg," ")}},addEvent:function(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false)}else{if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event)};obj.attachEvent("on"+type,obj[type+fn])}else{obj["on"+type]=obj["e"+type+fn]}}},getElementsByClass:function(searchClass,node,tag){var classElements=[];if(node===null){node=d}if(tag===null){tag="*"}var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");for(var i=0,j=0;i0&&i0&&i===months-1){return 2}else{if(i===0&&i===months-1){return 3}else{if(i===0&&i");Calendar.Util.addEvent(cell,"click",function(e){self.container.innerHTML="";for(i=0;i1){day-=7}while(day<=daysInMonth){jsdate=new Date(year,month,day+startDay);row=d.createElement("tr");if(self.opts.weekNumbers){cell=d.createElement("td");Calendar.Util.addClass(cell,"bcal-week");a=new Date(jsdate.getFullYear(),jsdate.getMonth(),jsdate.getDate()-(jsdate.getDay()||7)+3);b=new Date(a.getFullYear(),0,4);cell.appendChild(d.createTextNode(1+Math.round((a-b)/86400000/7)));row.appendChild(cell)}for(i=0;i<7;i++){cell=d.createElement("td");if(day>0&&day<=daysInMonth){cell.setAttribute("bcal-date",new Date(year,month,day).getTime());Calendar.Util.addClass(cell,"bcal-date");current=new Date(year,month,day);if(today===[current.getFullYear(),current.getMonth(),current.getDate()].join("-")){Calendar.Util.addClass(cell,"bcal-today")}text=d.createTextNode(day);cell.appendChild(text);if(self.opts.disablePast===true&¤t<=midnight){Calendar.Util.addClass(cell,"bcal-past")}else{Calendar.Util.addEvent(cell,"click",(function(self,cell){return function(){s_arr=Calendar.Util.getElementsByClass("bcal-selected",self.container,"td");for(si=0,slen=s_arr.length;sidate)?1:(this=start.getTime()&&t<=end.getTime();};Date.prototype.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};Date.prototype.addSeconds=function(value){return this.addMilliseconds(value*1000);};Date.prototype.addMinutes=function(value){return this.addMilliseconds(value*60000);};Date.prototype.addHours=function(value){return this.addMilliseconds(value*3600000);};Date.prototype.addDays=function(value){return this.addMilliseconds(value*86400000);};Date.prototype.addWeeks=function(value){return this.addMilliseconds(value*604800000);};Date.prototype.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,this.getDaysInMonth()));return this;};Date.prototype.addYears=function(value){return this.addMonths(value*12);};Date.prototype.add=function(config){if(typeof config=="number"){this._orient=config;return this;}
var x=config;if(x.millisecond||x.milliseconds){this.addMilliseconds(x.millisecond||x.milliseconds);}
if(x.second||x.seconds){this.addSeconds(x.second||x.seconds);}
if(x.minute||x.minutes){this.addMinutes(x.minute||x.minutes);}
if(x.hour||x.hours){this.addHours(x.hour||x.hours);}
if(x.month||x.months){this.addMonths(x.month||x.months);}
if(x.year||x.years){this.addYears(x.year||x.years);}
if(x.day||x.days){this.addDays(x.day||x.days);}
return this;};Date._validate=function(value,min,max,name){if(typeof value!="number"){throw new TypeError(value+" is not a Number.");}else if(valuemax){throw new RangeError(value+" is not a valid value for "+name+".");}
return true;};Date.validateMillisecond=function(n){return Date._validate(n,0,999,"milliseconds");};Date.validateSecond=function(n){return Date._validate(n,0,59,"seconds");};Date.validateMinute=function(n){return Date._validate(n,0,59,"minutes");};Date.validateHour=function(n){return Date._validate(n,0,23,"hours");};Date.validateDay=function(n,year,month){return Date._validate(n,1,Date.getDaysInMonth(year,month),"days");};Date.validateMonth=function(n){return Date._validate(n,0,11,"months");};Date.validateYear=function(n){return Date._validate(n,1,9999,"seconds");};Date.prototype.set=function(config){var x=config;if(!x.millisecond&&x.millisecond!==0){x.millisecond=-1;}
if(!x.second&&x.second!==0){x.second=-1;}
if(!x.minute&&x.minute!==0){x.minute=-1;}
if(!x.hour&&x.hour!==0){x.hour=-1;}
if(!x.day&&x.day!==0){x.day=-1;}
if(!x.month&&x.month!==0){x.month=-1;}
if(!x.year&&x.year!==0){x.year=-1;}
if(x.millisecond!=-1&&Date.validateMillisecond(x.millisecond)){this.addMilliseconds(x.millisecond-this.getMilliseconds());}
if(x.second!=-1&&Date.validateSecond(x.second)){this.addSeconds(x.second-this.getSeconds());}
if(x.minute!=-1&&Date.validateMinute(x.minute)){this.addMinutes(x.minute-this.getMinutes());}
if(x.hour!=-1&&Date.validateHour(x.hour)){this.addHours(x.hour-this.getHours());}
if(x.month!==-1&&Date.validateMonth(x.month)){this.addMonths(x.month-this.getMonth());}
if(x.year!=-1&&Date.validateYear(x.year)){this.addYears(x.year-this.getFullYear());}
if(x.day!=-1&&Date.validateDay(x.day,this.getFullYear(),this.getMonth())){this.addDays(x.day-this.getDate());}
if(x.timezone){this.setTimezone(x.timezone);}
if(x.timezoneOffset){this.setTimezoneOffset(x.timezoneOffset);}
return this;};Date.prototype.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};Date.prototype.isLeapYear=function(){var y=this.getFullYear();return(((y%4===0)&&(y%100!==0))||(y%400===0));};Date.prototype.isWeekday=function(){return!(this.is().sat()||this.is().sun());};Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth());};Date.prototype.moveToFirstDayOfMonth=function(){return this.set({day:1});};Date.prototype.moveToLastDayOfMonth=function(){return this.set({day:this.getDaysInMonth()});};Date.prototype.moveToDayOfWeek=function(day,orient){var diff=(day-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};Date.prototype.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};Date.prototype.getDayOfYear=function(){return Math.floor((this-new Date(this.getFullYear(),0,1))/86400000);};Date.prototype.getWeekOfYear=function(firstDayOfWeek){var y=this.getFullYear(),m=this.getMonth(),d=this.getDate();var dow=firstDayOfWeek||Date.CultureInfo.firstDayOfWeek;var offset=7+1-new Date(y,0,1).getDay();if(offset==8){offset=1;}
var daynum=((Date.UTC(y,m,d,0,0,0)-Date.UTC(y,0,1,0,0,0))/86400000)+1;var w=Math.floor((daynum-offset+7)/7);if(w===dow){y--;var prevOffset=7+1-new Date(y,0,1).getDay();if(prevOffset==2||prevOffset==8){w=53;}else{w=52;}}
return w;};Date.prototype.isDST=function(){console.log('isDST');return this.toString().match(/(E|C|M|P)(S|D)T/)[2]=="D";};Date.prototype.getTimezone=function(){return Date.getTimezoneAbbreviation(this.getUTCOffset,this.isDST());};Date.prototype.setTimezoneOffset=function(s){var here=this.getTimezoneOffset(),there=Number(s)*-6/10;this.addMinutes(there-here);return this;};Date.prototype.setTimezone=function(s){return this.setTimezoneOffset(Date.getTimezoneOffset(s));};Date.prototype.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r[0]+r.substr(2);}else{r=(n+10000).toString();return"+"+r.substr(1);}};Date.prototype.getDayName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedDayNames[this.getDay()]:Date.CultureInfo.dayNames[this.getDay()];};Date.prototype.getMonthName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedMonthNames[this.getMonth()]:Date.CultureInfo.monthNames[this.getMonth()];};Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(format){var self=this;var p=function p(s){return(s.toString().length==1)?"0"+s:s;};return format?format.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(format){switch(format){case"hh":return p(self.getHours()<13?self.getHours():(self.getHours()-12));case"h":return self.getHours()<13?self.getHours():(self.getHours()-12);case"HH":return p(self.getHours());case"H":return self.getHours();case"mm":return p(self.getMinutes());case"m":return self.getMinutes();case"ss":return p(self.getSeconds());case"s":return self.getSeconds();case"yyyy":return self.getFullYear();case"yy":return self.getFullYear().toString().substring(2,4);case"dddd":return self.getDayName();case"ddd":return self.getDayName(true);case"dd":return p(self.getDate());case"d":return self.getDate().toString();case"MMMM":return self.getMonthName();case"MMM":return self.getMonthName(true);case"MM":return p((self.getMonth()+1));case"M":return self.getMonth()+1;case"t":return self.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return self.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return"";}}):this._toString();};
Date.now=function(){return new Date();};Date.today=function(){return Date.now().clearTime();};Date.prototype._orient=+1;Date.prototype.next=function(){this._orient=+1;return this;};Date.prototype.last=Date.prototype.prev=Date.prototype.previous=function(){this._orient=-1;return this;};Date.prototype._is=false;Date.prototype.is=function(){this._is=true;return this;};Number.prototype._dateElement="day";Number.prototype.fromNow=function(){var c={};c[this._dateElement]=this;return Date.now().add(c);};Number.prototype.ago=function(){var c={};c[this._dateElement]=this*-1;return Date.now().add(c);};(function(){var $D=Date.prototype,$N=Number.prototype;var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),de;var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;}
return this.moveToDayOfWeek(n,this._orient);};};for(var i=0;i0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;}
if(!last&&q[1].length===0){last=true;}
if(!last){var qx=[];for(var j=0;j0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}}
if(rx[1].length1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];}
if(args){for(var i=0,px=args.shift();i2)?n:(n+(((n+2000)Date.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.");}
var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});}
return r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;}
for(var i=0;i<' + '/script>');
}
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function(name, text) {
modules[name] = text;
};
google.maps.Load = function(apiLoad) {
delete google.maps.Load;
apiLoad([0.009999999776482582,[[["http://mt0.googleapis.com/vt?lyrs=m@249000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=m@249000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"m@249000000",["https://mts0.google.com/vt?lyrs=m@249000000\u0026src=api\u0026hl=en-US\u0026","https://mts1.google.com/vt?lyrs=m@249000000\u0026src=api\u0026hl=en-US\u0026"]],[["http://khm0.googleapis.com/kh?v=145\u0026hl=en-US\u0026","http://khm1.googleapis.com/kh?v=145\u0026hl=en-US\u0026"],null,null,null,1,"145",["https://khms0.google.com/kh?v=145\u0026hl=en-US\u0026","https://khms1.google.com/kh?v=145\u0026hl=en-US\u0026"]],[["http://mt0.googleapis.com/vt?lyrs=h@249000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=h@249000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"h@249000000",["https://mts0.google.com/vt?lyrs=h@249000000\u0026src=api\u0026hl=en-US\u0026","https://mts1.google.com/vt?lyrs=h@249000000\u0026src=api\u0026hl=en-US\u0026"]],[["http://mt0.googleapis.com/vt?lyrs=t@132,r@249000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=t@132,r@249000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"t@132,r@249000000",["https://mts0.google.com/vt?lyrs=t@132,r@249000000\u0026src=api\u0026hl=en-US\u0026","https://mts1.google.com/vt?lyrs=t@132,r@249000000\u0026src=api\u0026hl=en-US\u0026"]],null,null,[["http://cbk0.googleapis.com/cbk?","http://cbk1.googleapis.com/cbk?"]],[["http://khm0.googleapis.com/kh?v=84\u0026hl=en-US\u0026","http://khm1.googleapis.com/kh?v=84\u0026hl=en-US\u0026"],null,null,null,null,"84",["https://khms0.google.com/kh?v=84\u0026hl=en-US\u0026","https://khms1.google.com/kh?v=84\u0026hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt?hl=en-US\u0026","http://mt1.googleapis.com/mapslt?hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=en-US\u0026","http://mt1.googleapis.com/mapslt/ft?hl=en-US\u0026"]],[["http://mt0.googleapis.com/vt?hl=en-US\u0026","http://mt1.googleapis.com/vt?hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt/loom?hl=en-US\u0026","http://mt1.googleapis.com/mapslt/loom?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt?hl=en-US\u0026","https://mts1.googleapis.com/mapslt?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt/ft?hl=en-US\u0026","https://mts1.googleapis.com/mapslt/ft?hl=en-US\u0026"]]],["en-US","US",null,0,null,null,"http://maps.gstatic.com/mapfiles/","http://csi.gstatic.com","https://maps.googleapis.com","http://maps.googleapis.com"],["http://maps.gstatic.com/intl/en_us/mapfiles/api-3/15/10","3.15.10"],[2643995682],1,null,null,null,null,0,"",null,null,0,"http://khm.googleapis.com/mz?v=145\u0026",null,"https://earthbuilder.googleapis.com","https://earthbuilder.googleapis.com",null,"http://mt.googleapis.com/vt/icon",[["http://mt0.googleapis.com/vt","http://mt1.googleapis.com/vt"],["https://mts0.googleapis.com/vt","https://mts1.googleapis.com/vt"],[null,[[0,"m",249000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[47],[37,[["smartmaps"]]]]],0],[null,[[0,"m",249000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[47],[37,[["smartmaps"]]]]],3],[null,[[0,"m",249000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[50],[37,[["smartmaps"]]]]],0],[null,[[0,"m",249000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[50],[37,[["smartmaps"]]]]],3],[null,[[4,"t",132],[0,"r",132000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[5],[37,[["smartmaps"]]]]],0],[null,[[4,"t",132],[0,"r",132000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[5],[37,[["smartmaps"]]]]],3],[null,null,[null,"en-US","US",null,18],0],[null,null,[null,"en-US","US",null,18],3],[null,null,[null,"en-US","US",null,18],6],[null,null,[null,"en-US","US",null,18],0],["https://mts0.google.com/vt","https://mts1.google.com/vt"],"/maps/vt"],2,500], loadScriptTime);
};
var loadScriptTime = (new Date).getTime();
getScript("http://maps.gstatic.com/intl/en_us/mapfiles/api-3/15/10/main.js");
})();
(function (window, undefined) {
var document = window.document;
function CR(options) {
if (!(this instanceof CR)) {
return new CR(options);
}
this.container = null;
this.passed = {'first': false, 'second': false, 'third': false, 'fourth': false};
this.current = 'loadSearch';
this.opts = {
folder: ""
};
for (var attr in options) {
if (options.hasOwnProperty(attr)) {
this.opts[attr] = options[attr];
}
}
this.init();
return this;
}
function dateFormat(str, format) {
var jQuery = ['d', 'dd', 'm', 'mm', 'yy'],
dateJs = ['d', 'dd', 'M', 'MM', 'yyyy'],
php = ['j', 'd', 'n', 'm', 'Y'],
limiters = ['.', '-', '/'],
stack = [];
switch (format) {
case 'jquery':
stack = jQuery;
break;
case 'datejs':
stack = dateJs;
break;
default:
return str;
}
for (var i = 0, len = limiters.length; i < len; i++) {
if (str.indexOf(limiters[i]) !== -1) {
var iFormat = str.split(limiters[i]);
return [
stack[php.indexOf(iFormat[0])],
stack[php.indexOf(iFormat[1])],
stack[php.indexOf(iFormat[2])]
].join(limiters[i]);
}
}
return str;
}
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 0) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}
CR.prototype = {
init: function () {
var self = this;
self.container = document.getElementById("crContainer");
self.loadSearch();
var btns = {};
btns[self.opts.closeButton] = function (button) {
this.close();
};
self.overlayTerms = new OverlayJS({
selector: "crDialogTerms",
modal: true,
width: 640,
height: 480,
onBeforeOpen: function () {
var that = this;
JABB.Ajax.sendRequest(self.opts.folder + "index.php?controller=Front&action=getTerms", function (req) {
that.content.innerHTML = req.responseText;
});
},
buttons: btns
});
self.overlayMap = new OverlayJS({
selector: "crDialogMap",
width: 640,
height: 480,
modal: true,
onOpen: function () {
var that = this,
canvasId = 'ojs-content-' + this.id;
JABB.Ajax.getJSON(self.opts.folder + "index.php?controller=Front&action=getLocations", function (data) {
var map = new google.maps.Map(document.getElementById(canvasId), {
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
if (data && data.length) {
var i, len, markers = [], _latLng, _marker, _info;
for (i = 0, len = data.length; i < len; i++) {
_latLng = new google.maps.LatLng(data[i].lat, data[i].lng);
_marker = new google.maps.Marker({
map: map,
position: _latLng
});
_info = new google.maps.InfoWindow({
content: ['', data[i].name, '
',
data[i].state, ', ', data[i].city, ' ', data[i].zip, '
',
data[i].address_1, '
',
'Email: ', data[i].email, '
',
'Phone: ', data[i].phone, '
',
'Opening Time:
',
data[i].opening_time.replace(/\n/, '
')].join("")
});
google.maps.event.addListener(_marker, "click", function (info, marker) {
return function () {
info.open(map, marker);
};
}(_info, _marker));
if (i == len - 1) {
map.setCenter(_latLng);
}
markers.push(_marker);
}
}
});
},
buttons: btns
});
},
bindMenu: function () {
var self = this,
breadcrumbsEl = JABB.Utils.getElementsByClass("crBreadcrumbsEl", self.container, "A"),
localeEl = JABB.Utils.getElementsByClass("crLocaleEl", self.container, "A"),
i, len;
for (i = 0, len = breadcrumbsEl.length; i < len; i++) {
switch (parseInt(breadcrumbsEl[i].getAttribute("rel"), 10)) {
case 2:
if (!self.passed.first) {
breadcrumbsEl[i].style.cursor = "default";
}
break;
case 3:
if (!self.passed.second) {
breadcrumbsEl[i].style.cursor = "default";
}
break;
case 4:
if (!self.passed.third) {
breadcrumbsEl[i].style.cursor = "default";
}
break;
}
breadcrumbsEl[i].onclick = function (inst) {
return function (e) {
switch (parseInt(this.getAttribute("rel"), 10)) {
case 1:
inst.loadSearch();
break;
case 2:
if (inst.passed.first) {
inst.loadCars();
}
break;
case 3:
if (inst.passed.second) {
inst.loadExtras();
}
break;
case 4:
if (inst.passed.third) {
inst.loadCheckout();
}
break;
}
if (e && e.preventDefault) {
e.preventDefault();
}
return false;
};
}(self);
}
for (i = 0, len = localeEl.length; i < len; i++) {
localeEl[i].onclick = function (inst) {
return function (e) {
inst.setLocale(this.getAttribute("rel"));
if (e && e.preventDefault) {
e.preventDefault();
}
return false;
};
}(self);
}
},
bindTabs: function () {
var self = this,
arr = JABB.Utils.getElementsByClass("crTabsLink", self.container, "a"),
i, len;
for (i = 0, len = arr.length; i < len; i++) {
arr[i].onclick = function (inst) {
return function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
inst.loadCars.apply(inst, [null, this.getAttribute("rel"), inst.transmission]);
return false;
};
}(self);
}
arr = JABB.Utils.getElementsByClass("crSort", self.container, "a");
for (i = 0, len = arr.length; i < len; i++) {
arr[i].onclick = function (inst) {
return function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
var rel = this.getAttribute("rel");
inst.loadCars.apply(inst, [null, inst.size, inst.transmission, rel.split("|")[0], rel.split("|")[1]]);
return false;
};
}(self);
}
var transmission = document.getElementById("crTransmission");
if (transmission) {
transmission.onchange = function (e) {
self.loadCars.apply(self, [null, self.size, this.options[this.selectedIndex].value, self.col_name, self.direction]);
};
}
},
bindSearch: function () {
var self = this,
dateFrom = new Calendar({
element: "cr_date_from",
//dateFormat: "Y-m-d",
dateFormat: self.opts.dateFormat,
monthNamesFull: self.opts.monthNamesFull,
dayNames: self.opts.dayNames,
disablePast: true,
onSelect: function () {
reCalc.call(self);
}
}),
dateTo = new Calendar({
element: "cr_date_to",
//dateFormat: "Y-m-d",
dateFormat: self.opts.dateFormat,
monthNamesFull: self.opts.monthNamesFull,
dayNames: self.opts.dayNames,
disablePast: true,
onSelect: function () {
reCalc.call(self);
}
}),
lnkFrom = document.getElementById("crDateFrom"),
lnkTo = document.getElementById("crDateTo"),
btnQuote = document.getElementById("crBtnQuote"),
btnMap = document.getElementById("crBtnMap"),
sameLoc = document.getElementById("cr_same_location"),
returnLoc = document.getElementById("crReturnBox");
self.elFrom = document.getElementById("cr_date_from");
self.elTo = document.getElementById("cr_date_to");
self.elHFrom = document.getElementById("cr_hour_from");
self.elMFrom = document.getElementById("cr_minutes_from");
self.elHTo = document.getElementById("cr_hour_to");
self.elMTo = document.getElementById("cr_minutes_to");
function reCalc() {
var from = Date.parseExact(this.elFrom.value, dateFormat(self.opts.dateFormat, 'datejs')).getTime() + (parseInt(this.elHFrom.value, 10) * 3600000) + (parseInt(this.elMFrom.value, 10) * 60000),
to = Date.parseExact(this.elTo.value, dateFormat(self.opts.dateFormat, 'datejs')).getTime() + (parseInt(this.elHTo.value, 10) * 3600000) + (parseInt(this.elMTo.value, 10) * 60000),
nd = document.getElementById("crNumDays"),
days;
if (from !== null && to !== null) {
days = Math.ceil((to - from) / 86400000);
if (days > 0) {
nd.lastChild.innerHTML = days;
nd.style.display = "";
} else {
nd.style.display = "none";
}
} else {
nd.style.display = "none";
}
}
if (lnkFrom) {
lnkFrom.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
dateFrom.isOpen ? dateFrom.close() : dateFrom.open();
return false;
};
}
if (lnkTo) {
lnkTo.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
dateTo.isOpen ? dateTo.close() : dateTo.open();
return false;
};
}
if (btnMap) {
btnMap.onclick = function (e) {
self.overlayMap.open();
if (e && e.preventDefault) {
e.preventDefault();
}
return false;
}
}
if (sameLoc && returnLoc) {
function bindLoc(el) {
if (this.checked) {
el.style.display = "none";
} else {
el.style.display = "";
}
}
sameLoc.onchange = function () {
bindLoc.call(this, returnLoc);
};
sameLoc.onclick = function () {
bindLoc.call(this, returnLoc);
};
}
if (btnQuote) {
btnQuote.onclick = function () {
this.disabled = true;
if (!self.validateSearch(this)) {
this.disabled = false;
return;
}
self.passed.first = true;
self.loadCars.apply(self, [JABB.Utils.serialize(document.getElementById("crFormSearch"))]);
};
}
},
bindCars: function () {
var el = document.getElementById('hideorshow');
el.parentNode.removeChild(el);
var self = this,
btnQuote = document.getElementById("crBtnQuote"),
btnContinue = JABB.Utils.getElementsByClass("crBtnContinue", self.container, "button"),
lnkFrom = document.getElementById("crDateFrom"),
lnkTo = document.getElementById("crDateTo"),
dateFrom = new Calendar({
element: "cr_date_from",
//dateFormat: "Y-m-d",
dateFormat: self.opts.dateFormat,
monthNamesFull: self.opts.monthNamesFull,
dayNames: self.opts.dayNames,
disablePast: true,
onSelect: function () {
reCalc.call(self);
}
}),
dateTo = new Calendar({
element: "cr_date_to",
//dateFormat: "Y-m-d",
dateFormat: self.opts.dateFormat,
monthNamesFull: self.opts.monthNamesFull,
dayNames: self.opts.dayNames,
disablePast: true,
onSelect: function () {
reCalc.call(self);
}
}),
i, len = btnContinue.length;
self.elFrom = document.getElementById("cr_date_from");
self.elTo = document.getElementById("cr_date_to");
self.elHFrom = document.getElementById("cr_hour_from");
self.elMFrom = document.getElementById("cr_minutes_from");
self.elHTo = document.getElementById("cr_hour_to");
self.elMTo = document.getElementById("cr_minutes_to");
function reCalc() {
var from = Date.parseExact(this.elFrom.value, dateFormat(self.opts.dateFormat, 'datejs')).getTime() + (parseInt(this.elHFrom.value, 10) * 3600000) + (parseInt(this.elMFrom.value, 10) * 60000),
to = Date.parseExact(this.elTo.value, dateFormat(self.opts.dateFormat, 'datejs')).getTime() + (parseInt(this.elHTo.value, 10) * 3600000) + (parseInt(this.elMTo.value, 10) * 60000),
nd = document.getElementById("crNumDays"),
days;
if (from !== null && to !== null) {
days = Math.ceil((to - from) / 86400000);
if (days > 0) {
nd.lastChild.innerHTML = days;
nd.style.display = "";
} else {
nd.style.display = "none";
}
} else {
nd.style.display = "none";
}
}
if (lnkFrom) {
lnkFrom.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
dateFrom.isOpen ? dateFrom.close() : dateFrom.open();
return false;
};
}
if (lnkTo) {
lnkTo.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
dateTo.isOpen ? dateTo.close() : dateTo.open();
return false;
};
}
for (i = 0; i < len; i++) {
btnContinue[i].onclick = function (inst) {
return function (e) {
inst.passed.second = true;
inst.type_id = this.value;
//inst.loadExtras();
inst.passed.third = true;
inst.loadCheckout(this.value);
};
}(self);
}
if (btnQuote) {
btnQuote.onclick = function () {
this.disabled = true;
if (!self.validateSearch(this)) {
this.disabled = false;
return;
}
self.passed.first = true;
self.loadCars.apply(self, [JABB.Utils.serialize(document.getElementById("crFormSearch"))]);
};
}
},
bindExtras: function () {
var self = this,
btnCheckout = document.getElementById("crBtnCheckout"),
btnConditions = document.getElementById("crBtnConditions"),
btnWhen = document.getElementById("crBtnWhen"),
btnChoise = document.getElementById("crBtnChoise"),
add = JABB.Utils.getElementsByClass("crBtnAdd", self.container, "button"),
remove = JABB.Utils.getElementsByClass("crBtnRemove", self.container, "button"),
i, len;
if (btnCheckout) {
btnCheckout.onclick = function () {
/*
self.passed.third = true;
self.loadCheckout();
*/
};
}
if (btnConditions) {
btnConditions.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
self.overlayTerms.open();
return false;
}
}
if (btnWhen) {
btnWhen.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
self.loadSearch();
return false;
};
}
if (btnChoise) {
btnChoise.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
self.loadCars();
return false;
};
}
for (i = 0, len = add.length; i < len; i++) {
add[i].onclick = function (e) {
self.addExtra.apply(self, [this.value]);
};
}
for (i = 0, len = remove.length; i < len; i++) {
remove[i].onclick = function (e) {
self.removeExtra.apply(self, [this.value]);
};
}
},
bindCheckout: function () {
var self = this,
btnTerms = document.getElementById("crBtnTerms"),
btnConfirm = document.getElementById("crBtnConfirm"),
btnBack = document.getElementById("crBtnBack"),
btnQuote = document.getElementById("crBtnQuote"),
btnConditions = document.getElementById("crBtnConditions"),
btnContinue = JABB.Utils.getElementsByClass("crBtnContinue", self.container, "button"),
btnWhen = document.getElementById("crBtnWhen"),
btnChoise = document.getElementById("crBtnChoise"),
lnkFrom = document.getElementById("crDateFrom"),
lnkTo = document.getElementById("crDateTo"),
dateFrom = new Calendar({
element: "cr_date_from",
//dateFormat: "Y-m-d",
dateFormat: self.opts.dateFormat,
monthNamesFull: self.opts.monthNamesFull,
dayNames: self.opts.dayNames,
disablePast: true,
onSelect: function () {
reCalc.call(self);
}
}),
dateTo = new Calendar({
element: "cr_date_to",
//dateFormat: "Y-m-d",
dateFormat: self.opts.dateFormat,
monthNamesFull: self.opts.monthNamesFull,
dayNames: self.opts.dayNames,
disablePast: true,
onSelect: function () {
reCalc.call(self);
}
}),
i, len = btnContinue.length;
self.elFrom = document.getElementById("cr_date_from");
self.elTo = document.getElementById("cr_date_to");
self.elHFrom = document.getElementById("cr_hour_from");
self.elMFrom = document.getElementById("cr_minutes_from");
self.elHTo = document.getElementById("cr_hour_to");
self.elMTo = document.getElementById("cr_minutes_to");
function reCalc() {
var from = Date.parseExact(this.elFrom.value, dateFormat(self.opts.dateFormat, 'datejs')).getTime() + (parseInt(this.elHFrom.value, 10) * 3600000) + (parseInt(this.elMFrom.value, 10) * 60000),
to = Date.parseExact(this.elTo.value, dateFormat(self.opts.dateFormat, 'datejs')).getTime() + (parseInt(this.elHTo.value, 10) * 3600000) + (parseInt(this.elMTo.value, 10) * 60000),
nd = document.getElementById("crNumDays"),
days;
if (from !== null && to !== null) {
days = Math.ceil((to - from) / 86400000);
if (days > 0) {
nd.lastChild.innerHTML = days;
nd.style.display = "";
} else {
nd.style.display = "none";
}
} else {
nd.style.display = "none";
}
}
if (lnkFrom) {
lnkFrom.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
dateFrom.isOpen ? dateFrom.close() : dateFrom.open();
return false;
};
}
if (lnkTo) {
lnkTo.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
dateTo.isOpen ? dateTo.close() : dateTo.open();
return false;
};
}
if (btnTerms) {
btnTerms.onclick = function (e) {
self.overlayTerms.open();
if (e && e.preventDefault) {
e.preventDefault();
}
return false;
};
}
if (btnBack) {
btnBack.onclick = function () {
self.loadExtras();
};
}
if (btnQuote) {
btnQuote.onclick = function () {
this.disabled = true;
if (!self.validateSearch(this)) {
this.disabled = false;
return;
}
self.passed.first = true;
self.loadCars.apply(self, [JABB.Utils.serialize(document.getElementById("crFormSearch"))]);
};
}
if (btnConditions) {
btnConditions.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
self.overlayTerms.open();
return false;
}
}
if (btnWhen) {
btnWhen.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
self.loadSearch();
return false;
};
}
if (btnChoise) {
btnChoise.onclick = function (e) {
if (e && e.preventDefault) {
e.preventDefault();
}
self.loadCars();
return false;
};
}
if (btnConfirm) {
var frm = btnConfirm.form;
if (frm) {
var pm = frm.payment_method;
if (pm) {
pm.onchange = function (e) {
var data = document.getElementById("crCCData"),
names = ["cc_type", "cc_num", "cc_exp_month", "cc_exp_year", "cc_code"],
i, len = names.length;
switch (this.options[this.selectedIndex].value) {
case 'creditcard':
data.style.display = "";
for (i = 0; i < len; i++) {
JABB.Utils.addClass(frm[names[i]], "crRequired");
}
break;
default:
data.style.display = "none";
for (i = 0; i < len; i++) {
JABB.Utils.removeClass(frm[names[i]], "crRequired");
}
}
};
}
}
btnConfirm.onclick = function () {
var that = this;
that.disabled = true;
//btnBack.disabled = true;
if (!self.validateCheckoutForm(that)) {
that.disabled = false;
btnBack.disabled = false;
return;
}
JABB.Ajax.postJSON(self.opts.folder + "index.php?controller=Front&action=bookingSave", function (data) {
switch (data.code) {
case 100:
self.errorHandler('\n' + self.opts.message_4);
that.disabled = false;
btnBack.disabled = false;
break;
case 200:
switch (data.payment) {
case 'paypal':
self.triggerLoading('message_1', self.container);
self.loadPaymentForm(data);
break;
case 'authorize':
self.triggerLoading('message_2', self.container);
self.loadPaymentForm(data);
break;
case 'creditcard':
self.triggerLoading('message_3', self.container);
break;
default:
var h = document.getElementById('bookSuccess');
self.container.innerHTML= h.innerHTML;
//self.container.style.display='none';
//self.triggerLoading('message_3', self.container);
}
break;
}
}, JABB.Utils.serialize(that.form));
};
}
},
loadSearch: function () {
var self = this;
JABB.Ajax.sendRequest(self.opts.folder + "index.php?controller=Front&action=loadSearch", function (req) {
self.container.innerHTML = req.responseText;
self.bindSearch();
self.bindMenu();
});
self.current = "loadSearch";
},
loadCars: function () {
var self = this,
post = typeof arguments[0] != "undefined" ? arguments[0] : null,
qs = "";
if (typeof arguments[1] != "undefined") {
self.size = arguments[1];
} else {
self.size = "all";
}
qs += "&size=" + self.size;
if (typeof arguments[2] != "undefined") {
self.transmission = arguments[2];
} else {
self.transmission = "";
}
qs += "&transmission=" + self.transmission;
if (typeof arguments[3] != "undefined") {
self.col_name = arguments[3];
} else {
self.col_name = "t1.name";
}
qs += "&col_name=" + self.col_name;
if (typeof arguments[4] != "undefined") {
self.direction = arguments[4];
} else {
self.direction = "asc";
}
qs += "&direction=" + self.direction;
JABB.Ajax.sendRequest(self.opts.folder + "index.php?controller=Front&action=loadCars" + qs, function (req) {
self.container.innerHTML = req.responseText;
self.bindCars();
self.bindMenu();
self.bindTabs();
}, post);
self.current = "loadCars";
},
loadExtras: function () {
var self = this,
qs = "&type_id=" + self.type_id;
JABB.Ajax.sendRequest([self.opts.folder, "index.php?controller=Front&action=loadExtras", qs].join(""), function (req) {
self.container.innerHTML = req.responseText;
self.bindExtras();
self.bindMenu();
});
self.current = "loadExtras";
},
loadCheckout: function (id) {
var self = this;
JABB.Ajax.sendRequest(self.opts.folder + "index.php?controller=Front&action=loadCheckout&type_id="+id, function (req) {
self.container.innerHTML = req.responseText;
self.bindCheckout();
self.bindMenu();
});
self.current = "loadCheckout";
},
loadPaymentForm: function (obj) {
var self = this,
div;
JABB.Ajax.sendRequest(self.opts.folder + "index.php?controller=Front&action=loadPayment", function (req) {
div = document.createElement("div");
div.innerHTML = req.responseText;
self.container.appendChild(div);
if (typeof document.forms[obj.payment == 'paypal' ? 'crPaypal' : 'crAuthorize'] != 'undefined') {
document.forms[obj.payment == 'paypal' ? 'crPaypal' : 'crAuthorize'].submit();
}
}, "id=" + obj.booking_id);
},
addExtra: function (extra_id) {
var self = this;
JABB.Ajax.getJSON([self.opts.folder, "index.php?controller=Front&action=addExtra&extra_id=", extra_id].join(""), function (data) {
self.loadExtras();
});
return self;
},
removeExtra: function (extra_id) {
var self = this;
JABB.Ajax.getJSON([self.opts.folder, "index.php?controller=Front&action=removeExtra&extra_id=", extra_id].join(""), function (data) {
self.loadExtras();
});
return self;
},
setLocale: function (index) {
var self = this;
JABB.Ajax.getJSON([self.opts.folder, "index.php?controller=Front&action=setLocale&index=", index].join(""), function (data) {
switch (self.current) {
case 'loadSearch':
self.loadSearch();
break;
case 'loadCars':
self.loadCars();
break;
case 'loadExtras':
self.loadExtras();
break;
case 'loadCheckout':
self.loadCheckout();
break;
}
if (window.myCR) {
window.myCR.opts = data;
}
});
},
validateSearch: function (btn) {
var frm = btn.form,
df = frm.date_from,
dt = frm.date_to;
if (df && dt) {
if (Date.parseExact(df.value, dateFormat(this.opts.dateFormat, 'datejs')).getTime() < Date.parseExact(dt.value, dateFormat(this.opts.dateFormat, 'datejs')).getTime()) {
return true;
}
}
this.errorHandler("\n - " + this.opts.validation.error_dates);
return false;
},
validateCheckoutForm: function (btn) {
var re = /([0-9a-zA-Z\.\-\_]+)@([0-9a-zA-Z\.\-\_]+)\.([0-9a-zA-Z\.\-\_]+)/,
message = "";
var frm = btn.form;
for (var i = 0, len = frm.elements.length; i < len; i++) {
var cls = frm.elements[i].className;
if (cls.indexOf("crRequired") !== -1 && frm.elements[i].disabled === false) {
switch (frm.elements[i].nodeName) {
case "INPUT":
switch (frm.elements[i].type) {
case "checkbox":
case "radio":
if (!frm.elements[i].checked && frm.elements[i].getAttribute("rev")) {
message += "\n - " + frm.elements[i].getAttribute("rev");
}
break;
default:
if (frm.elements[i].value.length === 0 && frm.elements[i].getAttribute("rev")) {
message += "\n - " + frm.elements[i].getAttribute("rev");
}
break;
}
break;
case "TEXTAREA":
if (frm.elements[i].value.length === 0 && frm.elements[i].getAttribute("rev")) {
message += "\n - " + frm.elements[i].getAttribute("rev");
}
break;
case "SELECT":
switch (frm.elements[i].type) {
case 'select-one':
if (frm.elements[i].value.length === 0 && frm.elements[i].getAttribute("rev")) {
message += "\n - " + frm.elements[i].getAttribute("rev");
}
break;
case 'select-multiple':
var has = false;
for (j = frm.elements[i].options.length - 1; j >= 0; j = j - 1) {
if (frm.elements[i].options[j].selected) {
has = true;
break;
}
}
if (!has && frm.elements[i].getAttribute("rev")) {
message += "\n - " + frm.elements[i].getAttribute("rev");
}
break;
}
break;
default:
break;
}
}
if (cls.indexOf("crEmail") !== -1) {
if (frm.elements[i].nodeName === "INPUT" && frm.elements[i].value.length > 0 && frm.elements[i].value.match(re) == null) {
message += "\n - " + this.opts.validation.error_email;
}
}
}
if (message.length === 0) {
return true;
} else {
this.errorHandler(message);
return false;
}
},
errorHandler: function (message) {
var err = JABB.Utils.getElementsByClass("crError", self.container, "P");
if (err[0]) {
err[0].innerHTML = '' + this.opts.validation.error_title + message.replace(/\n/g, "
");
err[0].style.display = '';
} else {
alert(this.opts.validation.error_title + message);
}
},
triggerLoading: function (message, container) {
if (container && container.nodeType) {
container.innerHTML = this.opts[message];
} else if (typeof container != "undefined") {
var c = document.getElementById(container);
if (c && c.nodeType) {
c.innerHTML = this.opts[message];
}
}
}
};
return (window.CR = CR);
})(window);