// JavaScript Document
var initSidePanel = function(){}





var initialPlayItr = -1;
var panelOpen = function(){
	var elm = document.getElementById('sidepanel');
	if(!elm) return;
	elm.style.left = '670px';
	
	var btn = document.getElementById('sidepanel_close');
	btn.style.display = 'block';
}
var panelClose = function(){
	var elm = document.getElementById('sidepanel');
	if(!elm) return;
	elm.style.left = '910px';
	
	var btn = document.getElementById('sidepanel_close');
	btn.style.display = 'none';
}

jQuery(function($){
				
	initSidePanel = function(){
	if(!jQuery) return ;
	// setup for #sidepanel
	var isPanelOpened = false;
	
	
	panelOpen = function(){
		if(isPanelOpened) return;
		
		isPanelOpened = true;
		// open panel
		$('#sidepanel').animate({'left':670}, 1500,'swing');	
		
		
		$('#sidepanel_close').animate({'opacity':1}, 1500,'swing');	
	}
	panelClose = function(){
		if(!isPanelOpened) return;
		
		isPanelOpened = !true;
		// open panel
		$('#sidepanel').animate({'left':910}, 1500,'swing',function(){
		
			itemUpdate(itemSelected,''); 
			itemSelected = null;
		});
	
		$('#sidepanel_close').animate({'opacity':0}, 1500,'swing');	
		
		try{
			hideCalendar();
		}catch(err){}
	}
	
	var panelToggle = function(){
		if(!isPanelOpened){
			// open panel
			panelOpen();
		}else{
			panelClose();
		}
	}
	
	// setup for #sidepanel 
	var itemSelected = null;
	
	var itemMouseOver = function(){
		if(itemSelected!=this)
			itemUpdate(this,'hover'); 
	}
	var itemMouseOut = function(){
		if(itemSelected!=this)
			itemUpdate(this,''); 
	}
	var itemClick = function(){
		if(itemSelected == this){
			
			$('#sidepanel_booking .warning-bubble').hide();
			panelClose();
			return;
		}
		if(itemSelected!=null){
			itemUpdate(itemSelected,''); 
		}
		itemSelected = this;
		itemUpdate(this,'selected'); 
		
			panelOpen();
		
		clearTimeout(initialPlayItr); // remove the initial timer if user click any menu item	
		
	}
	var itemUpdate = function(item, suffix)
	{
		if(item ==null)return;
		var _suffix = !suffix ? '' : '_'+suffix;
		var path = $(item).attr('imagepath');
		var key = $(item).attr('imagekey');
		var ext = $(item).attr('imageext');
		if(String(ext).length > 0) ext = '.'+ext;
		if(suffix == 'selected'){
			$('#sidepanel_'+key).show();
		}else{
			$('#sidepanel_'+key).hide();
		}		
		$(item).find('img')
			.attr('src', path +'spm_'+key + _suffix + ext )
			.ifixpng(); // for ie6, use jquery.ifixpng to fix png problem
	}
	
	$('<img src="./img/side_close_btn.gif" alt="Close Side-panel" id="sidepanel_close" style="position:absolute;z-index:1001;top:0;right:0px; cursor:pointer;" />').css('opacity',0).click(function(){panelClose();}).appendTo('#sidepanel .container');
	
	// scan for side menu item
	$('#sidepanel .menu_item').each( function(idx,item){
		var $img = $(item).find('img');
		var imgSrc = $img.attr('src');
		// if the file name started with "spm_"
		// then change the image with "_hover" between file name and file externsion
		// when mouse over
		var nodes = /^(.*\/)spm\_([a-zA-Z0-9]+)\.([a-zA-Z0-9]+)$/.exec(imgSrc);
		
		$(item)
			.attr('imagepath',nodes[1])
			.attr('imagekey',nodes[2])
			.attr('imageext',nodes[3])
			.hover ( itemMouseOver, itemMouseOut)
			.click ( itemClick);
		$img.ifixpng();
		
		if(nodes[2] == 'booking'){
			initialPlayItr = setTimeout(function(){$(item).click();}, 5000); // display after 5 seconds
		}
	});
	
	// if booking form doesn't exist
	// then stop the script to attach event handler
	var frm = document.getElementById('frmBooking');
	if(!frm) return;
	
	$('#sidepanel_booking .warning-bubble').click(function(){ $(this).hide() });
		
		/*
	$('.lh-datepicker').each(function(idx,row){
	
		var field = $(row).parent();
		var label = field.find('.empty-label');
		label.css('cursor','hand');
		
		var options = {
			defaultDate : +1,
			hideIfNoPrevNext:true,
			dateFormat: 'mm/dd/yy',
			beforeShow: function(){
				label.hide();
			},
			onClose: function(dateText,inst){
				if($(this).val().length < 1){
					label.show();
				}else{
					label.hide();
				}
				
				if(String(dateText).length<1) return;
				if(row == frm.DateIn){
					$(frm.DateOut).datepicker('option','minDate',dateText);	
				}else if(row == frm.DateOut){
					$(frm.DateIn).datepicker('option','maxDate',dateText);
				}
			}
		};
		
		var date = new Date();
		date.setTime( date.getTime() + 24 * 3600 * 1000 );
		var m = date.getMonth() +1;
		var d = date.getDate();
		options.minDate = (m<10? '0'+m : m)+'/'+(d<10? '0'+d: d)+'/'+date.getFullYear();
	
		//$(row).datepicker(options);
		
		if(field.val().length>0) label.hide();
		
		label.click(function(){
			label.hide();
			//$(row).datepicker('show');
		});
	});
	//*/
	initSidepanelCalendar();
	
	
	var txtDateIn = $('input[name=DateIn]');
	var txtDateOut = $('input[name=DateOut]');
	
	var hideBubble = function(){
		$('#sidepanel_booking .warning-bubble').hide();
	}
	
	var callDateIn = function(){
		popUpCalendar(txtDateIn[0], txtDateIn[0],  "mm/dd/yyyy", "strmonth","strday","stryear");
	}
	var callDateOut = function(){
		popUpCalendar(txtDateOut[0], txtDateOut[0],  "mm/dd/yyyy", "strmonth","strday","stryear");
	}
	
	txtDateIn.click(callDateIn);
	txtDateOut.click(callDateOut);
	
	var label = txtDateIn.parent().find('.empty-label');
	label.css('cursor','pointer');
	label.click(callDateIn);
	
	label = txtDateOut.parent().find('.empty-label');
	label.css('cursor','pointer');
	label.click(callDateOut);
	
	$('select[name=hotel]').click(hideBubble).change(hideBubble);
		
	$("#calendar_slider").scrollable({
			vertical: true,
			next : '#calendar #nextBtn',
			prev : '#calendar #prevBtn',
			items: 'ul'
	});
	
	$("#sidepanel_offer .limited-region-container").scrollable({
			vertical: true,
			next : '#sidepanel_offer .limited-region-down-button',
			prev : '#sidepanel_offer .limited-region-up-button',
			items: '#sidepanel_offer .limited-region-container'
	});
	//*/
	
	// fix the gradient-overlay in special offer bar
	var hack = {
		ltie7  : $.browser.msie && $.browser.version < 7,
		filter : function(src) {
			return "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='"+src+"')";
		}
	};
	
	if(hack.ltie7){
		
		$(document.body).addClass('ie6');
		
		$('.limited-region-top img,.limited-region-bottom img').each(function(){
			
			var base = $('base').attr('href');
			if (base) {
				// remove anything after the last '/'
				base = base.replace(/\/[^\/]+$/,'/');
			}
			var url = $(this).attr('src');
			if(base && url.search(/^(\/|http:)/i)) url = base + url;
			$(this).css({filter:hack.filter(url), width:240, height:17})
							.attr({src:$.ifixpng.getPixel()})
							.positionFix();
		});
	}
}
});
