var $ = $h.$;

(function($) {
	
	//--------------------------------------------------------------------------------
	// initialization
	
	var topImgCollapsed = false;
	var viewRendered = false;
  var firstClick = false;
	
	$h.bind('initialized', function(e){
		trace('e:initialized!!!');
		init();
	});
	
	function init() {
		trace("init()...");
		
		if(navigator.appVersion.indexOf("Win")!=-1){
			$('body').append('<link type="text/css" rel="stylesheet" href="/roomkey/css/roomkey_pc.css">');
		}
		if(navigator.userAgent.indexOf('Firefox/3.6')>=0) {
			$('body').append('<link type="text/css" rel="stylesheet" href="/roomkey/css/roomkey_ff36.css">');
		}
		
		$('#home-messaging-left-ourstory').show();
		
		topImgCollapsed = false;
		viewRendered = false;
		
		$('#home-messaging-left-ourstory').click(function(e){
			e.stopPropagation();// for IE
			e.preventDefault();
			var contents = $('#roomkey-lightbox-ourstory-wrapper').html();
			//contents = "<div>test<br>test<br>test<br>test<br>test</div>";// this creates the same result - so I'm sure it's not the content.
                        $h.components.Lightbox.createInstance(contents,{width:549});
		});
		
		$('#home-messaging-left-becomeapartner').click(function(e){
			e.stopPropagation();// for IE
			e.preventDefault();
			selectAboutUsSub('press');
		});
		
		//--------------------------------------------------------------------------------
		// setup press form
		var pressFormDefaults = {
			name:'Your Name',
			email:'Your Email',
			organization:'Your Organization',
			message:'Your Message'
		}
		$('#roomkey-email-form > input, #roomkey-email-form > textarea').each(function(){
			$(this).focus(function(){
				var id = $(this).attr('name');
				if($(this).val() == pressFormDefaults[id]){
					$(this).val('');
					$(this).addClass('pressFormFieldActive');
				}
			});
			$(this).bind('keydown',function(){
				trace("change...");
				if($(this).val().length>0){
					var formPassed = 0;
					if($('#roomkey-email-form > input[name="name"]').val() != pressFormDefaults['name'] && $('#roomkey-email-form > input[name="name"]').val().length>0){
						formPassed++;
					}
					if(validateEmail(document.forms["pressForm"]["email"].value)) formPassed++;
					/*
					if($('#roomkey-email-form > input[name="email"]').val() != pressFormDefaults['email'] && $('#roomkey-email-form > input[name="email"]').val().length>0){
						formPassed++;
					}
					*/
					if($('#roomkey-email-form > input[name="organization"]').val() != pressFormDefaults['organization'] && $('#roomkey-email-form > input[name="organization"]').val().length>0){
						formPassed++;
					}
					if($('#roomkey-email-form > textarea[name="message"]').val() != pressFormDefaults['message'] && $('#roomkey-email-form > textarea[name="message"]').val().length>0){
						formPassed++;
					}
					if(formPassed>=4){
						$('.roomkey_submit_btn').removeClass('disabled');
					}else{
						$('.roomkey_submit_btn').addClass('disabled');
					}
					if(formPassed>0){
						$('.roomkey_nevermind_btn').removeClass('disabled');
					}else{
						$('.roomkey_nevermind_btn').addClass('disabled');
					}
				}
			});
			$(this).blur(function(){
				var id = $(this).attr('name');
				if($(this).val().length<1){
					$(this).val(pressFormDefaults[id]);
					$(this).removeClass('pressFormFieldActive');
				}
				var formPassed = 0;
				if($('#roomkey-email-form > input[name="name"]').val() != pressFormDefaults['name']){
					formPassed++;
				}
				if(validateEmail(document.forms["pressForm"]["email"].value)) formPassed++;
				/*
				if($('#roomkey-email-form > input[name="email"]').val() != pressFormDefaults['email']){
					formPassed++;
				}
				*/
				if($('#roomkey-email-form > input[name="organization"]').val() != pressFormDefaults['organization']){
					formPassed++;
				}
				if($('#roomkey-email-form > textarea[name="message"]').val() != pressFormDefaults['message']){
					formPassed++;
				}
				if(formPassed>=4){
					$('.roomkey_submit_btn').removeClass('disabled');
				}else{
					$('.roomkey_submit_btn').addClass('disabled');
				}
				if(formPassed>0){
					$('.roomkey_nevermind_btn').removeClass('disabled');
				}else{
					$('.roomkey_nevermind_btn').addClass('disabled');
				}
			});
		});
		$('.roomkey_nevermind_btn a').click(function(e){
			e.stopPropagation();
			e.preventDefault();
			$('#roomkey-email-form > input, #roomkey-email-form > textarea').each(function(){
				var id = $(this).attr('name');
				$(this).val(pressFormDefaults[id]);
				$(this).removeClass('pressFormFieldActive');
			});
			$('.roomkey_submit_btn').addClass('disabled');
			$('.roomkey_nevermind_btn').addClass('disabled');
		});
		$('.roomkey_submit_btn a').click(function(e){
			e.stopPropagation();
			e.preventDefault();
			
		});
		function validateEmail(x){
			var atpos=x.indexOf("@");
			var dotpos=x.lastIndexOf(".");
			if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
				return false;
			}else{
				return true;
			}
		}
		
		//--------------------------------------------------------------------------------
		// About Us page nav
		$('.roomkey-about-thumb').each(function(){
			$(this).click(function(e){
				e.stopPropagation();
				e.preventDefault();
				selectAboutUsSub($(this).attr('data-uid'));
			});
		});
		
		//--------------------------------------------------------------------------------
		// About Us See Partner Brands button
		
		$('#roomkey-about #roomkey-aboutus-column1 p.roomkey-aboutus-seepartnerbrands').click(function(e){
			e.stopPropagation();
			e.preventDefault();
			selectAboutUsSub('partners');
		});

		//--------------------------------------------------------------------------------
		// About Us See FAQs button

		$('#roomkey-about #roomkey-aboutus-column1 p.roomkey-aboutus-seefaqs').click(function(e){
			e.stopPropagation();
			e.preventDefault();
			selectAboutUsSub('faqs');
		});

		//--------------------------------------------------------------------------------
		// FAQs toggle answers

    $('.roomkey-faqs-list li p').hide();
    $('.roomkey-faqs-list li > a').toggle(
      function(e){
        e.stopPropagation();
  			e.preventDefault();
        $(this).parent().find('p').slideDown();
        $(this).addClass('question-open');
    }, 
      function(e){
        e.stopPropagation();
  			e.preventDefault();
        $(this).parent().find('p').slideUp();
        $(this).removeClass('question-open');
    });

		//--------------------------------------------------------------------------------
		// About Us founder cards flip
		$('.roomkey-aboutus-foundercard-moreinfo-link').each(function(){
			$(this).click(function(e){
				e.stopPropagation();
				e.preventDefault();
				var uid = $(this).attr('data-uid');
				if(isIE()==true) {
					$('.aboutus-foundercard-front[data-uid="'+uid+'"]').hide();
					$('.aboutus-foundercard-back[data-uid="'+uid+'"]').show();
				}else{
					$('.roomkey-aboutus-foundercard[data-uid="'+uid+'"]').stop().rotate3Di('flip', 300, {sideChange: function(){
						$('.aboutus-foundercard-front[data-uid="'+uid+'"]').hide();
						$('.aboutus-foundercard-back[data-uid="'+uid+'"]').show();
					}});
				}
			});
		});
		$('.roomkey-aboutus-foundercard-back > a').each(function(){
			$(this).click(function(e){
				e.stopPropagation();
				e.preventDefault();
				var uid = $(this).attr('data-uid');
				if(isIE()==true) {
					$('.aboutus-foundercard-front[data-uid="'+uid+'"]').show();
					$('.aboutus-foundercard-back[data-uid="'+uid+'"]').hide();
				}else{
					$('.roomkey-aboutus-foundercard[data-uid="'+uid+'"]').stop().rotate3Di('unflip', 300, {sideChange: function(){
						$('.aboutus-foundercard-front[data-uid="'+uid+'"]').show();
						$('.aboutus-foundercard-back[data-uid="'+uid+'"]').hide();
					}});
				}
			});
		});
		
		$('#roomkey-header-logo').bind({
			click:function(e) {
				e.stopPropagation();
				e.preventDefault();
				resetRoomkey();
			}
		});
		
		$('#roomkey-topimage-wrapper > #roomkey-topimage').width($('#roomkey-topimage-wrapper > #roomkey-topimage > img').length * 1024);
		
		$('.roomkey-topimage-bullet').each(function(){
			$(this).click(function(e){
				e.stopPropagation();
				e.preventDefault();
				showHomeImg($(this).attr('data-id'));
			});
		});
		showHomeImg(Math.floor(Math.random()*$('#roomkey-topimage-wrapper > #roomkey-topimage > img').length), true);
		
		$h.bind('dateSliderDisplayed', function(){
			trace("e:dateSliderDisplayed");
			$('#roomkey-filtergroup-labels-label-Dates').show();
		});
		$h.bind('dateSliderHidden', function(){
			trace("e:dateSliderDisplayed");
			$('#roomkey-filtergroup-labels-label-Dates').hide();
		});
		
		$h.bind('searchFormDropdownRendered', function(e, dropdownElement){
			$(dropdownElement).hide().fadeIn();
		});
		
		$h.bind('searchStart', function(e, search){
			trace("searchStart:hash=="+window.location.hash);
			changeLayoutForSearch();
		});
		
		// footer
		
		// fade in logic for the SDK lightbox
		$h.bind('lightboxOpened', function(e, lightboxElement){
			trace('e:lightboxOpened');
			
                        if($('.copter-lightbox > .copter-wrapper > .copter-contents > .roomkey-lightbox-content').length>0){
				// this is Our Story on the home page
				
				$('.copter-lightbox .copter-wrapper').width('552px');

                                /*
                                $('.copter-lightbox > .copter-wrapper').css({
					'background-image':'url("/roomkey/images/roomkey_ourstory_closeBg.jpg")',
					'background-repeat':'no-repeat',
					'background-position':'503px 0'
				});
                                */
				/*
				$('.copter-lightbox > .copter-wrapper').css({
					width:549,
					position:'relative'
				});
				*/
				$('.copter-lightbox > .copter-wrapper > .copter-close-link').css('left',518);
				
			}else{
				// this is hotel details page
				
				// hide header logo
				$('#roomkey-header-logo').stop(true,false).delay(500).fadeOut(100);
				
				// show lightbox logo
				$('.copter-lightbox > .copter-wrapper').prepend('<div id="roomkey-logo-lightbox"><a href="#" onclick="resetRoomkey();"><span class="hidden">Room Key: Unlock your best stay</span></a></div>');
				
				$('.copter-lightbox .copter-wrapper').width('930px');
				$(lightboxElement).hide().fadeIn();
				
				$('#roomkey-logo-lightbox').bind({
					click:function(e){
						trace("lightbox logo clicked");
						e.stopPropagation();
						e.preventDefault();
						resetRoomkey();
					}
				});
				
			}
			
		});
		$h.bind('lightboxClosed', function(e){
			trace('e:lightboxClosed');
			$('#roomkey-header-logo').stop(true,false).fadeIn(100);
		});
		
		$h.bind('hashChange', function(e){
			trace("e:hashChange::"+window.location.hash);
			
			if(window.location.hash == '' || window.location.hash=='#') {
				topImgCollapsed = false;
				viewRendered = false;
				introAnimation();
			} else {
				changeLayoutForSearch();
			}
		});
		
		$h.bind('hotelCardsRendered', function(e, p){
			if($('.copter-searchresults > .copter-heading > .roomkey-result-calendar').length<1){
				$('.copter-searchresults > .copter-heading > .copter-heading-check-out').after('<span class="roomkey-result-calendar"><a href="#" onclick="return false;"><img src="/roomkey/images/searchresult_header_calendar.png"></a></span>');
				$('.roomkey-result-calendar').click(function(){
					$('.copter-searchresults > .copter-heading > .copter-heading-check-out').trigger('click');
				});
			}
			if($('.copter-searchengine > .copter-searchresults > .roomkey-filtergroup-labels').length==0){
				var labels = $('<div class="roomkey-filtergroup-labels"></div>');
				labels.append('<div class="roomkey-filtergroup-labels-label" id="roomkey-filtergroup-labels-label-Filter">Filter by:</div>');
				labels.append('<div class="roomkey-filtergroup-labels-label" id="roomkey-filtergroup-labels-label-SortBy">Sort by:</div>');
				labels.append('<div class="roomkey-filtergroup-labels-label" id="roomkey-filtergroup-labels-label-Dates">Dates:</div>');
				labels.append('<div class="clean"></div>');
				$('.copter-searchengine > .copter-searchresults > .copter-heading').after(labels);
				if($('.copter-searchresults .copter-dateslider').is(':visible')) {
					trace("date slider is visible")
					$('#roomkey-filtergroup-labels-label-Dates').show();
				} else {
					trace("date slider is not visible")
					$('#roomkey-filtergroup-labels-label-Dates').hide();
				}
			}
		});
		
		$('.copter-main-search .copter-searchform .copter-button').empty().append('<img src="/roomkey/images/spacer.gif">');
		
		$('.copter-form-field.copter-form-field-check-in > label').text('Check-in :)');
		
		$('.copter-form-field.copter-form-field-check-out > label').text('Check-out :(');
		
		$(document).click(function() { 
			$('.roomkey-searchform-stay-select-drop:visible').each(function(){
				$(this).fadeOut(250);
			});
		});
		
		$h.bind('secondaryFiltersDisplayed', function(e, filtersElement){
			$('.copter-filters-more-less').blur();
			$('.copter-filter-buttons').fadeOut(100);
			$('.copter-filters-global-apply').attr('data-roomkey-init-pos-y',$('.copter-filters-global-apply').css('top')).hide().css({
				top:-227
			});
			$('.copter-filters-secondary').stop(true, false).hide().slideDown(function(){
				$('.copter-filters-global-apply').show();
				$('.copter-filter-buttons').delay(250).fadeIn(150);
			});
			
			// change groups / brands label
			if(!($('.copter-filtercontrol.copter-filtercontrol-brand > .copter-brand-group-toggle').text().indexOf('(')>=0)) {
				$('.copter-filtercontrol.copter-filtercontrol-brand > .copter-brand-group-toggle').prepend('<span>(</span>').append('<span>)</span>');
			}
			
		});
		
		$h.bind('secondaryFiltersHidden', function(e, filtersElement){
			$('.copter-filters-more-less').blur();
			$('.copter-filter-buttons').fadeOut(100);
			$('.copter-filters-global-apply').hide().css({
				top:$('.copter-filters-global-apply').attr('data-roomkey-init-pos-y')
			});
			$('.copter-filters-secondary').stop(true, false).show().slideUp(function(){
				$('.copter-filters-global-apply').show();
				$('.copter-filter-buttons').delay(250).fadeIn(150);
			});
		});

		setTimeout(function(){
			// home drop downs

			var homeRooms = $('.copter-main-search .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-rooms span select').hide().customDropdown({
				idString:'roomkey-searchresult-searchform-rooms'
			});
			homeRooms.css({
				position:'absolute'
			});
			$('.copter-main-search .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-rooms span').append(homeRooms);

			var homeGuests = $('.copter-main-search .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-guests span select').hide().customDropdown({
				idString:'roomkey-searchresult-searchform-guests'
			});
			homeGuests.css({
				position:'absolute'
			});
			$('.copter-main-search .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-guests span').append(homeGuests);

			linkRoomToGuests(homeRooms, homeGuests);
		}, 100);
		
		$h.bind('locationSelected', function(e, locationName){
			// move the custom drop downs in front of the autofill drop down.
			$('.copter-searchform').css('z-index',3000);
		});
		
		$h.bind('sortRendered', function(e, sortElement){
			//$(sortElement).selectBox();
			var customSort = $('.copter-sortcontrol').customDropdown({
				idString:'roomkey-sortconrtol',
				changeFontsize:{
					smallSizeCSS:{
						'font-size':12,
						'letter-spacing':-1
					},
					normalSizeCSS:{
						'font-size':14,
						'letter-spacing':0
					}
				}
			});
			$('.copter-sort').append(customSort);
			$('.copter-sortcontrol').hide();
								
		});
		
		$h.bind('viewRendered', function(e){
			trace('e:viewRendered');
			//$('.copter-map').width(623);
			if($('.roomkey-view-option-mapicon').length==0){
				$('.copter-searchresults > .copter-view-count > .copter-view-links > .copter-viewcontrol > .copter-clear').before('<div class="roomkey-view-option-mapicon"></div>');
				$('.roomkey-view-option-mapicon').click(function(){
					$($('.copter-view-option')[2]).trigger('click');
				});
			}
			
			collapseSearchResultsSearchForm();
			
			setupHeaderLocation();
			
			viewRendered = true;
			showSearchResults();
			
		});
		
		$h.bind('viewChanged', function(e){
			//trace("e:viewChanged");
		});
		
		$h.bind('showSearchResults', function(e){
			trace('e:showSearchResults');
		});
		
		$h.bind('filtersRendered', function(e, filtersElement){
			trace('e:filtersRendered');
			setupHeaderLocation();
			
		});
		
		initAlternateStyles();
		if(window.location.hash!='') {
			trace('filter rendered');
			$('#FPO-recentsearch').hide();
			$('.roomkey-searchform-bg-wrapper').hide();
			changeLayoutForSearch((window.location.hash.indexOf('cardType=map')>=0));
			//changeLayoutForSearch();
		} else {
			introAnimation();
		}
		
	}//end of init()
	
	function collapseSearchResultsSearchForm(){
		trace("ollapseSearchResultsSearchForm()...");
		if($('.copter-heading-search-form').length==0){
			$('.copter-searchresults > .copter-heading').animate({
				height:28
			});
		}
	}
	
	function setupHeaderLocation(){	
		
		$('.copter-new-search').css('margin-top',0);
		
		// when the user click location/dates
		$('.copter-searchresults > .copter-heading > .copter-heading-location, .copter-searchresults > .copter-heading > .copter-heading-check-in, .copter-searchresults > .copter-heading > .copter-heading-check-out').click(function(){
			trace("location clicked");
			
			if(isIE7() || isIE8()) {
				$('.copter-new-search').css('margin-top',-10);
			}
			
			$('.copter-form-field.copter-form-field-check-in > label').text('Check-in :)');
			
			$('.copter-form-field.copter-form-field-check-out > label').text('Check-out :(');
			
			$('.copter-searchresults > .copter-heading').css({
				opacity:0
			}).animate({
				height:156,
				opacity:1
			});
			
			var rooms = $('.copter-heading .copter-heading-search-form .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-rooms span select').hide().customDropdown({
				idString:'roomkey-searchresult-searchform-rooms'
			});
			rooms.css({
				position:'absolute'
			});
			$('.copter-heading .copter-heading-search-form .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-rooms span').append(rooms);
			
			var guests = $('.copter-heading .copter-heading-search-form .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-guests span select').hide().customDropdown({
				idString:'roomkey-searchresult-searchform-guests'
			});
			guests.css({
				position:'absolute'
			});
			$('.copter-heading .copter-heading-search-form .copter-searchform .copter-search-form-stay .copter-form-fields .copter-form-field.copter-form-field-guests span').append(guests);
			
			linkRoomToGuests(rooms, guests);
			
		});
	}
	
	function showSearchResults(){
		trace('showSearchResults()...');
		var isStatic = $('#roomkey-about-wrapper').length > 0;
		
		collapseSearchResultsSearchForm();
		
		$('.roomkey-searchform').css({
			'margin-top':0,
			'margin-bottom':0
		});
		
		if(topImgCollapsed == false || viewRendered == false) {
			trace("showSearchResults():canceled")
			return;
		}
		
		if(isStatic){
			$('.roomkey-searchform').css({
				'top':0
			});
		}
		
		var twnDelay = 500;
		if(isIE()==true){
			$('.roomkey-searchform > .copter-searchengine').show();
		} else {
			$('.roomkey-searchform > .copter-searchengine').delay(twnDelay).animate({
				opacity:1
			},{
				duration:500
			});
			
		}
		if(isIE7()){
			$('.roomkey-searchform').css({
				'margin-bottom':38
			});
			$('.roomkey-about-thumbs-wrapper').css({
				'top':-12
			});
		}
		
		$('#roomkey-footer').delay(twnDelay).fadeIn();
		
		setupHeaderLocation();
	}
	
	//--------------------------------------------------------------------------------
	// Home page related
	
	function introAnimation() {
		trace("introAnimation()...");
		
		$('.roomkey-searchform').show();
		
		if(isIE()==true) {
			
			var isStatic = $('#roomkey-about-wrapper').length > 0;
			
			var twnDelay = 0;
			$('#roomkey-appwrapper').hide();
			$('body').css('display','block');
			$('#roomkey-appwrapper').stop(true, true).hide().fadeIn(1000);
			
			$('#roomkey-topimage-pg').css({
				top:(isStatic)?(340):(420)
			});
			
			twnDelay+=250;
			$('#roomkey-topimage-wrapper').stop(true, true).delay(twnDelay).animate({
				height:(isStatic)?(405):(489)
			},{
				duration:850,
				easing:'easeInOutQuart'
			});
			twnDelay+=50;
			$('.roomkey-searchform-bg-wrapper').stop(true, true).hide().delay(twnDelay+150).fadeIn();
			$('.roomkey-searchform').css({
				'margin-top':(isStatic)?(-52):(0),
				'margin-bottom':80
			});
			if(isStatic){
				$('.roomkey-searchform').css({
					'top':-52,
					'margin-top':0,
					'margin-bottom':38
				});
				$('.roomkey-about-thumbs-wrapper').css({
					'top':-12
				});
			}
			$('.roomkey-searchform > .copter-searchengine').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			
			$('.copter-autofill-wrapper').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			if(isIE()) {
				setTimeout(function(){
					$('.copter-autofill-wrapper').css('background','solid #fff');
				},1000);
			}
			
			twnDelay+=250;
			$('#roomkey-messaging').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			$('.roomkey-legal-wrapper').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			
			twnDelay += 250;
			$('#roomkey-footer').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			
			twnDelay+=500;
			$('#roomkey-topimage-pg').stop(true, true).hide().delay(twnDelay).fadeIn();
			
			$('#FPO-recentsearch').stop(true, true).hide().delay(twnDelay).fadeIn();
			
			if(isStatic){
				
				$('.roomkey-about-thumbs')
				.stop(true, false)
				.css({
					opacity:0
				})
				.delay(twnDelay).animate({
					top:0,
					opacity:1
				},{
					duration:850,
					easing:'easeInOutQuart'
				});
				
				selectAboutUsSub('aboutus');
				
			}
			
			$('.roomkey-legal-wrapper').hide().delay(twnDelay).slideDown();
			
		} else {
			
			var isStatic = $('#roomkey-about-wrapper').length > 0;
			
			var twnDelay = 0;
			$('#roomkey-appwrapper').hide();
			$('body').css('display','block');
			$('#roomkey-appwrapper').stop(true, true).hide().fadeIn(1000);
			
			$('#roomkey-topimage-pg').css({
				top:(isStatic)?(340):(420)
			});
			
			$('.roomkey-searchform-bg-wrapper').hide();
			
			twnDelay+=250;
			$('#roomkey-topimage-wrapper').height(144).stop(true, true).delay(twnDelay).animate({
				height:(isStatic)?(405):(489)
			},{
				duration:850,
				easing:'easeInOutQuart'
			});
			
			twnDelay+= 50;
			$('.roomkey-searchform-bg-wrapper').stop(true, true).hide().delay(twnDelay).fadeIn();
			
			twnDelay+=250;
			$('.roomkey-searchform').css({
				'margin-top':(isStatic)?(-52):(0),
				'margin-bottom':80
			});
			if(isStatic){
				$('.roomkey-searchform').css({
					'top':-52,
					'margin-top':0,
					'margin-bottom':38
				});
				$('.roomkey-about-thumbs-wrapper').css({
					'top':-12
				});
			}
			$('.roomkey-searchform').hide().delay(twnDelay).fadeIn(750);
			//$('.roomkey-searchform > .copter-searchengine').show();
			
			$('.copter-autofill-wrapper').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			if(isIE()) {
				setTimeout(function(){
					$('.copter-autofill-wrapper').css('background','solid #fff');
				},1000);
			}
			
			twnDelay+=250;
			$('#roomkey-messaging').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			$('.roomkey-legal-wrapper').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			
			twnDelay += 250;
			$('#roomkey-footer').stop(true, true).hide().delay(twnDelay).fadeIn(750);
			
			twnDelay+=500;
			$('#roomkey-topimage-pg').stop(true, true).hide().delay(twnDelay).fadeIn();
			
			$('#FPO-recentsearch').stop(true, true).hide().delay(twnDelay).fadeIn();
			
			if(isStatic){
				
				$('.roomkey-about-thumbs')
				.stop(true, false)
				.css({
					opacity:0
				})
				.delay(twnDelay).animate({
					top:0,
					opacity:1
				},{
					duration:850,
					easing:'easeInOutQuart'
				});
				
				selectAboutUsSub('aboutus');
				
			}
			
			$('.roomkey-legal-wrapper').hide().delay(twnDelay).fadeIn();
			
		}
		
	}
	
	function showHomeImg(id, instant){
		var durFactor = (instant==true)?(0):(1);
		$('.roomkey-topimage-bullet[data-id="'+id+'"]').css({
			'background-position':'0px -13px'
		});
		$('.roomkey-topimage-bullet[data-id!="'+id+'"]').css({
			'background-position':'0px 0px'
		});
		var pos = $('#roomkey-topimage').position();
		var dist = Math.abs((parseInt(id) * 1024) + pos.left);
		$('#roomkey-topimage').stop(true, false).animate({
			left:-(parseInt(id) * 1024)
		},{
			easing:'easeInOutQuart',
			duration:(Math.abs(dist)*.3 + 300) * durFactor
		});
		if(id==2){
			if($('#roomkey-header-logo').hasClass('roomkey-header-logo-dark')==false){
				$('#roomkey-header-logo').fadeOut(250,function(){
					$('#roomkey-header-logo').addClass('roomkey-header-logo-dark');
					$('#roomkey-header-logo').fadeIn(500);
				})
			}
		}else{
			if($('#roomkey-header-logo').hasClass('roomkey-header-logo-dark')==true){
				$('#roomkey-header-logo').fadeOut(250,function(){
					$('#roomkey-header-logo').removeClass('roomkey-header-logo-dark');
					$('#roomkey-header-logo').fadeIn(500);
				})
			}
		}
		$('#roomkey-topimage-wrapper').show();
	}
	
	//--------------------------------------------------------------------------------
	// Search results related
	
	
	function changeLayoutForSearch(instant){
		trace("changeLayoutForSearch():instant=="+instant);
		$('body').css('display','block');
		
		if(isIE()==true){
			$('#roomkey-footer').stop(true,true).hide();
			if(topImgCollapsed!=true) $('.roomkey-searchform > .copter-searchengine').css('opacity',0);
			$('#FPO-recentsearch').stop(true,true).hide();
			$('#roomkey-messaging').stop(true,true).hide();
			$('#FPO-recentsearch').stop(true,true).hide();
			$('#morethan4').stop(true,true).hide();
			$('.roomkey-searchform-bg-wrapper').stop(true,true).hide();
			$('#roomkey-topimage-pg').stop(true,true).hide();
			$('#roomkey-topimage-wrapper').stop(true, true).css({
				height:'154px'
			});
			topImgCollapsed = true;
			showSearchResults();
		}else{
			$('#roomkey-footer').stop(true,true).hide();
			//$('.roomkey-searchform').css('margin-bottom','0px');

			var twnDelay = 0;
			if(topImgCollapsed!=true) $('.roomkey-searchform > .copter-searchengine').css('opacity',0);
			$('#FPO-recentsearch').stop(true,true).hide();
			twnDelay+=20;
			$('#roomkey-messaging').stop(true,true).delay(twnDelay).fadeOut(100);
			$('.roomkey-legal-wrapper').stop(true,true).delay(twnDelay).fadeOut(100);
			twnDelay+=20;
			$('#FPO-recentsearch').stop(true,true).delay(twnDelay).fadeOut(100);
			twnDelay+=20;
			$('#morethan4').stop(true,true).delay(twnDelay).fadeOut(100);
			twnDelay+=20;
			$('.roomkey-searchform-bg-wrapper').stop(true,true).delay(twnDelay).fadeOut(250);
			twnDelay+=20;
			$('#roomkey-topimage-pg').stop(true,true).delay(twnDelay).fadeOut(250);
			twnDelay+=250;
			$('#roomkey-topimage-wrapper').stop(true, true).delay(twnDelay).animate({
				height:'154px'
			},{
				duration:750,
				easing:'easeInOutQuart',
				complete:function(){
					trace("topImgCollapseDone");
					topImgCollapsed = true;
					showSearchResults();
				}
			});
		}
		
	}
	
	//--------------------------------------------------------------------------------
	// static pages
	
	function selectAboutUsSub(pageId){
		trace('selectAboutUsSub():'+pageId);
		
		$('.roomkey-about-thumb[data-uid="'+pageId+'"]').addClass('selected');
		$('.roomkey-about-thumb[data-uid!="'+pageId+'"]').removeClass('selected');
		$('.roomkey-about-subcontent[data-uid!="'+pageId+'"]').fadeOut(250);
		$('.roomkey-about-subcontent[data-uid="'+pageId+'"]').delay(250).fadeIn(250);
	}
	
	//--------------------------------------------------------------------------------
	// form clearing
	
	function clickclear(thisfield, defaulttext) {
		if (thisfield.value === defaulttext) {
			thisfield.value = "";
		}
	}
		
	function clickrecall(thisfield, defaulttext) {
		if (thisfield.value === "") {
			thisfield.value = defaulttext;
		}
	}
	
	//--------------------------------------------------------------------------------
	// utilities
	
	function linkRoomToGuests(rooms, guests){
		rooms.bind('customDropdownEvent_valueChanged',function(e, obj){
			// update guests
			$(this).unbind('customDropdownEvent_valueChanged');
			var origGuests = guests.data('customDropdown-originalElements');
			setTimeout(function(){
				guests.remove();
				trace('num of guest items:'+$(origGuests).children('option').length);
				var newGuests = $(origGuests).customDropdown({
					idString:"roomkey-searchresult-searchform-guests2"
				});
				newGuests.css({
					position:'absolute'
				});
				$(origGuests).hide().parent().append(newGuests);
				linkRoomToGuests(rooms, newGuests);
			},150);
			
		});
	}
	
	function resetRoomkey(){
		trace("resetRoomkey():href=="+window.location.href);
		if(window.location.href.indexOf('about.html')>=0 || window.location.href.indexOf('termsofuse.html')>=0 || window.location.href.indexOf('privacystatement.html')>=0){
			$('#roomkey-appwrapper').fadeOut(250,function() {
				window.location.href="/";
			});
		} else if(window.location.hash=='' || window.location.hash=='#'){
			return false;
		} else {
			$('#roomkey-appwrapper').fadeOut(250,function() {
				window.location.hash='';
			});
		}
		
		return false;
	}
	
	function initAlternateStyles() {
		var style = document.createElement('style');
		style.type = 'text/css';
		
		if (navigator.appVersion.indexOf("Win")>=0) {
			//$('.copter-form-field label').css('font-weight','bold');
			//$('#roomkey-footer').css('font-weight','bold');
			//$('#roomkey-messaging').css('font-weight','bold');
			//style.innerHTML += '\n\n.copter-searchform .copter-autofill-wrapper .copter-autofill-preselect{top:0px;}';
		}
		
		if(navigator.userAgent.indexOf('Firefox/3.6')>=0 || ((navigator.userAgent.indexOf("Safari")>=0)&&(parseFloat(navigator.version)<=4))){
			style.innerHTML += '\n\n.copter-bubble .copter-contents{border:solid 1px #888;}';
		}
		
		document.getElementsByTagName('head')[0].appendChild(style);
	}
	
	//--------------------------------------------------------------------------------
	// jquery plugins
	
	$.fn.dropFadeIn = function(p) {
		if((navigator.appVersion.indexOf("MSIE") >= 0)) {
			$(this).delay(p.delay).slideDown(p.dur);
		} else {
			$(this).delay(p.delay).fadeIn(p.dur);
		}
		return this;
	}
	
	$.fn.customDropdown = function(_params) {
		
		var params = _params;
		
		var ns_prefix = "customdropdown-";
		
		var dateObj = new Date();
		var uid = dateObj.getTime();
		
		if(params.ns_prefix) ns_prefix = params.ns_prefix;
		
		params.jqObj = $(this);
		
		// prep the original option tags
		params.jqObj.children('option').each(function(){
			if($(this).attr('value').length<1){
				$(this).attr('value',$(this).text());
			}
		});
		
		//$(params.jqObj).hide();
		var firstValue;
		firstValue = params.jqObj.val();
		//alert('firstValue=='+firstValue)
		var firstLabel;
		firstLabel = params.jqObj.children('option[value="'+params.jqObj.val()+'"]').text();
		//alert('firstLabel=='+(firstLabel==undefined));
		
		var build = $('<div id="'+params.idString+'" class="'+ns_prefix+'customdrop" data-uid="'+uid+'" data-value="'+params.jqObj.children('option[selected]').val()+'"></div>');
		var header = $('<div class="'+ns_prefix+'customdrop-header" data-uid="'+uid+'"></div>');
		header.append('<div class="'+ns_prefix+'customdrop-select" data-uid="'+uid+'">'+firstLabel+'</div>');
		
		if(params.changeFontsize!=undefined && header.children('.'+ns_prefix+'customdrop-select[data-uid="'+uid+'"]').text().length>25) {
			header.children('.'+ns_prefix+'customdrop-select[data-uid="'+uid+'"]').css(params.changeFontsize.smallSizeCSS);
		}
		header.append('<div class="'+ns_prefix+'customdrop-arrow" data-uid="'+uid+'"><div class="'+ns_prefix+'customdrop-arrow-icon"></div></div>');
		build.append(header);
		build.append('<div class="'+ns_prefix+'customdrop-clear"></div>');
		var drop = $('<div class="'+ns_prefix+'customdrop-drop" data-uid="'+uid+'"></div>');
		
		var lastChild;
		$(params.jqObj).children('option').each(function(){
			drop.append('<div class="'+ns_prefix+'customdrop-drop-item" data-uid="'+uid+'" data-value="'+$(this).val()+'">'+$(this).text()+'</div>');
		});
		lastChild = drop.children('.customdropdown-customdrop-drop-item')[drop.children('.customdropdown-customdrop-drop-item').length-1];
		trace('num of children:'+drop.children('.customdropdown-customdrop-drop-item').length);
		$(lastChild).addClass('customdropdown-customdrop-drop-item-last-child');
		build.append(drop);
		
		drop.hide();
		header.click(function(e){
			e.stopPropagation();
			if(drop.is(':visible')){
				drop.slideUp(250);
			}else{
				drop.slideDown(250);
			}
			$('.'+ns_prefix+'customdrop-drop').each(function(){
				if($(this).attr('data-uid') != header.attr('data-uid')) $(this).slideUp(250);
			});
		});
		drop.children('.'+ns_prefix+'customdrop-drop-item').click(function(){
			trace("customDropdown:changeFontsize=="+params.changeFontsize)
			header.children('.'+ns_prefix+'customdrop-select').text($(this).text());
			if(params.changeFontsize!=undefined) {
				if(header.children('.'+ns_prefix+'customdrop-select').text().length>25){
					header.children('.'+ns_prefix+'customdrop-select[data-uid="'+uid+'"]').css(params.changeFontsize.smallSizeCSS);
				}else{
					header.children('.'+ns_prefix+'customdrop-select[data-uid="'+uid+'"]').css(params.changeFontsize.normalSizeCSS);
				}
			}
			var theVal = $(this).attr('data-value');
			build.attr('data-value',theVal);
			$(params.jqObj).val(theVal);
			drop.slideUp(250);
			build.trigger("customDropdownEvent_valueChanged", [build.attr('data-value')]);
			params.jqObj.trigger('change');
		});
		$(document).click(function(e){
			drop.slideUp(250);
		});
		params.jqObj.bind('change',function(){
			build.attr('data-value',params.jqObj.val());
			header.children('.'+ns_prefix+'customdrop-select').text(params.jqObj.val());
		})
		build.data('customDropdown-originalElements',$(this));
		return build;
	}
	
	function trace(p){
		//if(window.console) if(window.console.log) console.log(p);
		//$h.log(p);
	}
	
})($h.$);

