var mh_frame_domain = document.domain; document.domain = mh_frame_domain; var mh_domain = 'http://affiliate.reservationsglobal.com/'; var mh = mh || {}; var mha = window.mha = { affiliate_id:null, index: 0, scripts: [ 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', mh_domain + 'js/affiliate/cache/', mh_domain + 'js/jq/jquery-ui.datepick.min.js' ], styles: [ mh_domain + 'styles/theme/ui.theme.css', mh_domain + 'styles/theme/ui.datepicker.css', mh_domain + 'styles/theme/ui.core.css' ], addScripts: function(){ this.scripts[1]+= (this.affiliate_id + '.js'); if (typeof(jQuery)!='undefined'){ this.scripts.shift(); this.addScript(0); } else { this.addScript(0); } }, addStyles: function(){ this.hideForm(); this.addStyle(0); this.addStyle(1); this.addStyle(2); }, hideForm:function(){ var head = document.getElementsByTagName('head')[0], style = document.createElement('style'), rules = document.createTextNode('#rg_reservation_widget {visibility:hidden;}'); style.type = 'text/css'; if(style.styleSheet) style.styleSheet.cssText = rules.nodeValue; else style.appendChild(rules); head.appendChild(style); }, addStyle: function(index){ var loc = this.styles[index]; this.addStyleScript(loc); }, addStyleScript: function(url) { var th = document.getElementsByTagName('head')[0]; var s = document.createElement('link'); s.setAttribute('type','text/css'); s.setAttribute('rel','stylesheet'); s.setAttribute('href',url); th.appendChild(s); }, addScript: function(index){ var th = document.getElementsByTagName('head')[0]; var loc = this.scripts[index]; this.index = index; var s = document.createElement('script'); s.setAttribute('type','text/javascript'); s.setAttribute('src',loc); var self = this; if(s.addEventListener) { s.addEventListener("load", this.callback, false); } else if(s.attachEvent) { s.attachEvent("onreadystatechange", function(e) { self.callbackIE(self.callback); }); } th.appendChild(s); }, callback: function(){ var index = mha.index; if(index == 0 && typeof(jQuery) != 'undefined') { jQuery.noConflict(); } index++; if (mha.scripts.length==index){ (function($){ mha.init($); })(jQuery); } else { mha.addScript(index); } }, callbackIE: function(callback) { var target = window.event.srcElement; if(target.readyState == "loaded" || target.readyState == 'complete') { callback.call(target); } }, init: function($){ $.extend(mha,{ countries: mh.countries, picker: null, getWidget: function(){ var self = this; var url = mh_domain + "affiliate/widget/affiliate_id/" + this.affiliate_id + '/domain/' + encodeURIComponent(mh_frame_domain) ; $.getJSON(url+"?jsonp_callback=?", function(data) { self.addStyleScript(data.style); $('#affiliate_widget').after(data.widget); self.setEvents(); $('#rg_reservation_widget').css({visibility:'visible'}); }); }, setEvents: function(){ this.searchFormDatepicker(); var self = this; var countrySelect = $("#rg_reservation_widget select[name='country']").change(function(e){ var value = $(this).children().eq(this.selectedIndex).val(); self.pickCountry(value,'',$("#rg_reservation_widget select[name='city']")); }); }, pickCountry: function(country,city,select) { var cities = this.countries[country].sort(); var options = ''; for(var i in cities) { if(this.isNumeric(i)){ options += '' + cities[i] + ''; } } $(select).html(options); }, isNumeric: function(input) { return (input - 0) == input && input.length > 0; }, datePicker: function(handle,container,callback) { var self = this; $(container).datepicker({ dateFormat:'dd/mm/yy', changeFirstDay: false, minDate:0, onSelect: callback }).click(function(e){e.stopPropagation();}); $(handle).click(function(e){ e.stopPropagation(); self.picker = this; $(container).show().css({top:$(this).attr('offsetTop'),left:$(this).attr('offsetLeft'),zIndex:'1000',position:'absolute'}); }); $(document).click(function(e){ $(container).hide(); }); }, searchFormDatepicker: function() { var self = this; var select = function(date) { $('div#datepicker').hide(); var pick = $(self.picker); var arr= date.split('/'); form = $(self.picker).parents('form:first'); $("select[name='year']",form).val(parseInt(arr[2],10)); $("select[name='month']",form).val(parseInt(arr[1],10)); $("select[name='day']",form).val(parseInt(arr[0],10)); }; self.datePicker('#rg_reservation_widget .datepicker','div#datepicker',select); } }); this.getWidget(); } } mha.affiliate_id = document.getElementById('affiliate_widget').getAttribute('rel'); mha.addStyles(); mha.addScripts();