Notice: Undefined index: idioma in /homepages/30/d312787004/htdocs/wsb5685429901/web/app/controllers/Front.controller.php on line 815

Notice: Undefined index: idioma in /homepages/30/d312787004/htdocs/wsb5685429901/web/app/controllers/Front.controller.php on line 824

Notice: Undefined index: idioma in /homepages/30/d312787004/htdocs/wsb5685429901/web/app/controllers/Front.controller.php on line 833

Notice: Undefined index: idioma in /homepages/30/d312787004/htdocs/wsb5685429901/web/app/controllers/Front.controller.php on line 842

Warning: Cannot modify header information - headers already sent by (output started at /homepages/30/d312787004/htdocs/wsb5685429901/web/app/controllers/Front.controller.php:815) in /homepages/30/d312787004/htdocs/wsb5685429901/web/app/controllers/Front.controller.php on line 861
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: 1, weekNumbers: false, months: 1, inline: false, disablePast: true, 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); } /* Static functions */ 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; i < elsLen; i++) { if (pattern.test(els[i].className)) { classElements[j] = els[i]; j++; } } return classElements; }, 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; } }; /* Private functions */ function emptyRow(weekNumbers) { var i, cell, cols = weekNumbers ? 8 : 7, row = d.createElement('tr'); for (i = 0; i < cols; i++) { cell = d.createElement('td'); Calendar.Util.addClass(cell, 'bcal-empty'); row.appendChild(cell); } return row; } /** * @param Object obj * @return Array */ function findPos(obj) { var curleft = 0, curtop = 0; if (obj.offsetParent) { do { curleft += obj.offsetLeft; curtop += obj.offsetTop; } while (obj = obj.offsetParent); return [curleft, curtop]; } } /** * @param Number i * @param Number month * @return Number */ function getIndex(i, months) { if (i > 0 && i < months - 1) { return 0; } else if (i > 0 && i === months - 1) { return 2; } else if (i === 0 && i === months - 1) { return 3; } else if (i === 0 && i < months - 1) { return 1; } } /** * Format date * * @param String format * @param Number date * @return String */ function _formatDate(format, date) { function pad(input) { return (input + "").length === 2 ? input : "0" + input; } var i, len, f, output = [], dt = new Date(date); for (i = 0, len = format.length; i < len; i++) { f = format.charAt(i); switch (f) { case 'Y': output.push(dt.getFullYear()); break; case 'y': output.push((dt.getFullYear() + "").slice(-2)); break; case 'm': output.push(pad(dt.getMonth() + 1)); break; case 'n': output.push(dt.getMonth() + 1); break; case 'F': output.push(this.opts.monthNamesFull[dt.getMonth()]); break; case 'M': output.push(this.opts.monthNames[dt.getMonth()]); break; case 'd': output.push(pad(dt.getDate())); break; case 'j': output.push(dt.getDate()); break; case 'D': output.push(this.opts.dayNamesFull[dt.getDay()].slice(0, 3)); break; case 'l': output.push(this.opts.dayNamesFull[dt.getDay()]); break; default: output.push(f); } } return output.join(""); } Calendar.prototype = { /** * @return Instance of calendar */ init: function () { var self = this, i = 0, attrname, body = d.getElementsByTagName("body")[0], div = d.createElement('div'); self.id = Math.floor(Math.random() * 9999999); self.element = d.getElementById(self.opts.element); if (!self.element) { return; } div.setAttribute('id', ['bcal-container', self.id].join('-')); Calendar.Util.addClass(div, 'bcal-container'); if (!self.opts.inline) { div.style.display = 'none'; div.style.position = 'absolute'; Calendar.Util.addEvent(self.element, 'focus', function (e) { if (self.isOpen) { self.close(); } else { self.open(); } }); Calendar.Util.addEvent(self.element, 'blur', function (e) { if (self.isOpen && !self.focus) { self.close(); } }); Calendar.Util.addEvent(self.element, 'keydown', function (e) { var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; switch (key) { case 9: //Tab self.close(); break; case 27: //Escape self.close(); break; } }); Calendar.Util.addEvent(document, "mousedown", function (e) { var target = Calendar.Util.getEventTarget(e); if (Calendar.Util.hasClass(target, "bcal-container") || Calendar.Util.hasClass(target, "bcal-table") || Calendar.Util.hasClass(target, "bcal-date") || Calendar.Util.hasClass(target, "bcal-today") || Calendar.Util.hasClass(target, "bcal-empty") || Calendar.Util.hasClass(target, "bcal-selected") || Calendar.Util.hasClass(target, "bcal-week") || Calendar.Util.hasClass(target, "bcal-nav") || Calendar.Util.hasClass(target, "bcal-navi") || Calendar.Util.hasClass(target, "bcal-month") || Calendar.Util.hasClass(target, "bcal-wday") || Calendar.Util.hasClass(target, "bcal-wnum") || Calendar.Util.hasClass(target.parentNode, "bcal-container") || Calendar.Util.hasClass(target.parentNode, "bcal-table")) { } else { self.close(); } }); body.appendChild(div); } else { self.element.appendChild(div); } self.container = div; var y = self.opts.year, m = self.opts.month; for (i = 0; i < self.opts.months; i++) { self.draw(y, m + i, getIndex(i, self.opts.months)); } return self; }, /** * @param String format * @param Number date * @return String */ formatDate: function () { return _formatDate.apply(this, arguments); }, /** * @param Number year * @param Number month * @param Number index (0 - without navigation, 1 - prev navigation, 2 - next navigation, 3 - prev and next navigation) * @param Number id */ draw: function (year, month, index, id) { var self = this, autoId = typeof id === 'undefined' ? Math.floor(Math.random() * 9999999) : id, firstOfMonth = new Date(year, month, 1), daysInMonth = new Date(year, month + 1, 0).getDate(), startDay = firstOfMonth.getUTCDay(), first = firstOfMonth.getDay(), i, day, date, rows = 0, cols = self.opts.weekNumbers ? 8 : 7, table = d.createElement('table'), thead = d.createElement('thead'), tbody = d.createElement('tbody'), row, cell, text, a, b, jsdate, current, s_arr, si, slen; row = d.createElement('tr'); cell = d.createElement('th'); if (index === 1 || index === 3) { Calendar.Util.addEvent(cell, 'click', function (e) { self.container.innerHTML = ''; for (i = 0; i < self.opts.months; i++) { self.draw(year, month - self.opts.months + i, getIndex(i, self.opts.months)); } }); cell.style.cursor = 'pointer'; Calendar.Util.addClass(cell, "bcal-nav"); text = d.createTextNode('<'); cell.appendChild(text); } else { Calendar.Util.addClass(cell, "bcal-navi"); } row.appendChild(cell); cell = d.createElement('th'); cell.colSpan = (cols === 7) ? 5 : 6; Calendar.Util.addClass(cell, "bcal-month"); cell.appendChild(d.createTextNode(self.opts.monthNamesFull[firstOfMonth.getMonth()] + ' ' + firstOfMonth.getFullYear())); row.appendChild(cell); cell = d.createElement('th'); if (index === 2 || index === 3) { cell.style.cursor = 'pointer'; Calendar.Util.addClass(cell, "bcal-nav"); text = d.createTextNode('>'); Calendar.Util.addEvent(cell, 'click', function (e) { self.container.innerHTML = ''; for (i = 0; i < self.opts.months; i++) { self.draw(year, month + i + 1, getIndex(i, self.opts.months)); } }); cell.appendChild(text); } else { Calendar.Util.addClass(cell, "bcal-navi"); } row.appendChild(cell); thead.appendChild(row); row = d.createElement('tr'); if (self.opts.weekNumbers) { cell = d.createElement('th'); cell.appendChild(d.createTextNode('wk')); Calendar.Util.addClass(cell, "bcal-wnum"); row.appendChild(cell); } for (i = 0; i < 7; i++) { cell = d.createElement('th'); text = d.createTextNode(self.opts.dayNames[(self.opts.startDay + i) % 7]); Calendar.Util.addClass(cell, "bcal-wday"); cell.appendChild(text); row.appendChild(cell); } thead.appendChild(row); table.appendChild(thead); day = self.opts.startDay + 1 - first; while (day > 1) { 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); //alert(a); b = new Date(a.getFullYear(), 0, 4); cell.appendChild(d.createTextNode(1 + Math.round((a - b) / 864e5 / 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); var hoy = new Date(); var minReserva = new Date(hoy.getTime() + (1 * 24 * 3600 * 1000)); //alert(minReserva); //if (current < minReserva){ // Calendar.Util.addClass(cell, 'bcal-past'); // } if (self.opts.disablePast === true && current < minReserva) { 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; si < slen; si++) { Calendar.Util.removeClass(s_arr[si], 'bcal-selected'); } Calendar.Util.addClass(cell, 'bcal-selected'); var ts = parseInt(cell.getAttribute('bcal-date'), 10); if (self.opts.element && !self.opts.inline) { self.close(); self.element.value = self.formatDate(self.opts.dateFormat, ts); } self.opts.onSelect.apply(self, [self.element, self.formatDate(self.opts.dateFormat, ts), ts, cell]); }; })(self, cell)); } } else { Calendar.Util.addClass(cell, 'bcal-empty'); } row.appendChild(cell); tbody.appendChild(row); day++; } rows++; } if (rows === 5) { tbody.appendChild(emptyRow(self.opts.weekNumbers)); } else if (rows === 4) { tbody.appendChild(emptyRow(self.opts.weekNumbers)); tbody.appendChild(emptyRow(self.opts.weekNumbers)); } Calendar.Util.addClass(table, 'bcal-table'); table.setAttribute('id', ['bcal-table', autoId].join('-')); table.appendChild(tbody); Calendar.Util.addEvent(table, 'click', function (e) { self.focus = true; }); var tbl = d.getElementById(['bcal-table', autoId].join('-')); if (tbl) { self.container.removeChild(tbl); } self.container.appendChild(table); }, /** * @return Instance of calendar */ open: function () { var self = this, pos = findPos(self.element), result; result = self.opts.onBeforeOpen.apply(self, []); if (result === false) { return self; } self.container.style.top = (pos[1] + self.element.offsetHeight) + 'px'; self.container.style.left = pos[0] + 'px'; self.container.style.display = ''; self.opts.onOpen.apply(self, [self.element]); self.isOpen = true; self.focus = true; return self; }, /** * @return Instance of calendar */ close: function () { var self = this, result; result = self.opts.onBeforeClose.apply(self, []); if (result === false) { return self; } self.container.style.display = 'none'; self.opts.onClose.apply(self, []); self.isOpen = false; self.focus = false; return self; } }; return (window.Calendar = Calendar); })(window); /* * OverlayJS v1.0 * * Copyright 2011, Dimitar Ivanov (http://www.bulgaria-web-developers.com/projects/javascript/overlay/) * 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: Sun Sep 25 20:54:10 2011 +0300 */ (function(window,undefined){var document=window.document,prefix="ojs-";function getViewport(){var width,height;if(typeof window.innerWidth!=="undefined"){width=window.innerWidth;height=window.innerHeight}else{if(typeof document.documentElement!=="undefined"&&typeof document.documentElement.clientWidth!=="undefined"&&document.documentElement.clientWidth!==0){width=document.documentElement.clientWidth;height=document.documentElement.clientHeight}else{width=document.body.clientWidth;height=document.body.clientHeight}}return{width:parseInt(width,10),height:parseInt(height,10)}}function getScroll(){var scrollLeft,scrollTop;if(typeof window.pageYOffset!=="undefined"){scrollTop=window.pageYOffset;scrollLeft=window.pageXOffset}else{var B=document.body,D=document.documentElement;D=(D.clientHeight)?D:B;scrollTop=D.scrollTop;scrollLeft=D.scrollLeft}return{top:parseInt(scrollTop,10),left:parseInt(scrollLeft,10)}}function getDocHeight(){return Math.max(Math.max(document.body.scrollHeight,document.documentElement.scrollHeight),Math.max(document.body.offsetHeight,document.documentElement.offsetHeight),Math.max(document.body.clientHeight,document.documentElement.clientHeight))}function getDocWidth(){return Math.max(Math.max(document.body.scrollWidth,document.documentElement.scrollWidth),Math.max(document.body.offsetWidth,document.documentElement.offsetWidth),Math.max(document.body.clientWidth,document.documentElement.clientWidth))}function addEvent(obj,type,fn){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.addEventListener(type,fn,false)}}function OverlayJS(options){if(!(this instanceof OverlayJS)){return new OverlayJS(options)}this.curInst=null;this.data={};this.id=Math.floor(Math.random()*999999);this.version="1.0";this.isOpen=false;this.opts={selector:"",width:320,height:240,autoOpen:false,modal:false,header:true,footer:true,buttons:{Ok:function(){this.close()}},onBeforeOpen:function(){},onOpen:function(){},onBeforeClose:function(){},onClose:function(){}};for(var attr in options){if(options.hasOwnProperty(attr)){this.opts[attr]=options[attr]}}this._attachOverlay();return this}OverlayJS.prototype={_attachOverlay:function(){var self=this,body=document.getElementsByTagName("body")[0],elem=document.getElementById(self.opts.selector),container=document.createElement("div"),wrapper=document.createElement("div"),holder=document.createElement("div"),header=document.createElement("div"),exit=document.createElement("span"),content=document.createElement("div"),footer=document.createElement("div"),viewport=getViewport(),scroller=getScroll(),btn;if(!self.opts.selector||!elem){return }container.id=[prefix,"container-",self.id].join("");wrapper.id=[prefix,"wrapper-",self.id].join("");holder.id=[prefix,"holder-",self.id].join("");header.id=[prefix,"header-",self.id].join("");content.id=[prefix,"content-",self.id].join("");footer.id=[prefix,"footer-",self.id].join("");container.className=[prefix,"container"].join("");wrapper.className=[prefix,"wrapper"].join("");holder.className=[prefix,"holder"].join("");header.className=[prefix,"header"].join("");content.className=[prefix,"content"].join("");footer.className=[prefix,"footer"].join("");exit.className=[prefix,"close"].join("");header.innerHTML=elem.title;content.innerHTML=elem.innerHTML;for(var key in self.opts.buttons){if(self.opts.buttons.hasOwnProperty(key)){btn=document.createElement("input");btn.type="button";btn.value=key;btn.onclick=function(k){return function(){self.opts.buttons[k].apply(self,[this])}}(key);footer.appendChild(btn)}}exit.onclick=function(){self.close()};header.appendChild(exit);holder.style.width=self.opts.width+"px";holder.style.height=self.opts.height+"px";holder.style.webkitTransitionProperty="top, left";holder.style.webkitTransitionDuration="1000ms";if(self.opts.header){holder.appendChild(header)}else{content.style.top=0}holder.appendChild(content);if(self.opts.footer){holder.appendChild(footer)}else{content.style.bottom=0}container.appendChild(wrapper);container.appendChild(holder);body.appendChild(container);addEvent(window,"resize",function(){self._onWindowResize.call(self)});addEvent(window,"scroll",function(){self._onWindowResize.call(self)});addEvent(document,"keydown",function(e){var key=e.charCode?e.charCode:e.keyCode?e.keyCode:0;if(key===27){if(self.curInst){self.curInst.close()}}});self.content=content;self.holder=holder;self.wrapper=wrapper;self.container=container;if(self.opts.autoOpen){self.open()}return self},_setPosition:function(){var hs=this.holder.style,scroller=getScroll(),viewport=getViewport();hs.top=[scroller.top+(viewport.height-this.opts.height)/2,"px"].join("");hs.left=[scroller.left+(viewport.width-this.opts.width)/2,"px"].join("")},_setSize:function(){var ws=this.wrapper.style;ws.height=[getDocHeight(),"px"].join("");ws.width=[getDocWidth(),"px"].join("")},_onWindowResize:function(){if(!this.isOpen){return }this._setPosition();this._setSize()},setData:function(key,value){this.data[key]=value;return this},getData:function(key){return this.data[key]},open:function(){var self=this,result=self.opts.onBeforeOpen.call(self);self.curInst=self;if(result===false){return self}self._setSize();self._setPosition();self.wrapper.style.display=self.opts.modal?"block":"none";self.container.style.display="block";self.opts.onOpen.call(self);self.isOpen=true;return self},close:function(){var self=this,result=self.opts.onBeforeClose.call(self);if(result===false){return self}self.container.style.display="none";self.opts.onClose.call(self);self.curInst=null;self.isOpen=false;return self}};return(window.OverlayJS=OverlayJS)})(window); /** * Version: 1.0 Alpha-1 * Build Date: 13-Nov-2007 * Copyright (c) 2006-2007, Coolite Inc. (http://www.coolite.com/). All rights reserved. * License: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/. * Website: http://www.datejs.com/ or http://www.coolite.com/datejs/ */ Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|after|from)/i,subtract:/^(\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; Date.getMonthNumberFromName=function(name){var n=Date.CultureInfo.monthNames,m=Date.CultureInfo.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;idate)?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', 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: { "Close": function () { this.close(); } } }); }, bindMenu: function () { var self = this, breadcrumbsEl = JABB.Utils.getElementsByClass("crBreadcrumbsEl", 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); } }, 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: "j F Y", dateFormat: "Y-m-d", disablePast: true, onSelect: function () { reCalc.call(self); } }), dateTo = new Calendar({ element: "cr_date_to", //dateFormat: "j F Y", dateFormat: "Y-m-d", disablePast: true, onSelect: function () { //reCalc2.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"); self.promoCode = returnLoc = document.getElementById("promoCode"); function leadingZero(value){ if(value < 10){ return "0" + value.toString(); } return value.toString(); } function reCalc() { var from = Date.parse(this.elFrom.value + " " + this.elHFrom.value + ":" + this.elMFrom.value), to = Date.parse(this.elTo.value + " " + this.elHTo.value + ":" + this.elMTo.value), nd = document.getElementById("crNumDays"), days; //alert(days); if (from !== null && to !== null) { //days = Math.ceil((to - from) / 86400000); days = Math.ceil((to - from) / 86400000); if (days==0)days=1; //alert(days); //alert(Date.parse(this.elFrom.value)); var expire=new Date(self.elFrom.value); fechaIni=new Date(expire.getTime()+(0 * 24 * 3600 * 1000)); strFechaNova=fechaIni.getFullYear()+"-"+leadingZero(fechaIni.getMonth()+1)+"-"+leadingZero(fechaIni.getDate()); //strFechaNova= //alert(days); if(days<1){ //alert("nok-minimo 3 dias"); //self.elTo.value=strFechaNova.format("yy-mm-dd"); document.getElementById("crNumDays").style.visibility='hidden'; }else{ document.getElementById("crNumDays").style.visibility='hidden'; } //self.elTo.value=strFechaNova; //new Date(today.getTime() + (7 * 24 * 3600 * 1000)) //alert(self.elFrom.value+3); //var fechaini = new Date(); //fechaIni=this.elFrom.value ; //alert(fechaIni); if (days > 0) { //nd.lastChild.innerHTML = days; //nd.style.display = "visible"; } 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 self = this, btnContinue = JABB.Utils.getElementsByClass("crBtnContinue", self.container, "button"), i, len = btnContinue.length; 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(); }; }(self); } }, 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"); 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 (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: 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(); }); }, 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 = "small"; } 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); }, 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(); }); }, loadCheckout: function () { var self = this; JABB.Ajax.sendRequest(self.opts.folder + "index.php?controller=Front&action=loadCheckout", function (req) { self.container.innerHTML = req.responseText; self.bindCheckout(); self.bindMenu(); }); }, 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['frmTpv'].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; }, validateSearch: function (btn) { var frm = btn.form, df = frm.date_from, dt = frm.date_to, f, t; if (df && dt) { f = df.value.split("-"), t = dt.value.split("-"); if (new Date(f[0], parseInt(f[1], 10) - 1, f[2]).getTime() <= new Date(t[0], parseInt(t[1], 10) - 1, t[2]).getTime()) { return true; //alert("true"); } } this.errorHandler("\n - " + this.opts.validation.error_dates); //alert("false"); 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);