/* Jetstar Project Specific */
var today = new Date();
if(!window.ND.jetstar){window.ND.jetstar={}}

ND.jetstar = {
	initOverLabels : function(){
		if (!document.getElementById) return;  	
		var labels, id, field;
		labels = document.getElementsByTagName('label');
		for (var i=0; i < labels.length; i++) {
		    if (labels[i].className == 'overlabel') {
				id = labels[i].htmlFor || labels[i].getAttribute('for');
				if (!id || !(field = document.getElementById(id))){continue;}
				labels[i].className = 'overlabel-apply';		
				if (field.value !== ''){ND.jetstar.hideLabel(field.getAttribute('id'), true);}
				field.onfocus = function(){ND.jetstar.hideLabel(this.getAttribute('id'), true);};
				field.onblur = function(){
					if(this.value === ''){
						ND.jetstar.hideLabel(this.getAttribute('id'), false);
					}
				};		
				labels[i].onclick = function(){
					var id, field;
					id = this.getAttribute('for');
					if(id && (field = document.getElementById(id))) {
						field.focus();
					}
				};
			}
		}
	},
	hideLabel : function(field_id, hide){
		var field_for;
		var labels = document.getElementsByTagName('label');
		for (var i = 0; i < labels.length; i++) {
			field_for = labels[i].htmlFor || labels[i].getAttribute('for');
			if (field_for == field_id && hasClass(labels[i],"overlabel-apply")) {
				labels[i].style.textIndent = (hide) ? '-9999px' : '0px';
				return true;
			}
		}
	}
};

// Custom onclick events
ND.anchors.add("terms-cond", function(){
	toggleClass(this.parentNode.parentNode.getElementsByTagName("dd")[0],"over");
	this.onblur = function(){
		// removeClass(this.parentNode.parentNode.getElementsByTagName("dd")[0],"over");
		this.onblur = function(){};
	}
	return false;
})

ND.anchors.add("gallery-item", function(){
	var image = document.getElementById('gallery-large');
	if(image.src != this.href) {
		image.src = "";
		image.style.visibility = "hidden";
		if(!hasClass(image.parentNode, "loading"))
			toggleClass(image.parentNode, "loading");
		var preload = /webkit/i.test(navigator.userAgent) ? document.createElement('img') : new Image();
		preload.onload = function(){
			var image = document.getElementById('gallery-large')
			image.src = this.src;
			image.style.visibility = "visible";
			removeClass(image.parentNode, "loading");
		}
		preload.src = this.href;
	}
	return false;
})

/** Only Scriptlets that depend on Jquery below here */
var ua = navigator.userAgent;
var msieVersion = (!/opera/i.test(ua) && /msie\s(\d*\.?\d)?/i.test(ua) ? parseFloat(ua.match(/msie\s(\d*\.?\d)?/i)[1]) : 100);
jQuery.browser.msieLessThan6 = (msieVersion < 6);

//Stop IE5.5 complaining about JS errors in jQuery
if(!jQuery.browser.msieLessThan6){

	// On Dom Load events, using Jquery. Not dependent.
	$(document).ready(ND.jetstar.initOverLabels);
	$(document).ready(function(){ND.anchors.init()});
	
	/*
	//Jet Mail Validation
	$(document).ready(function(){
		$('DIV.notice FORM').validate({
			errorContainer: $("DIV.notice DIV.errorBox"),
			errorLabelContainer: $("DIV.notice DIV.errorBox ul"),
			wrapper: "li",
			meta: "validate"
		});
	});


	$(document).ready(
		function(){
			var accordianHeaderComplete = function(){
				window._clickHead = window.setTimeout(function(){
					var el = $('.the-booking-controls');
					var a = $('A[rel=more-options]',el);
					if(a.hasClass("active")) {				
						a.removeClass("active")
						$('DIV.advanced', el).hide()
						$('#go-booking', el).removeClass("hidden");
					}
					window.clearTimeout(window._clickHead);
				},200);
			};
			
			if($('.the-booking-controls div.head').length > 1){
				$('.the-booking-controls').addClass("three").Accordion({headerSelector:'div.head', headerCallback:accordianHeaderComplete, panelSelector:'div.apanel', activeClass:'active', hoverClass:'', panelHeight:265, speed:300});
			}
		}
	);
	*/
	
	/* Tabs */
	$(document).ready(function(){$('ul.tab-navigation').tabs();});
	
	/* Custom Drop down */
	$(document).ready(function(){
			$('DIV#selected-lang').click(function(e){
				var el = $('UL', this);
				if(el.css('display') == "none") {
					el.slideDown('fast');
				} else {
					el.slideUp('fast');
				}
	
				var target = e.target ? e.target : window.event.srcElement;
				if(target && !/^(a)$/i.test(target.nodeName))
					return false;
			});
			$(document).click(function(){
				if($('DIV#selected-lang UL').css('display') == "block")
					$('DIV#selected-lang UL').slideUp('fast');
			});
		}
	);
	
	ND.anchors.add("advanced-hotel", function(){
		$(this).toggleClass("active")
		$('DIV.advanced').animate({height:'toggle'}, "slow");
		return false;
	})
	
	//Date Picker	
	$(document).ready(function()
	{
		//12 months of availablitiy
		var startDate = new Date();
		var endDate = (new Date()).addDays(startDate.isLeapYear() ? 366 : 365);
	
		//Update the date in the Multi Select boxes
		var updateSelects = function (link,selectedDate){
			var d = selectedDate.getDate();
			var m = selectedDate.getMonth()+1;
			var y = selectedDate.getFullYear();
			
			if($(link).getMember("day").attr("id").indexOf("dep") == 0)
			{
				$("#checkout1-day-ret").val($(link).getMember("day").val());
			}
			
			if($(link).getMember("month").attr("id").indexOf("dep") == 0)
			{
				$("#checkout1-month-ret").val($(link).getMember("month").val());
			}
			
			$(link).getMember("day").setSelected(d);
			$(link).getMember("month").setSelected((m > 9 ? m : "0" + m) +  "" + y);
			
			//$(link).getMember("day").val(d);
			//$(link).getMember("month").val((m > 9 ? m : "0" + m) + "" + y)
		};
		
		var setSelected = function(element, value){
			var opts = element.options;
			for(i=0; i < opts.length; i++) {
				if(opts[i].value == value)
					return element.selectedIndex = i;
			}
		}
		
		//Create a valid date from the Select's
		var createDate = function(element){
			var d = $(element).getMember("day").val();
			var m = $(element).getMember("month").val().substring(0,2)-1;
			var y = $(element).getMember("month").val().substring(2,6);
			var test = new Date(y,m,1);
			var newDate = new Date(y,m,(d > test.getDaysInMonth() ? test.getDaysInMonth() : d))
			return newDate;// < endDate ? (newDate > startDate ? newDate : startDate) : endDate;
		}
	
		//Instance jCalender Family member controls.
		jQuery.fn.getMember = jQuery.jCalenderMember = function(type){
			return jQuery('#'+this.attr('id').replace(/day|month|link/, type));			
		};

		//New function to set the selected value of the select box. Doesn't support Multi
		jQuery.fn.setSelected = function(value){
			return this.each(function(){
				var opts = this.options;
				for(i=0; i < opts.length; i++) {
					if(opts[i].value == value)
						return this.selectedIndex = i;
				}
			});
		};
	
		//Instance jCalender associated controls.
		//jQuery.fn.getAssociate = jQuery.jCalenderAssociate = function(type){
		//	return jQuery('#'+this.attr('id').replace(/-dep|-ret/, type));
		//};
	
		// initialise the "Select date" link
		$('A.date-picker')
			.datePicker({createButton:false,endDate:endDate.asString()})
			.bind('click',function(){
					//updateSelects(this, $(this).getMember("link").dpGetSelected()[0]);
					$(this).dpDisplay();
					return false;
				})
			.bind('dateSelected',function(e, selectedDate, $td, state){
					updateSelects(this, selectedDate);
				})
			.bind('dpClosed',function(e, selected){
					updateSelects(this, selected[0]);
				});
	
		// listen for when the selects are changed and update the picker
		$('SELECT.day, SELECT.month')
			.bind('change',function(){
					//Set the jCalender when user changes select
					$(this).getMember("link").dpSetSelected(createDate(this).asString());
					//Validate the date choose in the selects
					updateSelects(this, createDate(this));
				})
			.each(function(nr){
					//init the controls
					setSelected(document.getElementById($(this).getMember("day").attr("id")), today.getDate())
					//$(this).getMember("day").val(today.getDate())
					$(this).getMember("link").dpSetSelected(createDate(this).asString());
				});
				
		// Update check-out when check-in changes
		/*$('SELECT.day')
			.bind('change',function(){
				alert("hi");
			});*/
	});

	//More options
	ND.anchors.add("more-options", function(){
		$(this).toggleClass("active")
		window.setTimeout(function(){$('#go-booking').toggleClass("hidden");},300);
		$('DIV.advanced').toggle("slow");
		if($(this).hasClass("active"))
			$('.the-booking-controls').Accordion({resizePanel:340})
		else
			$('.the-booking-controls').Accordion({resizePanel:"default"})
		return false;
	})

	//Booking Now Functions
	$(document).ready(function(){
		var returningOptions = function(ele){
			if(ele.value == 1 && ele.checked == true){
				$('#return1-day-ret').parent().hide("fast");
			} else {
				$('#return1-day-ret').parent().show("fast");
			}
		};
/*
		$('FORM.booking').validate();
		$('FORM.booking INPUT.val-returning')
			.bind('click',function(){
				returningOptions(this) ;
			})
			.each(function(){
				returningOptions(this);
			});
*/
	});

}

//Navigation Menu
$(document).ready(function(){
	$("DIV.navigation UL LI").hover(
		function()
		{
			$(this).addClass("hover");
		},
		function()
		{
			$(this).removeClass("hover");
		}
	);
});
