var _speed = 500;
var strapline_positive;
var strapline_negative;

$(function(){
	
	// Search field hint
	$('form.search_form').inputHintOverlay(5,5);
	
	// Navigation spread
	navigation_spread();
	
	// Navigation hover
	navigation_hover();
	
	// Twitter rotation
	twitter_rotation();
	
	// Gallery
	gallery();
	
	// Mini-Gallery
	miniGallery();
	
	// Media-Gallery
	mediaGallery();
	
	// FontSizer
	fontSizer();
	
	// Travel agent tooltips
	map_tooltips();
	
	$.fn.maphilight.defaults = {
		fill: true,
		fillColor: '000000',
		fillOpacity: 0.4,
		stroke: true,
		strokeColor: 'F58220',
		strokeOpacity: 1,
		strokeWidth: 1,
		fade: true,
		alwaysOn: false,
		neverOn: false,
		groupBy: false
	}
	
	jQuery.preloadCssImages();
	
});//.jQuery();

function navigation_spread() {
	var element_count = $('#navigation > ul > li').size();
	
	var padding = 0;
	$('#navigation > ul > li').each(function(){
		padding += parseInt($(this).css('padding-right'));
	});
	var width = $('#navigation > ul').width() - padding;
	
	var newWidth = Math.floor(width / element_count);
	var usedWidth = 0;
	$('#navigation > ul > li:not(:last)').each(function(){
		$(this).width(newWidth);
		usedWidth += newWidth
	});
	$('#navigation > ul > li:last').width(width - usedWidth);
}

// Add necessary .hover class to navigation elements for rollover effects
function navigation_hover() {
	$('#navigation ul li').hover(
		function() {
			$(this).addClass('hover');
		},
		function() {
			$(this).removeClass('hover');
			
		}
	);
}

function twitter_rotation() {
	if($('.element .twitter').length > 0) {
		setInterval('rotate_twitter()', 5000);
	}
}

function rotate_twitter() {
	$('.element .twitter').each(function(){
		var visible = false;
		var found = null;
		var listSize = $(this).find('li').size();
		$(this).find('li').each(function(i){
			if($(this).is(":visible")) {
				visible = true;
				found = i;
				$(this).fadeOut();
			}
			if(visible && i == parseInt(found) + 1) {
				$(this).fadeIn();
			}
		});
		if(found + 1 == listSize) {
			$(this).find('li:first').fadeIn();
		}
	});
}

function gallery() {
	$('.gallery .thumbs ul li a').live('click', function(event){
		event.preventDefault();
		var selected = $(this).attr('ref');
		$(this).closest('.gallery').find('.viewer .item').each(function(){
			if($(this).hasClass('image_'+selected)) {
				$(this).fadeIn(_speed/2);
			} else {
				$(this).fadeOut(_speed/2);
			}
		});
		$(this).closest('.thumbs').find('li').removeClass('act');
		//$(this).parent().addClass('act');
		$(this).closest('.thumbs').find('li a[ref='+selected+']').parent().addClass('act');
	});
	
	if($(".gallery").length > 0) {
		
		if($('.gallery .thumbs ul li').length > 5) {
		
			$('.gallery .viewer .item:not(:first)').hide();
			
			var list = $('.gallery .thumbs ul');
			list.clone().appendTo(list.parent());
			list.clone().appendTo(list.parent());
			
			var moverWidth = 0;
			$('.gallery .thumbs ul li').each(function(){
				moverWidth += $(this).width();
			});
			$('.gallery .thumbs .mover').width(moverWidth);
			
		} else {
		
			$('.gallery .previous').hide();
			$('.gallery .next').hide();
			$('.gallery .thumbs .mover').width($('.gallery .thumbs .mover').closest('.wrapper').width());
			
		}
	}
	
	$('.gallery .previous').click(function(event){
		event.preventDefault();
		//alert('previous');
		gallery_scroll_check(false);
		$(this).closest('.wrapper').find('.mover').animate({
			left: '+=85'
		}, _speed/2);
	});
	
	$('.gallery .next').click(function(event){
		event.preventDefault();
		//alert('next');
		gallery_scroll_check(true);
		$(this).closest('.wrapper').find('.mover').animate({
			left: '-=85'
		}, _speed/2);
	});
}

function gallery_scroll_check(direction) {
	var mover = $('.gallery .thumbs .mover');
	var clones = mover.find('ul').size();
	var mover_width = mover.width();
	var mover_left = parseInt($('.gallery .thumbs .mover').css('left'));
	if(direction) {
		if(mover_width / clones <= Math.abs(mover_left)) {
			mover.css('left', 0);
		}
	} else {
		if(mover_left >= 0) {
			mover.css('left', -(mover_width/clones));
		}
	}
}

function miniGallery() {
	if($(".mini-gallery").length > 0) {
		//$('.mini-gallery .images ul li:not(:first)').hide();
		
		var list = $('.mini-gallery .images ul');
		list.clone().appendTo(list.parent());
		list.clone().appendTo(list.parent());
		
		var moverWidth = 0;
		$('.mini-gallery .images ul li').each(function(){
			moverWidth += $(this).width();
		});
		$('.mini-gallery .images .mover').width(moverWidth);
	}
	
	$('.mini-gallery .previous').click(function(event){
		event.preventDefault();
		mini_gallery_scroll_check(false);
		$(this).closest('.mini-gallery').find('.mover').animate({
			left: '+=157'
		}, _speed/2);
	});
	
	$('.mini-gallery .next').click(function(event){
		event.preventDefault();
		mini_gallery_scroll_check(true);
		$(this).closest('.mini-gallery').find('.mover').animate({
			left: '-=157'
		}, _speed/2);
	});
}

function mini_gallery_scroll_check(direction) {
	var mover = $('.mini-gallery .images .mover');
	var clones = mover.find('ul').size();
	var mover_width = mover.width();
	var mover_left = parseInt($('.mini-gallery .images .mover').css('left'));
	if(direction) {
		if(mover_width / clones <= Math.abs(mover_left)) {
			mover.css('left', 0);
		}
	} else {
		if(mover_left >= 0) {
			mover.css('left', -(mover_width/clones));
		}
	}
}

function mediaGallery() {
	$('.media-gallery .playlist ul li a').live('click', function(event){
		event.preventDefault();
		var selected = $(this).attr('ref');
		$(this).closest('.media-gallery').find('.viewer .item').each(function(){
			if($(this).hasClass('item_'+selected)) {
				//$(this).fadeIn(_speed/2);
				$(this).removeClass('inactive');
			} else {
				//$(this).fadeOut(_speed/2);
				$(this).addClass('inactive');
			}
		});
		$(this).closest('.media-gallery').find('.details li').each(function(){
			if($(this).hasClass('item_'+selected)) {
				$(this).fadeIn(_speed/2);
			} else {
				$(this).fadeOut(_speed/2);
			}
		});
		$(this).closest('.media-gallery').find('.links li').each(function(){
			if($(this).hasClass('item_'+selected)) {
				$(this).fadeIn(_speed/2);
			} else {
				$(this).fadeOut(_speed/2);
			}
		});
		
		$(this).closest('.media-gallery').find('.playlist li').removeClass('act');
		//$(this).parent().addClass('act');
		$(this).closest('.media-gallery').find('li a[ref='+selected+']').parent().addClass('act');
	});
	
	if($(".media-gallery").length > 0) {
		//$('.media-gallery .viewer .item:not(:first)').hide();
		$('.media-gallery .viewer .item:not(:first)').addClass('inactive');
		
		var list = $('.media-gallery .playlist ul');
		list.clone().appendTo(list.parent());
		list.clone().appendTo(list.parent());
		
		var moverHeight = 0;
		$('.media-gallery .playlist ul').each(function(){
			moverHeight += $(this).height();
		});
		$('.media-gallery .playlist .mover').height(moverHeight);
	}
	
	$('.media-gallery .previous').click(function(event){
		event.preventDefault();
		media_gallery_scroll_check(false);
		$(this).closest('.wrapper').find('.mover').animate({
			top: '+=68'
		}, _speed/2);
	});
	
	$('.media-gallery .next').click(function(event){
		event.preventDefault();
		media_gallery_scroll_check(true);
		$(this).closest('.wrapper').find('.mover').animate({
			top: '-=68'
		}, _speed/2);
	});
}

function media_gallery_scroll_check(direction) {
	var mover = $('.media-gallery .playlist .mover');
	var clones = mover.find('ul').size();
	var mover_height = mover.height();
	var mover_top = parseInt(mover.css('top'));
	
	if(direction) {
		if(mover_height / clones <= Math.abs(mover_top)) {
			mover.css('top', 0);
		}
	} else {
		if(mover_top >= 0) {
			mover.css('top', -(mover_height/clones));
		}
	}
}

function fontSizer() {
	var newSize = null;
	
	if($.cookie('font-size')) {
		newSize = $.cookie('font-size');
		setFontSize(newSize);
	} else {
		setFontSize(12);
	}
	
	$('#font-sizes a').click(function(e){
		e.preventDefault();
		newSize = $(this).attr('ref')+'px';
		setFontSize(newSize);
	});
}

function setFontSize(newSize) {
	$('body').css('font-size', newSize);
	$.cookie('font-size', newSize, { expires: 7, path: '/' });
	$('#font-sizes a[ref='+parseInt(newSize)+']').addClass('act');
	$('#font-sizes a[ref!='+parseInt(newSize)+']').removeClass('act');
}

function map_tooltips() {
	var horizontal_disposition = 15;
	var vertical_disposition = -15;
	
	$('.tooltip').mouseover(function(event){
		$('.map-tooltip').show();
		$('.map-tooltip .wrapper strong').html($(this).attr('title'));
		if(parseInt($(this).attr('ref')) > 0) {
			//alert(strapline_positive);
			$('.map-tooltip .wrapper span.strapline').html(strapline_positive);
			$('.map-tooltip .wrapper span.count').html($(this).attr('ref'));
		} else {
			//alert(strapline_negative);
			$('.map-tooltip .wrapper span.strapline').html(strapline_negative);
			$('.map-tooltip .wrapper span.count').html('');
		}
		$(this).attr('title', null);
	});
	
	$('.tooltip').mouseout(function(event){
		$('.map-tooltip').hide();
		$(this).attr('title', $(this).attr('alt'));
	});
	
	$('.tooltip').mousemove(function(e){
		$('.map-tooltip').css({'top': e.pageY + vertical_disposition, 'left': e.pageX + horizontal_disposition});
	});
}
