var cf_interval = 5000;
var selected = 0;
var flip;

$(window).load(function(){
	startCrossFade();
});

$(document).ready(function(){
	$('input[title!=""]').hint();

	initTitleBars();
	initCarousel();
	initHotelImages();
	initBlogPost();
	initForms();
	cleanupData();
	initLists();
});

function initLists(){
	
}

function initForms(){
	$(".appnitro").attr('action', page_url + "&action=" + get_action);
}

function cleanupData(){
	$(".linebreak").each(function(){
		var next = $(this).next();
		if($(next).is("br")){
			$(next).remove();
		}
		
	});
}

function initBlogPost(){
	
	$(".blog_editor h3").each(function(){
		
		$(this).click(function(e){
			e.preventDefault();
			var parent = $(this).parents('.blog_editor');
			var target = $(parent).find('.editor_background');
			if(!$(parent).hasClass('active')){
			
				$(".blog_editor .editor_background").slideUp();
				$(target).slideDown();
				$('.blog_editor').removeClass('active');
				$(this).parents('.blog_editor').addClass('active');
			
			}
			
			
		});
	});
	
	$(".gallery_image").each(function(){
		
		//$(this).attr('alt');
		
	});
	
	$('.gallery_item a').each(function(){
		var alt = $("img", this).attr('alt');
		$(this).colorbox({transition:'fade', speed:500, title: alt});
	});
	
}

function initHotelImages(){

	$("#subimages a, .subimage a").each(function(){
		var alt = $("img", this).attr('alt');
		$(this).colorbox({transition:'fade', speed:500, title: alt});
	});

	

	//$("#subimages a, .subimage a").colorbox({transition:'fade', speed:500});
	
	
	
	
	

	$("#img_holder").html("<img src='web_assets/css/images/ajax-loader.gif' alt='' class='loading' />");
	
		var newImage = new Image(); //new img obj
		newImage.src = $('#subimages a:eq(0) img').attr("longdesc");
		$(newImage).load(function(){
		
			$("#img_holder").html(newImage);
			var newHeight = $("#img_holder img").height();
			$("#img_holder").animate({
				height: newHeight
			}, 'fast', 'swing', function(){
				initTitleBars();
			});
			
			
			
		});

	

}

function initHotelImagesOld(){
	
	var target = $("#hotel_image");
	
	$("#subimages a").click(function(e){
		e.preventDefault();
		$("#img_holder").html("<img src='web_assets/css/images/ajax-loader.gif' alt='' class='loading' />");
		var newImage = new Image(); //new img obj
		newImage.src = $(this).attr("href");
		$(newImage).load(function(){
		
			$("#img_holder").html(newImage);
			var newHeight = $("#img_holder img").height();
			$("#img_holder").animate({
				height: newHeight
			}, 'fast', 'swing', function(){
				initTitleBars();
			});
			
			
			
		});
		
	});
	
	if($("#img_holder img").length == 0){
		$("#subimages a:first").trigger('click');
	}

}





function startCrossFade(){
	flip = setInterval("crossfade()", cf_interval);
}

function initCarousel(){
	
	$("#carousel div.hotel_callout").each(function(i){
		if(i > 0){
			$(this).css('opacity', 0).css('left', '-10000px').css('display', 'block');
			$(this).removeClass('atStart');
		} else {
			$(this).addClass('active');
			$(this).removeClass('atStart');
		}
		
	});

	
}

function crossfade(){
	var images = $("#carousel div.hotel_callout");
	var total = images.length;
	
	if(selected + 1 == total){
		nextIndex = 0;
	} else {
		nextIndex = selected + 1;
	}
	
	$("#carousel div.active").animate({
		opacity: 0
	}, 'slow', 'swing', function(){
		$(this).css('left', '-10000px');
	});
	
	$("#carousel div.hotel_callout").removeClass('active');
	var nextImage = $("#carousel div.hotel_callout:eq(" + nextIndex + ")");
	
	$(nextImage).css('left', '0px');
	
	$(nextImage).animate({
		opacity: 1
	}, 'slow').addClass('active');
	
	selected = nextIndex;
}


function initTitleBars(){
	
	var height = $("#homepage").innerHeight() - 93;
	$("#homepage .titlebar").height(height);
	
	$("#hotel .titlebar").each(function(){
		var height = $("#hotel_information").innerHeight() - 20;
		$(this).height(height);
	});
	
	$("#city_hotels .titlebar").each(function(){
		var height = $("#city_hotels").innerHeight() - 40;
		$(this).height(height);
	});
	
	$("#content .titlebar").each(function(){
		var height = $("#content").innerHeight();
		$(this).height(height);
	});
	
	
	
}

function initFilters(){
	
	var region = $("#region_filter select").val();
	var countries = $("#region_" + region).show();
	var country = $(countries).val();
	var cities = $("#country_" + country).show();
	
	updateMapDisplay();
	
	$("#region_filter select").change(function(){
		$("#country_filter select, #city_filter select").hide();
		var region_id = $(this).val();
		var countries_open = $("#region_" + region_id).show();
		var country_id = $(countries_open).val();
		var cities_open = $("#country_" + country_id).show();
		updateMapDisplay();
	});
	
	$("#country_filter select").change(function(){
		$("#city_filter select, #choose_country").hide();
		var country_id = $(this).val();
		var cities_open = $("#country_" + country_id).show();
		
		if(country_id == 0){
			$("#choose_country").show();
		} else {
			updateMapDisplay();
		}
		
	});
	
	$("#map_filters form").submit(function(e){
		e.preventDefault();
		executeSearch();
	});
	
}

function executeSearch(){
	
	var region = $("#region_filter select").val();
	var countries = $("#region_" + region);
	var country = $(countries).val();
	var city = $("#country_" + country).val();
	var search = $("#search_box input").val();
	var searchURL = search_url + "?searchmode=hotels&search=" + search + "&city=" + city + "&country=" + country + "&region=" + region;
	window.location.href = searchURL;
	
}

var isoCode = 'US';

function updateMapDisplay(){

	if($('#interactive_map').length == 0){
		return;
	}
	
	var region = $("#region_filter select").val();
	var countries = $("#region_" + region);
	var selectedIndex = $(countries).attr('selectedIndex');
	
	isoCode = $("option:eq(" + selectedIndex + ")", countries).attr('id');
	
	flashProxy.call('zoomTo',isoCode)
}

/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright å© 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/**
* @author Remy Sharp
* @url http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
*/

(function ($) {

$.fn.hint = function (blurClass) {
  if (!blurClass) { 
    blurClass = 'blur';
  }
    
  return this.each(function () {
    // get jQuery version of 'this'
    var $input = $(this),
    
    // capture the rest of the variable to allow for reuse
      title = $input.attr('title'),
      $form = $(this.form),
      $win = $(window);

    function remove() {
      if ($input.val() === title && $input.hasClass(blurClass)) {
        $input.val('').removeClass(blurClass);
      }
    }

    // only apply logic if the element has the attribute
    if (title) { 
      // on blur, set value to title attr if text is blank
      $input.blur(function () {
        if (this.value === '') {
          $input.val(title).addClass(blurClass);
        }
      }).focus(remove).blur(); // now change all inputs to title
      
      // clear the pre-defined text when form is submitted
      $form.submit(remove);
      $win.unload(remove); // handles Firefox's autocomplete
    }
  });
};

})(jQuery);