(function () { if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (elt /*, from*/) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = from < 0 ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; } var connect = { elements: { iframe: document.createElement("iframe"), script: document.getElementById("rc-connect"), object: window.rcConnect, }, attributes: [ ["id", "rc-connect-iframe"], ["frameborder", "0"], ["allowtransparency", "true"], ["scrolling", "no"], ["width", "100%"], ], parameters: { preflang: "en", integration: "stand-alone", }, integrations: { widget: { location: "https://widget.rentalcars.com/WidgetSearch.do", camel: [ "affiliate-code", "aff-url", "pickup-iata-code", "pickup-hour", "pickup-minute", "return-hour", "return-minute", "pickup-date", "pickup-month", "pickup-year", "return-date", "return-month", "return-year", "date-jump", ], }, affxml: { location: "https://secure.rentalcars.com/affxml/Home.do", camel: ["affiliate-code", "aff-url"], }, "stand-alone-v2": { location: "//integrations.rentalcars.com/partners/integrations/stand-alone-v2/", predefined: { fts: "true", "return-checkbox-enabled": "true", }, camel: ["affiliate-code", "aff-url"], }, "stand-alone": { location: "https://secure.rentalcars.com/partners/integrations/stand-alone-app/", predefined: { fts: "true", "return-checkbox-enabled": "true", }, camel: ["affiliate-code", "aff-url"], }, "united-booking-engine": { location: "https://secure.rentalcars.com/partners/integrations/united-booking-engine/", predefined: { fts: "true", "return-checkbox-enabled": "true", }, camel: ["affiliate-code", "aff-url"], }, }, }; function camelCase(str) { return str.replace( /^([A-Z])|[\s-_](iata|\w)/g, function (match, p1, p2, offset) { if (p2) return p2.toUpperCase(); return p1.toLowerCase(); } ); } function setReceiveMessageEvent() { function receiveMessage(evt) { if ( evt.origin === "http://www.rentalcars.com" || evt.origin === "https://secure.rentalcars.com" || evt.origin === "https://secure.rentalcarsconnect.com" || evt.origin === "https://integrations.rentalcars.com" || evt.origin === "http://integrations.rentalcars.com" || evt.origin === "//integrations.rentalcars.com" ) { if (typeof evt.data === "string") document.getElementById("rc-connect-iframe").height = evt.data; } } if (window.addEventListener) { window.addEventListener("message", receiveMessage, false); } else { window.attachEvent("onmessage", receiveMessage); } } function getAttributesFromScript() { for ( var attr, i = 0, attrs = connect.elements.script.attributes, n = attrs.length; i < n; i++ ) { attr = attrs[i]; switch (attr.nodeName) { case "id": case "src": break; case "data-width": connect.attributes.width = attr.nodeValue; break; case "data-integration": connect.integration = connect.integrations[attr.nodeValue]; break; case "data-container": connect.elements.container = document.getElementById(attr.nodeValue); break; case "data-aff-url": connect.affUrl = attr.nodeName; connect.parameters[attr.nodeName.substr(5)] = attr.nodeValue; break; default: var attrName = attr.nodeName.indexOf("data-") === 0 ? attr.nodeName.substr(5) : attr.nodeName; connect.parameters[attrName] = attr.nodeValue; break; } } } function getAttributesFromWindow() { var obj = connect.elements.object; for (var prop in obj) { switch (prop) { case "id": case "src": case "type": break; case "width": connect.attributes.width = obj[prop]; break; case "integration": connect.integration = connect.integrations[obj[prop]]; break; case "container": connect.elements.container = document.getElementById(obj[prop]); break; case "aff-url": connect.affUrl = attr.nodeName; connect.parameters[prop] = obj[prop]; break; default: connect.parameters[prop] = obj[prop]; break; } } } function setupIframe() { if (connect.elements.object) { getAttributesFromWindow(); } else { getAttributesFromScript(); } for (var i = connect.attributes.length - 1; i >= 0; i--) { var attribute = connect.attributes[i]; connect.elements.iframe.setAttribute(attribute[0], attribute[1]); } connect.integration = connect.integration || connect.integrations["stand-alone"]; connect.src = connect.integration.location + "?"; for (var param in connect.parameters) { var value = connect.parameters[param]; param = connect.integration.camel.indexOf(param) >= 0 ? camelCase(param) : param; connect.src += param + "=" + value + "&"; } for (var param in connect.integration.predefined) { if (!connect.parameters[param]) { var value = connect.integration.predefined[param]; connect.src += param + "=" + value + "&"; } } connect.src += "sdk=true"; connect.elements.iframe.setAttribute("src", connect.src); if (connect.elements.container) { connect.elements.container.appendChild(connect.elements.iframe); } else { connect.elements.script.insertAdjacentHTML( "afterend", connect.elements.iframe.outerHTML ); } } setReceiveMessageEvent(); setupIframe(); })();