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 || source.indexOf(" -1) { var s = source.indexOf("", s); var e = 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);