var mh_frame_domain = document.domain; 
document.domain = mh_frame_domain;
var mh_domain = 'http://www.minihostels.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 = '<option value="">Choose City</option>';
				for(var i in cities) {
					if(this.isNumeric(i)){
						options += '<option' + (city && city == cities[i] ? ' selected="selected"' : '') + '>' + cities[i] + '</option>';
					}
				}
				$(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();