if (window['loadFirebugConsole']) window.loadFirebugConsole(); 
else if (!window['console']) window.console = { info:function(s){}, log:function(s){}, warn:function(s){}, error:function(s){} }
var iPad = (navigator.userAgent.match(/iPad/i) != null) ? true : false;
var swipeAndDrag = true;

var NUMBER_OF_BRANDS = 4;
var HEADER_HEIGHT = 82;
var HEADERS_FOOTER_HEIGHT = 144;
var HEADER_BOTTOM_HEIGHT = 25;
var DEFAULT_BRAND = 'fred-david';
var IPAD_BRANDS_H_HEIGHT = 447;
var BASE_URL = 'http://' + window.location.hostname;

var currentSection;
var brands = [
	{
		slug:'fred-david',
		className:'fred-david',
		order:1
	},
	{
		slug:'como-black',
		className:'como-black',
		order:2
	},
	{
		slug:'brina-and-em',
		className:'brina-and-em',
		order:3
	},
	{
		slug:'1010-jeans',
		className:'ten-ten-jeans',
		order:4
	}
];

function map(arr, func, params){
	var result = [];
	var l = arr.length;
	for(var i =0; i < l; i++){
		result[i] = func(arr[i], params);
	}
	return result;
}

function walkUntilValue(arr, func, params){
	var val;
	var l = arr.length;
	for(var i = 0; i < l; i++){
		val = func(arr[i], params);
		if(val !== undefined) return val;
	}
}

function getBrandOrderBySlug(slug){
	return walkUntilValue(brands, function(brand, slug){ if(brand.slug === slug) return brand.order; }, slug);
}

function getBrandOrderByClassName(className){
	return walkUntilValue(brands, function(brand, className){ if(brand.className === className) return brand.order; }, className);
}

function getBrandSlugByOrder(order){
	return walkUntilValue(brands, function(brand, order){ if(brand.order === order) return brand.slug; }, order);
}

function getBrandClassNameByOrder(order){
	return walkUntilValue(brands, function(brand, order){ if(brand.order === order) return brand.className; }, order);
}

function selectRoundButton(index){
	var i = 1;
	$('.brand-round-buttons > a').each(function(){
		if(i === index){
			$(this).addClass('brand-round-button-selected');
		}
		else{
			$(this).removeClass('brand-round-button-selected');
		}
		i++;
	});
}

function showBrandLogo(prevOrNext, className){
	var index = getBrandOrderByClassName(className);
	var prevLogo = $("#previous-brand-logo");
	var nextLogo = $("#next-brand-logo");
	var src;
	var cls;
	function fadeInLogo(logo, src, cls){
		if (!logo) return;
		logo.attr('src',src);
		logo.attr('class','');
		logo.addClass(cls+'-header-logo');
		logo.fadeIn('fast');
	}
	if(prevOrNext === 'previous'){
		src = BASE_URL + '/images/'+getBrandSlugByOrder(index-1).replace(/-/g,'_')+'_logo_previous.jpg';
		cls = getBrandClassNameByOrder(index-1);
		if(prevLogo.css('display') !== 'none'){ prevLogo.fadeOut(600); }
		setTimeout(fadeInLogo, 600, prevLogo, src, cls);
	}
	else{
		src = BASE_URL + '/images/'+getBrandSlugByOrder(index+1).replace(/-/g,'_')+'_logo_next.jpg';
		cls = getBrandClassNameByOrder(index+1);
		if(nextLogo.css('display') !== 'none'){ nextLogo.fadeOut(600); }
		setTimeout(fadeInLogo, 600, nextLogo, src, cls);
	}
}

function fadeInHeaderBrand(className){
	var index = getBrandOrderByClassName(className);
	if($(".previous-brand-button").css('display') === 'none' && index > 1){
		$(".previous-brand-button").fadeIn('slow');
	}
	if($(".next-brand-button").css('display') === 'none' && index < NUMBER_OF_BRANDS){
		$(".next-brand-button").fadeIn('slow');
	}
	if(index > 1){
		showBrandLogo('previous', className);
	}
	else{
		if($("#previous-brand-logo").css('display') !== 'none'){
			$("#previous-brand-logo").add(".previous-brand-button").fadeOut('slow');
		}
	}
	if(index < NUMBER_OF_BRANDS){
		showBrandLogo('next', className);
	}
	else{
		if($("#next-brand-logo").css('display') !== 'none'){
			$("#next-brand-logo").add(".next-brand-button").fadeOut('slow');
		}
	}
}

function fadeInBrand(slug){
	$("#brands").children("."+slug).fadeIn('slow');
	fadeInHeaderBrand(slug);
	$("#brands").css({
		display:'block'
		//backgroundImage:"url('"+BASE_URL+"/images/"+slug.replace(/-/g,'_')+"_faded_background.jpg')"
	});
	$(".lookbook-circles").stop(true, true);
	$(".brand-circles").slideDown('slow');
}

function fadeOutMainScreen(callback, param){
	// remove circles if they are there
	$(".main-header-bottom").each(function(){
		if($(this).css('display') !== 'none'){
			$(this).slideUp('slow');
		}
	});

	if($(".next-brand-button").css('display') !== 'none'){
		$(".next-brand-button").fadeOut('slow');
	}
	if($(".previous-brand-button").css('display') !== 'none'){
		$(".previous-brand-button").fadeOut('slow');
	}

	currentSection.fadeOut('slow',function(){
		$("#previous-brand-logo, #next-brand-logo").css('display','none');
		$("#lookbooks").data('currentLookbook').css('display','none');
		$("#brands").data('current_brand').css('display','none');
		callback(param);
	});
}

function selectNavLink(section){
	$("nav > a > img").each(function(){
		$(this).removeClass('nav-selected');
		$(this).attr('src',$(this).attr('src').replace('_selected',''));
		if($(this).attr('src').indexOf(section) !== -1){
			$(this).addClass('nav-selected');
			$(this).attr('src',$(this).attr('src').replace('.jpg','_selected.jpg'));
		}
	});
}

function showBrand(className){
	if(className === undefined){
		className = DEFAULT_BRAND;
	}
	// fade out current content
	if(currentSection.attr('id') !== 'brands'){
		fadeOutMainScreen(fadeInBrand, className);
	}
	else{ // check if the seleted brand is already there.
		if($("#brands").data('current_brand').hasClass(className)){
			return false;
		}
		$("#brands").data('current_brand').fadeOut('slow', function(){
			$("#brands").css('minHeight',$("."+className).css('minHeight'));
			fadeInBrand(className);
		});
	}
	// select header circle
	$(".brand-circles > a").removeClass('selected-round-button');
	$(".brand-circles > a").each(function(){
		if($(this).hasClass(className+'-circle')){
			$(this).addClass('selected-round-button');
			return false;
		}
	});
	selectNavLink('brands');
	currentSection = $("#brands");
	$("#brands").data('current_brand',$("#brands").children('.'+className));
	$("#brands").data('current_index',getBrandOrderByClassName(className));
	$("#brands").css('minHeight',$("#brands").data('current_brand').css('minHeight'));
	return true;
}

function createLookbookCircles(slug){
	var html = '';
	var l = $('.'+slug+'-lookbook ul li').length;
	for(var i = 0; i < l; i++){
		html += '<a class="lookbook-round-button-'+i+'" href="#">&#x2022;</a>';
	}
	$(".lookbook-circles").html(html);
}

function showLookbook(slug){
	$("#lookbooks").fadeOut('slow', function(){
		$('.'+slug+'-lookbook').css('display','block');
		$("#lookbook-container").fadeIn('slow');
	});
	createLookbookCircles(slug);
	$(".lookbook-circles").slideDown('slow');
	currentSection = $("#lookbook-container");
	$("#lookbook-previous-button").css('display','none');
	$("#lookbooks").data('currentLookbook',$('.'+slug+'-lookbook'));
	if($("#lookbooks").data('currentLookbook').children().first().data('user_options').snapPoints.length < 2){
		$("#lookbook-next-button").css('display','none');
	}
	$("#lookbooks").data('currentLookbook').swipeAndDrag('selectCorrectCircle');
	$("#lookbooks").data('currentLookbook').swipeAndDrag('showOrHidePrevAndNext');
	return true;
}
		
function showBlog(){
	var blogLink = $("#main-blog-link").attr("href");
	$("#blog").load(blogLink+' #blog-container', function(responseText, textStatus, XMLHttpRequest){
		// catch errors and follow the normal route
		if (textStatus == "error") {
			window.location.href = blogLink;
			return true;
		}
		Cufon.refresh('.post-title, .post-date, #blog-posts .page-title, #sidebar a, #blog-posts .entry, #blog-navigation .alignleft, #blog-navigation .alignright');
		fadeOutMainScreen(fadeInSection, 'blog');
	});
	return false;
}

function getClassName(slug){
	if(slug === '1010-jeans'){
		return 'ten-ten-jeans';
	}
	return slug;
}

function showSection(section){
	if($("#"+section).length === 0) return true;
	switch(section)
	{
		case 'brands':
			if(!showBrand()){
				return true;
			}
			break;
		case 'blog':
			return showBlog();
			break;
		default:
			fadeOutMainScreen(fadeInSection, section);
	}
	return false;
}

function fadeInSection(section){
	$('#'+section).fadeIn('slow');
	selectNavLink(section);
	currentSection = $("#"+section);
}

function initializeSwitchBrandButtons(){
	$(".switch-brand-button").click(function(){
		if($(this).hasClass('next-brand-button')){
			if(showBrand(getBrandClassNameByOrder($("#brands").data('current_index')+1))){
				return false;
			}
		}
		else{
			if(showBrand(getBrandClassNameByOrder($("#brands").data('current_index')-1))){
				return false;
			}
		}
	});
}

jQuery.fn.inlineFieldLabel = function(label) {	
	return this.each(function() {
		var $field = $(this); // your text input field
		var labelText = label || $field.attr("title");	 // string to put in your text input
		
		if ($field.val()=="") {
			$field.addClass("intra-field-label").val(labelText);
		}
		
		$field
			.hover(
				function(e) { $field.addClass("ui-state-hover"); },
				function(e) { $field.removeClass("ui-state-hover"); }
			)
			.focus(function() {
				if (!$field.hasClass("intra-field-label")) return;
				$field.removeClass("intra-field-label").val("");
			})
			.blur(function() {
				if ($field.val()=="") $field.addClass("intra-field-label").val(labelText);
			})
			.closest("form").submit(function() {
				if (!$field.hasClass("intra-field-label")) return;
				$field.val("");
			});
	});
};

$(function(){
	
	swipeAndDrag = !($.browser.msie  && parseInt($.browser.version) == 7);
	
	if (swipeAndDrag) {
		$('.home .lookbook > ul').swipeAndDrag({
			direction:'horizontal',
			useSnapPoints:true,
			nextButton: 'lookbook-next-button',
			previousButton: 'lookbook-previous-button',
			navButtons: '.lookbook-circles'
		});
		$('.home > #lookbook-container').css({position:'relative', left:'0', top:'0', display:'none'}); // done here so that swipeaAndDrag can get the width of the images.
	}
	$('.main-page .lookbook').css('display','none');
	
	currentSection = $("#home");
	$("#brands").data('current_brand',$(".brand").first());
	$("#lookbooks").data('currentLookbook',$('.lookbook').first());

	$(".home-brand-logo-container > a").add(".brand-circles > a").click(function(){
		if($(this).hasClass('selected-round-button')){
			return false;
		}
		var slug = $(this).attr('href').substr($(this).attr('href').lastIndexOf('/') + 1, $(this).attr('href').length);
		if(showBrand(getClassName(slug))){
			return false;
		}
	});

	if($('body').hasClass('main-page')){
		initializeSwitchBrandButtons();
	}

	$("nav > a").click(function(){
		var section;
		if($(this).attr('href')==BASE_URL || $(this).attr('href')==BASE_URL+"/"){
			section = 'home';
		}
		else{
			section = $(this).attr('href').replace(BASE_URL+"/", '');
		}
		// blog can be "blog" or "blog/LANG"
		if (section.indexOf('blog')===0) section = 'blog';
		var ret = showSection(section);
		return ret;
	});
	
	$("#lookbooks-links > a").click(function(){
		var slug = $(this).attr('href').substr($(this).attr('href').lastIndexOf('/') + 1, $(this).attr('href').length);
		if(showLookbook(slug)){
			return false;
		}
	});

	$("#blog a").live('click',function(){
		var link = $(this);
		var blogLink = link.attr('href');
		$("#blog-container").fadeOut('fast',function(){
			document.getElementById('blog').innerHTML = '';
			$("#blog").load(blogLink+' #blog-container', function(responseText, textStatus, XMLHttpRequest){
				// catch errors and follow the normal route
				if (textStatus == "error") {
					window.location.href = blogLink;
					return true;
				}
				Cufon.refresh('.post-title, .post-date, #blog-posts .page-title, #sidebar a, #blog-posts .entry, #blog-navigation .alignleft, #blog-navigation .alignright');
			});
		});
		return false;
	});

	$("#lookbook-previous-button").click(function(){
		$("#lookbooks").data('currentLookbook').swipeAndDrag('scrollBackwards');
		return false;
	});

	$("#lookbook-next-button").click(function(){
		$("#lookbooks").data('currentLookbook').swipeAndDrag('scrollForward');
		return false;
	});

	$(".lookbook-circles > a").live('click',function(){
		if($(this).hasClass('selected-round-button')){
			return false;
		}
		$("#lookbooks").data('currentLookbook').swipeAndDrag('scrollToIndex',parseInt($(this).attr('class').charAt($(this).attr('class').length-1),10));
		$(this).siblings().removeClass('selected-round-button');
		$(this).addClass('selected-round-button');
		return false;
	});
	
	// preload nav selected images
	$("nav > a > img").each(function(){
		document.createElement('img').src=$(this).attr('src').replace('.jpg','_selected.jpg');
		document.createElement('img').src=BASE_URL+"/images/nav_home.jpg";
	});
	
	// set brands height
	setNewHeights();
	if(iPad){
		window.onorientationchange = onOrientationChange;
	} else {
		$(window).resize(function(){
			/*
			$(".main").css('min-height',(window.innerHeight - HEADERS_FOOTER_HEIGHT) + "px");
			$('#brands').add('.brand').add('#lookbook-container').css('min-height',(window.innerHeight - HEADERS_FOOTER_HEIGHT - HEADER_BOTTOM_HEIGHT) + "px");
			*/
			setNewHeights();
		});
	}

	$("#contact-form input, #contact-form textarea").inlineFieldLabel();
	$("#contact-form label").hide();
	$("#contact-form").submit(onContactFormSubmit);
});

function setNewHeights()
{
	$(".main").css('height',(window.innerHeight - HEADERS_FOOTER_HEIGHT) + "px");
	$('#brands').add('.brand').add('#lookbook-container').css('height',(window.innerHeight - HEADERS_FOOTER_HEIGHT - HEADER_BOTTOM_HEIGHT) + "px");
	$('#blog').css('height','auto');
}

function onOrientationChange(e)
{
	setNewHeights();
}

function getCleanedFormURI(uri)
{
	var anchorIndex = uri.indexOf('#');
	if (anchorIndex > 0) uri = uri.substring(0, anchorIndex);
	return uri;
}

function onContactFormSubmit(e) {
	var $form = $(e.currentTarget);
	var formUrl = getCleanedFormURI($form.attr("action"));
	$.ajax({
		url: formUrl,
		type: $form.attr("method"),
		data: $form.serialize(),
		dataType: "html",
		cache: false,
		success: onFormSubmitSuccess,
		error: onFormSubmitError
	});
	return false;
}

function onFormSubmitSuccess(data, textStatus, XMLHttpRequest) {
	$("#form-result-holder").hide().html('<div class="form-result">'+data+'</div>').fadeIn();
	$("#contact-form input, #contact-form textarea").blur();
}

function onFormSubmitError(XMLHttpRequest, textStatus, errorThrown) {
	$("#form-result-holder").hide().html('<div class="form-result">Your enquiry could not be submitted right now. Please retry later.</div>').fadeIn();
	$("#contact-form input, #contact-form textarea").blur();
}

