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 += '';
}
}
$(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();