/*

SUSHI LEBLON

CSS + WORDPRESS by Leo Favre
http://leofavre.com

DESIGN by Arterial
http://arterial.tv

*/





$(document).ready(function(){
	$("body").addClass("javascript-on");
	$("body").prepend('<div id="teste" />');

	$("body").data('island_curr_pos', 0);
	$("#video-intro").data("video_html", $("#video-intro").html());
	$("#clipping").removeClass("javascript-off");

	start_content();
	start_navigation();
	start_islands(0);
	start_content_loading();
	
	auto_external_links();
	ie_fix_ugly_text_fade();
	
	var map;
});

$(window).load(function(){
	update_flexcroll();
	islands_introduction();
});

$(window).resize(function(){
	update_media_size();
});


/* MISC */

function ie_fix_ugly_text_fade(){
	$('#sobre .col h3, #sobre .col h4, #sabores .col h3, #sabores .col h4, #clipping .col h3, #clipping .col h4').wrapInner('<span />');
}

function update_flexcroll(){
	// debug_message('update_flexcroll');
	fleXenv.initByClass("flexcroll");
	fleXenv.updateScrollBars();
}

function fix_flexcroll_bug(section_hash){
	// debug_message('fix_flexcroll_bug');
	update_flexcroll();
	
	if(section_hash=="#sobre"){
		elem = document.getElementById('sobreFlex2');
		elem.fleXcroll.setScrollPos(0,0);
	}
	if(section_hash=="#sabores"){
		// $("#sabores .mcontentwrapper, #sabores .contentwrapper, #sabores .ajax-loaded").css("display","block");
		elem = document.getElementById('saboresFlex2');
		elem.fleXcroll.setScrollPos(0,0);
	}
	if(section_hash=="#clipping"){
		elem = document.getElementById('clippingFlex3');
		elem.fleXcroll.setScrollPos(0,0);
	}
	
	// setTimeout(function(){update_flexcroll()},500); // IE
	// setTimeout(function(){elem.fleXcroll.setScrollPos(0,0)},500); // IE 7
}

function fix_flexcroll_submenu_bug(section_hash){
	// debug_message('fix_flexcroll_submenu_bug');
	update_flexcroll();
	
	if(section_hash=="#sabores"){
		// $("#sabores .mcontentwrapper, #sabores .contentwrapper, #sabores .ajax-loaded").css("display","block");
	}
	if(section_hash=="#clipping"){
		elem = document.getElementById('clippingFlex2');
		elem.fleXcroll.setScrollPos(0,0);
	}
	
	// setTimeout(function(){update_flexcroll()},500); // IE
	// setTimeout(function(){elem.fleXcroll.setScrollPos(0,0)},500); // IE 7
}

function change_layout_for_partners_page(section_hash, src){
	if(section_hash=="#sobre"){
		if(src.indexOf("target_id=70")!=-1){
			$("body").addClass("partners-page-loaded");
		} else {
			$("body").removeClass("partners-page-loaded");
		}
	}
}


/* NAVIGATION */

function update_javascript_links(){
	// debug_message("update_javascript_links");
	$('a[class^="js-link"]').each(function(){
		var link = "";
		var hash_or_id = $(this).attr("class").substr(8);
		if( isNaN(parseInt(hash_or_id)) ){
			link = "#"+hash_or_id;
			// debug_message("link with hash: "+link);
		} else {
			link = website_url+"/"+ajax_loader+"="+hash_or_id;
			// debug_message("link with id: "+link);
		}
		$(this).attr("href", link);
	});
}

function start_navigation(){
	update_javascript_links();
	$(".nav a").unbind("click");
	$(".nav a").click(function(evt){
		var section_hash = $(this).attr("href");
		move_content(section_hash, 1200);
		evt.preventDefault();
	});
	$("body").removeClass("pause-nav");
}

function stop_navigation(){
	$(".nav a").unbind("click");
	$(".nav a").click(function(evt){
		evt.preventDefault();
	});
	$("body").addClass("pause-nav");
}

function auto_external_links(){
	$('a').click(function(){
		var href = $(this).attr("href");
		if( href.substr(0, 22)!="http://www.sushileblon" && href.substr(0, 18)!="http://sushileblon" && href.substr(0, 1)!="#" ){
			$(this).attr("target", "_blank");
		}
	});
}


/* CONTENT */

function get_section_hash(section_hash){
	var section_hash = (!window.location.hash) ? section_hash : window.location.hash;
	section_hash = (!section_hash) ? "#home" : section_hash;
	section_hash = ($(section_hash).length>0) ? section_hash : "#home";
	
	return section_hash;
}

function start_content(section_hash){
	var section_hash = get_section_hash(section_hash);
	$(section_hash).show();
	$(section_hash).addClass("visible");
	move_content(section_hash, 0, true);
}

function move_content(section_hash, speed, start){
	slideshow_stop();
	
	var section_class = $(section_hash).attr("class");
	if( typeof(section_class)!='undefined' ){
		var current_section = $("#content .visible").attr("class").match(/\d+/i);
		var section = (section_hash=="#") ? 1 : section_class.match(/\d+/i);
		section = (!section) ? 1 : parseInt(section);
		section_hash = "#"+$("#content .slide-"+section).attr("id");
	
		if(current_section!=section || start){
			update_javascript_links();
			$(section_hash).show();
			$("#content .slide").removeClass("visible");
			$("#content .slide-"+section).addClass("visible");
			start_current_section(section_hash);
			show_media(section_hash);
		}
		if(current_section>section){
			stop_navigation();
			$("#content .container").css("left", "-100%");
			$("#content .container").animate({ left: '+=100%' }, speed, function(){
				$("#content .slide").hide();
				$("#content .slide-"+section).show();
				finish_content_movement(section_hash);
			});
			move_islands_right();
		}
		if(current_section<section){
			stop_navigation();
			$("#content .container").animate({ left: '-=100%' }, speed, function(){
				$("#content .slide").hide();
				$("#content .slide-"+section).show();
				$("#content .container").css("left", "0");
				finish_content_movement(section_hash);
			});
			move_islands_left();
		}
	}
}

function finish_content_movement(section_hash){
	location.href = section_hash;
	start_navigation();
	hide_google_map(section_hash);
	hide_vimeo(section_hash);
}

function load_google_map() {
	map = new GMap2(document.getElementById("google-map"));
	map.setCenter(new GLatLng(-22.984052,-43.227225), 17);
	map.addOverlay(new GMarker(map.getCenter()));
}

function load_google_map_script() {
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = "http://maps.google.com/maps?file=api&v=2&key=ABQIAAAArtSxytfEejDPiU1dT4Cb9xTlxLgaQkruXdAPITSkmVcauk4ogxROf2f_Aan78YEZ8p6mF7JpkckEUw&async=2&callback=load_google_map";
	document.body.appendChild(script);
}

function show_google_map(section_hash){
	// if(!$("body").hasClass("google-map-on")){
		if(section_hash=="#contato"){
			// $("body").addClass("google-map-on");
			$("#google-map").show();
			load_google_map_script();
		};
	// };
}

function hide_google_map(section_hash){
	// if(!$("body").hasClass("google-map-on")){
		if(section_hash!="#contato"){
			$("#google-map").hide();
		};
	// };
}

function show_vimeo(section_hash){
	if(section_hash=="#home"){
		$("#video-intro").html($("#video-intro").data("video_html"));
	};
}

function hide_vimeo(section_hash){
	if(section_hash!="#home"){
		$("#video-intro").html('');
	};
}


/* SECTIONS */

function start_current_section(section_hash){
	if(!$(section_hash).hasClass("started")){
		if(section_hash=="#sobre" || section_hash=="#sabores" || section_hash=="#giro" || section_hash=="#clipping"){
			var col_target = (section_hash=="#sobre" || section_hash=="#sabores" || section_hash=="#giro") ? ".col-1" : ".col-2";
			var menu_always_visible = (section_hash=="#giro") ? false : true;
			var first_click = (section_hash=="#clipping") ? false : true;
			start_section(section_hash, col_target, menu_always_visible, false, first_click);
		}
		if(section_hash=="#clipping"){
			start_submenu(section_hash, ".col-1", ".col-2");
		}
		$(section_hash).addClass("started"); /**/
	}
	show_google_map(section_hash);
	show_vimeo(section_hash);
}

function start_submenu(section_hash, context_menu, sub_menu){
	// debug_message("start_submenu");
	var i = 1;
	var submenu_options = $(section_hash+" "+context_menu+" li>a").parent();
	
	submenu_options.each(function(){
		$(this).addClass("open-sub");
		$(this).addClass("open-sub-"+i);
		// debug_message($(this).attr("class"));
		i++;
	});
	$(section_hash+" .open-sub a").click(function(evt){
		var index = parseInt($(this).parent().attr("class").match(/\d+/i));
		click_submenu(section_hash, context_menu, sub_menu, index);
		evt.preventDefault();
	});
	
	// first automatic click
	$(section_hash+" "+sub_menu).hide();
	click_submenu(section_hash, context_menu, sub_menu, 1);
	update_flexcroll();
}

function click_submenu(section_hash, context_menu, sub_menu, index){
	var buttons = $(section_hash+" .open-sub");
	var this_button = $(section_hash+" .open-sub-"+index);
	
	if(!this_button.hasClass("selected")){
		// debug_message("click_submenu "+section_hash+", "+context_menu+", "+sub_menu+", "+index);
		context_menu_deselect(buttons);
		context_menu_select(buttons, this_button);
		show_submenu(section_hash, context_menu, sub_menu, index);
	}
}

function show_submenu(section_hash, context_menu, sub_menu, index){
	// debug_message("show_submenu "+index);
	$(section_hash+" "+sub_menu+" ul").removeClass("active");
	$(section_hash+" "+sub_menu+" ul:nth-child("+index+")").addClass("active");
	var select_button = $(section_hash+" "+sub_menu+" ul:nth-child("+index+") li>a").first().parent();
	fade_all_out_and_click(section_hash, sub_menu, select_button);
	$(section_hash+" "+sub_menu).fadeTo("slow", 0, function(){

		fix_flexcroll_submenu_bug(section_hash); /**/

		$(section_hash+" "+sub_menu+" ul[class!='active']").hide();
		$(section_hash+" "+sub_menu+" ul.active").show();
		$(section_hash+" "+sub_menu).fadeTo("slow", 1);
	});
	// fix_flexcroll_submenu_bug(section_hash);
}

function preview_submenu(section_hash, context_menu, sub_menu, index){
	// debug_message("preview_submenu");
	$(section_hash+" "+sub_menu+" ul").removeClass("active");
	$(section_hash+" "+sub_menu+" ul:nth-child("+index+")").addClass("active");
	$(section_hash+" "+sub_menu+" ul[class!='active']").hide();
	$(section_hash+" "+sub_menu+" ul.active").show();
}

function start_section(section_hash, context_menu, menu_always_visible, ignore_text, first_click){
	// debug_message("start_section("+section_hash+", "+context_menu+", "+menu_always_visible+", "+ignore_text+")");	
	var menu_options = $(section_hash+" "+context_menu+" li>a").parent();
	
	update_javascript_links();
	menu_options.click(function(evt){
		if(menu_always_visible){
			if(ignore_text){
				fade_media_out_and_click(section_hash, context_menu, $(this));
			} else {
				fade_all_out_and_click(section_hash, context_menu, $(this));
			}
			
			if(section_hash=="#sobre" || section_hash=="#sabores"){
				slideshow_stop();
			}
			
		} else {
			click_menu(section_hash, context_menu, $(this));
		}
		evt.preventDefault();
	});
	
	// first automatic click
	if(first_click){
		if(menu_always_visible){
			var first_button = $(section_hash+" "+context_menu+" li>a").first().parent();
			if(!first_button.hasClass("selected")){
				click_menu(section_hash, context_menu, first_button);
			}
		} else {
			// #giro
			$(section_hash+" .media-wrap, "+section_hash+" .close-button").click(function(){
				$(section_hash+" "+context_menu).removeClass("no-print");
				fade_all_out(section_hash, context_menu);
			});
			$(section_hash+" .prev-button").click(function(){
				prev_button = $(section_hash+" "+context_menu+" li.selected").prev();
				last_button = $(section_hash+" "+context_menu+" li").last();
				if(prev_button.length>0){
					fade_all_out_and_click(section_hash, context_menu, prev_button);
				} else {
					fade_all_out_and_click(section_hash, context_menu, last_button);
				}
			});
			$(section_hash+" .next-button").click(function(){
				next_button = $(section_hash+" "+context_menu+" li.selected").next();
				first_button = $(section_hash+" "+context_menu+" li").first();
				if(next_button.length>0){
					fade_all_out_and_click(section_hash, context_menu, next_button);
				} else {
					fade_all_out_and_click(section_hash, context_menu, first_button);
				}
			});
		}
	}
}

function fade_all_out_and_click(section_hash, context_menu, who){
	// debug_message("fade_all_out_and_click");
	if(!who.hasClass("selected")){
		fade_text_out(section_hash);
		fade_media_out_and_click(section_hash, context_menu, who);
	}
}

function fade_all_out(section_hash, context_menu){
	// debug_message("fade_all_out");
	var menu_options = $(section_hash+" "+context_menu+" li");
	context_menu_deselect(menu_options);
	fade_text_out(section_hash);
	fade_media_out(section_hash, context_menu);
	hide_image_navigation(section_hash);
}

function fade_media_out_and_click(section_hash, context_menu, who){
	// debug_message("fade_media_out_and_click");
	if(!who.hasClass("selected")){
		var menu_options = $(section_hash+" "+context_menu+" li");
		context_menu_deselect(menu_options);
		context_menu_select(menu_options, who);
		fade_media_out(section_hash, context_menu, who, true);
	}
}

function fade_media_out(section_hash, context_menu, who, click){
	// debug_message("fade_media_out");
	var media = $(section_hash+" .media-wrap img");

	if(media.length>0){
		media.fadeTo("slow", 0, function(){
			media.closest(".media-wrap").html('').hide();
			if(click){ click_menu(section_hash, context_menu, who); }
		});
	} else {
		if(click){
			setTimeout(function(){click_menu(section_hash, context_menu, who)},500);
			// click_menu(section_hash, context_menu, who);
		}
	}
}

function fade_text_out(section_hash){
	// debug_message("fade_text_out");
	$(section_hash+" .text-wrap").fadeTo("slow", 0);
	// var text = $(section_hash+" .text-wrap .ajax-loaded #text");

	// if(text.length>0){
		// text.closest(".flexcroll").fadeTo("slow", 0);
		// text.closest(".text-wrap .ajax-loaded").fadeTo("slow", 0, function(){
			// text.closest(".text-wrap .ajax-loaded").html('').hide(); /**/
			// text.closest(".text-wrap .ajax-loaded #text").html(''); /**/
		// });
	// }
}

function fade_media_in(section_hash){
	// debug_message("fade_media_in");
	var media = $(section_hash+" .media-wrap img");

	if(media.length>0){
		media.hide();
		media.fadeTo("slow", 1);
	}
}

function fade_text_in(section_hash){
	// debug_message("fade_text_in");
	$(section_hash+" .text-wrap").fadeTo("slow", 1);
	// var text = $(section_hash+" .text-wrap .ajax-loaded #text");

	// if(text.length>0){
		// text.closest(".text-wrap .ajax-loaded").hide();
		// text.closest(".flexcroll").fadeTo("slow", 1);
		// text.closest(".text-wrap .ajax-loaded").fadeTo("slow", 1);
	// }
}

function click_menu(section_hash, context_menu, who){
	// debug_message("click_menu("+section_hash+", "+context_menu+", "+who.find('a').attr('href')+")");	
	context_menu_select($(section_hash+" "+context_menu+" li"), who);

	src = who.find("a").attr("href");
	to_ext = src.match(/\.([^\.]+)$/i);
	ext = (to_ext) ? to_ext[1] : "php";

	if(section_hash=="#giro"){
		$(section_hash+" "+context_menu).addClass("no-print");
	}
	$(section_hash+" .media-wrap").show();

	if(ext=="jpg" || ext=="jpeg" || ext=="png" || ext=="gif"){
		$(section_hash+" .media-wrap").html('<span title="'+src+'"></span>');
		show_media(section_hash, context_menu);
	} else {
		show_text_and_media(section_hash, context_menu, src);
	}
}

function load_media_callback(section_hash, context_menu){
	// debug_message("load_media_callback("+section_hash+", "+context_menu+")");
	// hide_loading(section_hash);
	if(section_hash=="#giro"){
		show_image_navigation(section_hash);
	}
	start_sobre_or_sabores(section_hash, context_menu);
	choose_layout_type(section_hash, $(section_hash+" .media-wrap img").width(), $(section_hash+" .media-wrap img").height());
	// update_flexcroll();
}

function load_text_callback(section_hash){
	// debug_message("load_text_callback("+section_hash+")");
	choose_layout_type(section_hash, $(section_hash+" .media-wrap img").width(), $(section_hash+" .media-wrap img").height());
	
	// debug_message("fleXenv.initByClass via text "+section_hash);
	fix_flexcroll_bug(section_hash);
	ie_fix_ugly_text_fade();
}

function start_sobre_or_sabores(section_hash, context_menu){
	// debug_message("start_sobre_or_sabores");
	if(section_hash=="#sobre" || section_hash=="#sabores"){
		if(context_menu.length>0){
			if(context_menu!=".col-2"){
				start_section(section_hash, ".col-2", true, true);
			}
		}
	};
}

function choose_layout_type(section_hash, image_width, image_height){
	// debug_message("choose_layout_type("+section_hash+", "+image_width+", "+image_height+")");
	if(section_hash=="#giro"){
		if(image_width<image_height){
			$("#giro").addClass("invert");
		} else {
			$("#giro").removeClass("invert");
		};
	}
	
	if(section_hash=="#clipping"){
		$("#clipping").addClass("invert");
		
		if($(section_hash+" #text").length>0 && image_width && image_height){
			$("#clipping").removeClass("text-only");
			$("#clipping").removeClass("no-text");
			// $("#clipping").removeClass("invert");
			if(image_width>image_height){
				// debug_message("wide-image");
				$("#clipping").addClass("wide-image");
				$("#clipping").removeClass("tall-image");
			} else {
				// debug_message("tall-image");
				$("#clipping").removeClass("wide-image");
				$("#clipping").addClass("tall-image");
			}
		} else {
			if($(section_hash+" #text").length>0){
				// debug_message("text-only");
				$("#clipping").addClass("text-only");
				$("#clipping").removeClass("no-text");
				// $("#clipping").removeClass("invert");
				$("#clipping").removeClass("wide-image");
				$("#clipping").removeClass("tall-image");
			} else {
				// debug_message("no-text");
				$("#clipping").removeClass("text-only");
				$("#clipping").addClass("no-text");
				// $("#clipping").addClass("invert");
				$("#clipping").removeClass("wide-image");
				$("#clipping").removeClass("tall-image");
			}
		}
	};
	update_media_size();
}

function context_menu_select(context, who){
	context.removeClass("selected");
	who.addClass("selected");
	who.addClass("visited");
}

function context_menu_deselect(context){
	context.removeClass("selected");
}

function show_image_navigation(section_hash){
	if(section_hash=="#giro"){
		// $(section_hash+" .close-button").fadeIn("slow");
		$(section_hash+" .close-button").animate({ left: 0 }, "fast");
		$(section_hash+" .next-button").animate({ left: 0 }, "fast");
		$(section_hash+" .prev-button").animate({ right: 0 }, "fast");
		$("#giro .col-1").fadeTo("slow", 0);
		$("#giro .col-1 img").fadeTo("slow", 0);
	}
}

function hide_image_navigation(section_hash){
	if(section_hash=="#giro"){
		// $(section_hash+" .close-button").fadeOut("slow");
		$(section_hash+" .close-button").animate({ left: -25 }, "fast");
		$(section_hash+" .next-button").animate({ left: -25 }, "fast");
		$(section_hash+" .prev-button").animate({ right: -25 }, "fast");
		$("#giro .col-1").fadeTo("slow", 1);
		$("#giro .col-1 img").fadeTo("slow", 1);
	}
}


/* MEDIA */

function show_media(section_hash, context_menu){
	// debug_message("show_media("+section_hash+", "+context_menu+")");
	var media_target = $(section_hash+" .media-wrap");
	
	if(media_target.length>0){
		media_target.each(function(){
			var src = $(this).find("span").attr("title");
			if(src){
				// construct media
				var target = $(this).find("span").parent();
				get_media_file(section_hash, target, src, context_menu);
			} else {
				// update media
				update_media_size();
			}
		});
		// fade_media_in(section_hash);
	}
}

function show_text_and_media(section_hash, context_menu, src){
	// debug_message("show_text_and_media("+section_hash+", "+src+")");
	var text_target = $(section_hash+" .text-wrap .ajax-loaded");
	
	change_layout_for_partners_page(section_hash, src);

	show_loading(section_hash, "text");
	text_target.load(src+" #text", function(){
		hide_loading(section_hash, "text");
		// if page "Socias / Partners" (target_id == 70)
		if(section_hash=="#clipping" || src.indexOf("target_id=70")!=-1){
			get_first_image_from_content(section_hash, context_menu, src);
			$(section_hash+" .text-wrap").fadeTo(0,0);
			// text_target.hide();
		} else {
			click_button_link_to_media(section_hash);
			$(section_hash+" .text-wrap").fadeTo(0,0);
			// text_target.hide();
			fade_text_in(section_hash);
			load_text_callback(section_hash, context_menu);
		}
	});
}

function click_button_link_to_media(section_hash){
	// debug_message("click_button_link_to_media");
	var first_button = $(section_hash+" .text-wrap .ajax-loaded li>a").parent().first();
	var context_menu = first_button.closest(".col").attr("class");

	if(first_button.length>0){
		// click first button to reveal first linked image.
		// debug_message("click_or_get_media - click");
		
		var maxButtons = $(section_hash+" .col-2 li>a").length;
		$('body').data('maxButtons', maxButtons);
		$('body').data('current_button', 1);
		var current_button = $('body').data('current_button');

		// click_menu(section_hash, context_menu, first_button, true);
		fade_media_out(section_hash, context_menu, first_button, true);

		if(maxButtons>1){
			slideshow_start(4500, section_hash, ".col-2");
		}
	} else {
		hide_loading(section_hash, "media");
	}
}

function slideshow_start(timer, section_hash, context_menu){
	if(timer){
		slideshow_repeat = setInterval( function(){slideshow_click(section_hash, context_menu);}, timer );
	}
}

function slideshow_stop(){
	if(typeof(slideshow_repeat)!='undefined'){
		clearInterval(slideshow_repeat);
	}
}

function slideshow_click(section_hash, context_menu){
	// var target = sliderfxFindNext(context, true);
	// sliderfxScrollTo(context, target, speed);
	
	var current_button = $('body').data('current_button');
	$('body').data('current_button',current_button+1);
	
	if( $('body').data('maxButtons')<$('body').data('current_button') ){
		$('body').data('current_button', 1);
	}
	
	var current_button = $('body').data('current_button');
	var the_button = $(section_hash+" .text-wrap .ajax-loaded li>a:eq("+(current_button-1)+")").parent();
	// click_menu(section_hash, context_menu, the_button, true);
	fade_media_out(section_hash, context_menu, the_button, true);
	
}



function get_first_image_from_content(section_hash, context_menu, src){
	// debug_message("get_first_image_from_content");
	// show_loading(section_hash);
	$.get(src, function(data) {
		var to_new_src = data.match(/src=["\']?([^"\' ]*)["\' ]/i);
		if(to_new_src){
			new_src = to_new_src[1];
			// debug_message("getting image in src: "+new_src);
			$(section_hash+" .media-wrap").html('<span title="'+new_src+'"></span>');
			show_media(section_hash);
		} else {
			// debug_message("no src to get image");
		}
		fade_text_in(section_hash);
		load_text_callback(section_hash, context_menu);
	});
}

function get_media_file(section_hash, target, src, context_menu){
	var img = '<img src="'+src+'" alt="" />';
	target.html(img);
	display_media(section_hash, target, context_menu);
}

function display_media(section_hash, target, context_menu){
	target.find("img").each(function(){
		$(this).css("visibility", "hidden");
		show_loading(section_hash, "media");
		$(this).load(function(){
			hide_loading(section_hash, "media");
			update_media_size();
			$(this).css("visibility", "visible");
			fade_media_in(section_hash);
			load_media_callback(section_hash, context_menu);
		});
	});
}

function update_media_size(){
	// debug_message("update_media_size()");
	var current_section_hash = "#"+$(".visible").attr("id");
	var media = $(current_section_hash+" .media-wrap img");
	
	media.each(function(){
		correct_media_size($(this));
	});
}

function correct_media_size(media){
	// debug_message("correct_media_size("+media.attr('src')+")");
	if(media.length>0){
		var section = media.closest(".article").parent();
		var media_width = media.width();
		var media_height = media.height();
		var media_ratio = media_width/media_height;
		var container = media.closest(".media-wrap");
		var container_width = container.innerWidth();
		var container_height = container.innerHeight();
		var container_ratio = container_width/container_height;

		// debug_message("media.width = "+media.width()+" and media.height = "+media.height());
		if(media_width>0 && media_height>0){
			$logic = (!section.hasClass("invert")) ? (container_ratio<media_ratio) : (container_ratio>media_ratio);
			
			if($logic){
				// adjust image by height
				// debug_message(section.attr("id")+" ajusta imagem pela altura");
				media.css("width", "auto");
				media.css("height", "100.1%");
				media.css("top", 0);
				media.css("left", ((container_width-media.width())/2)+"px");
			} else {
				// adjust image by width
				// debug_message(section.attr("id")+" ajusta imagem pela largura");
				media.css("width", "100.1%");
				media.css("height", "auto");
				if(!section.hasClass("invert")){
					media.css("top", ((container_height-media.height())/2)+"px");
				} else {
					media.css("top", 0);
				}
				media.css("left", 0);
			}
			// media.css("visibility", "visible");
		} else {
			// debug_message("media size undefined of "+media.attr('src'));
		}
	}
}


/* ISLANDS */

function hide_gradient_on_start(){
	if(!$.browser.msie){
		$('.gradient-background').fadeTo(0,0);
	}
}

function hide_logo_on_start(){
	if(!$.browser.msie){
		$('#logo').fadeTo(0,0);
	}
}

function hide_content_on_start(){
	if(!$.browser.msie){
		$('#content .layer').fadeTo(0,0);
	}
}

function hide_island_on_start(){
	$('#islands .layer .container .slide').hide();
}

function show_logo(){
	if(!$.browser.msie){
		$('#logo').fadeTo("slow",1);
	}	
}

function show_content(){
	if(!$.browser.msie){
		$('#content .layer').fadeTo("slow",1);
	}
	$('#content-loading').hide();
}

function start_content_loading(){
	$('#content-loading').show();
	$('#content-loading').fadeTo(0,0);
	$('#content-loading').fadeTo("slow",1);
}

function islands_introduction(){
	hide_island_on_start();
	$('#islands .layer .container .slide:first-child').show();
	
	$('#islands .layer #island-1').css('left', '+100%');
	$('#islands .layer #island-2').css('left', '-100%');
	$('#islands .layer #island-3').css('left', '-100%');
	$('#islands .layer #island-4').css('left', '+100%');
	
	$('#content-loading').fadeTo("slow",0);

	$('#islands .layer #island-1').animate({ left: '0%' }, 2800, function(){});
	$('#islands .layer #island-2').animate({ left: '0%' }, 3200, function(){});
	$('#islands .layer #island-3').animate({ left: '0%' }, 3600, function(){});
	$('#islands .layer #island-4').animate({ left: '0%' }, 4000, function(){
		if(!$.browser.msie){
			$('.gradient-background').fadeTo("slow",1, function(){
				$('#logo').fadeTo("slow",1,function(){
					$('#islands .layer .container .slide').show();
					show_content();
				});
			});
		} else {
			$('#islands .layer .container .slide').show();
			show_content();
		}
	});
}

function move_islands_left(){
	if($("body").data('island_curr_pos')==1 || $("body").data('island_curr_pos')==5 || $("body").data('island_curr_pos')==9 || $("body").data('island_curr_pos')==13){
		move_islands(+2, 800);
	} else {
		move_islands(+1, 1000);
	}
}

function move_islands_right(){
	if($("body").data('island_curr_pos')==3 || $("body").data('island_curr_pos')==7 || $("body").data('island_curr_pos')==11 || $("body").data('island_curr_pos')==15){
		move_islands(-2, 800);
	} else {
		move_islands(-1, 1000);
	}
}

function start_islands(position){
	var ds1 = 37.5*position;
	var ds2 = 25.0*position;
	var ds3 = 12.5*position;
	var ds4 = 6.25*position;

	$('#island-1').css("left", "-"+ds1+"%");
	$('#island-2').css("left", "-"+ds2+"%");
	$('#island-3').css("left", "-"+ds3+"%");
	$('#island-4').css("left", "-"+ds4+"%");

	$("body").data('island_curr_pos', position);
	// test_islands(position);
}

function move_islands(distance, speed){
	last_position    = (typeof(current_position)=="undefined") ? 0 : current_position;
	current_position = $("body").data('island_curr_pos');
	direction        = (distance<0) ? "+" : "-";
	mod_distance     = (distance<0) ? distance*-1 : distance;

	if(current_position<=0 && direction=="+"){
		start_islands(16);
		current_position = 16;
	}
	if(current_position>=16 && direction=="-"){
		start_islands(0);
		current_position = 0;
	}

	// outdated usage:
	// var ds1 = 37.5*mod_distance;
	// var ds2 = 25.0*mod_distance;
	// var ds3 = 12.5*mod_distance;
	// var ds4 = 6.25*mod_distance;
	
	var ds1 = 37.5;
	var ds2 = 25.0;
	var ds3 = 12.5;
	var ds4 = 6.25;
	
	var r1 = (ds1*(current_position+distance))*-1;
	var r2 = (ds2*(current_position+distance))*-1;
	var r3 = (ds3*(current_position+distance))*-1;
	var r4 = (ds4*(current_position+distance))*-1;
	
	// debug_message(" 1) "+r1+" 2) "+r2+" 3) "+r3+" 4) "+r4+" current: "+current_position+" dist: "+distance);
	// outdated usage: $('#island-4').animate({ left: direction+'='+ds4+'%' }, speed*mod_distance);

	$('#island-1').animate({ left: r1+'%' }, speed*mod_distance);
	$('#island-2').animate({ left: r2+'%' }, speed*mod_distance);
	$('#island-3').animate({ left: r3+'%' }, speed*mod_distance);
	$('#island-4').animate({ left: r4+'%' }, speed*mod_distance, function(){
		current_position = current_position+distance;
		$("body").data('island_curr_pos', current_position);
		$("body").data('island_last_pos', last_position);
		// test_islands(distance);
		// debug_message(" 1) "+$('#island-1').css("left")+" 2) "+$('#island-2').css("left")+" 3) "+$('#island-3').css("left")+" 4) "+$('#island-4').css("left"));
	});
}


/* LOADING */

function show_loading(section_hash, what){
	if(what=="text"){
		$('body').data('stop_loading_text',false);
	}
	if(what=="media"){
		$('body').data('stop_loading_media',false);
	}
	setTimeout( function(){ proceed_show_loading(section_hash, what); }, 200 );
}

function hide_loading(section_hash, what){
	interrupt_show_loading(section_hash, what);
}

function proceed_show_loading(section_hash, what){
	if(what=="text"){
		if( !$('body').data('stop_loading_text') ){
			// debug_message('showltext ');
			$(section_hash+" .loading.loading-text").fadeTo('fast',1);
		}
	}
	
	if(what=="media"){
		if( !$('body').data('stop_loading_media') ){
			// debug_message('showlmedia ');
			$(section_hash+" .loading.loading-media").fadeTo('fast',1);
		}
	}
}

function interrupt_show_loading(section_hash, what){
	if(what=="text"){
	}

	if(what=="media"){
		$('body').data('stop_loading_media',true);
		$(section_hash+" .loading.loading-media").fadeTo('fast',0);
		// debug_message('abortlmedia ');
		
		$('body').data('stop_loading_text',true);
		$(section_hash+" .loading.loading-text").fadeTo('fast',0);
		// debug_message('abortltext ');
	}
}


/* TESTES */

function debug_message(msg){
	$("#teste").css("position", "absolute");
	$("#teste").css("z-index", "1000");
	$("#teste").css("font-size", "12px");
	$("#teste").css("line-height", "15px");
	$("#teste").css("width", "300px");
	$("#teste").css("height", "300px");
	$("#teste").css("overflow", "auto");
	$("#teste").css("background", "#909");
	$("#teste").append(msg);
	$("#teste p").css("font-size", "12px");
}

function test_islands(distance){
	$("#teste").css("position", "absolute");
	$("#teste").css("font-size", "18px");
	$("#teste").css("line-height", "24px");
	$("#teste").css("z-index", "1000");
	$("#teste").html(
		" #island-1 left = "+$('#island-1').css('left')+"<br />"+
		" #island-2 left = "+$('#island-2').css('left')+"<br />"+
		" #island-3 left = "+$('#island-3').css('left')+"<br />"+
		" #island-4 left = "+$('#island-4').css('left')+"<br />"+
		" current position = "+$("body").data('island_curr_pos')+"<br />"+
		" last position    = "+$("body").data('island_last_pos')+"<br />"+
		" distance         = "+distance
	);
}

function test_image_size(media_height, media_width, media_ratio, container_height, container_width, container_ratio, action){
	$("#teste").css("position", "absolute");
	$("#teste").css("font-size", "18px");
	$("#teste").css("line-height", "24px");
	$("#teste").css("z-index", "1000");
	$('#teste').html(
		" media_width = "+media_width+"<br />"+
		" media_height = "+media_height+"<br />"+
		" media_ratio = "+media_ratio+"<br />"+
		" container_width = "+container_width+"<br />"+
		" container_height = "+container_height+"<br />"+
		" container_ratio = "+container_ratio+"<br />"+
		" action = "+action+"<br />"
	);
}
