var headerPadding = 0;
var sliderHeight = 150;
var currentArray;

jQuery(document).ready( function($) {

	stickyFooter();

	$('#slider li').live('mouseover',
	function() {
		sliderOpacity = ($('body').hasClass('single')) ? 0.15 : 1;
		$(this).find('img').stop().fadeTo('fast', 0.5)
		$(this).find('h2').stop().fadeTo('fast', 1);
	});
	
	$('#slider li').live('mouseout', function() {
		$(this).find('img').stop().fadeTo('fast', ($(this).hasClass('on') ? 1 : sliderOpacity));
		$(this).find('h2').stop().fadeTo('fast', 0);
	});
	
//	$('body:not([class~="page"]) #menu-categories li a').click( function() {
	$('#menu-categories li a').click( function() {
		return getUrl($(this));
	});

//	$('body:not([class~="page"]) #slider li a').live('click', function() {
	$('#slider li a').live('click', function() {
		return getUrl($(this));
	});
	
	$('#other-videos a').live('click', function() {
		link = this.href;
		$('#videocontent').fadeTo('fast', 0).load(link + ' #video', function() {
			$('#videocontent').fadeTo('slow', 1);
			stickyFooter();
		});
		return false;
	});
	

	if ($('#slider').length > 0) loadSlider();
	
	if ($('body').hasClass('home')) {
		$('#header').hide().delay(800).fadeIn(1500, function() {
		
		
		if ($.address.value() == '/' && intro)	{
			$('#footer').after('<a id="triggerPopup" href="'+intro+'" style="position: absolute; height: 10px;"></a>');
			$('#triggerPopup').fancybox(
				{
				type: 'iframe',
				width: 800,
				height: 450,
				padding: 0,
				overlayOpacity: 0,
				overlayColor: '#2a1a1a',
				transitionIn:	'fade',
				speedIn:	800,
				onComplete: vimeoPlayer
				}
			);
			$('#triggerPopup').slideUp(1, function() {
				$('#triggerPopup').click();
			});
		}

		
		
		});
	}

	$.address.change(function(event) {
		addressChanged();		
	});

});

jQuery(window).resize(function($) {
	stickyFooter();
});

function addressChanged() {
	var currentAddress = jQuery.address.value();
	
	currentArray = currentAddress.split('/');
	currentArrayLength = currentArray.length;
	
	checkCallBack = (currentArray[1] == 'category') ? false : true;
	if (jQuery('#slider.'+currentArray[2]).length > 0 && currentArrayLength > 3) checkSlider(jQuery('#slider')); 
	else checkCategory(checkCallBack); 
}

function stickyFooter() {
	var wrapper = jQuery('#wrapper');
	if (jQuery(window).height() < wrapper.height()) {
		wrapper.css('position', 'relative');
	} else {
		wrapper.css('position', 'static');		
	}
	
	if (jQuery('body').hasClass('home')) {
		headerHeight = jQuery('#header').height();
		windowHeight = jQuery(window).height();
		headerPadding = ((windowHeight/2)-(headerHeight/2));
		jQuery('#header').css('padding-top', headerPadding+'px');

	}
}

function loadSlider()	{
	jQuery('#slider ul').carouFredSel({
		auto: false,
		prev: "#prev",
		next: "#next",
		items: {visible: 5},
		scroll: {duration: 800, items: 5, easing: 'swing'}
	});
}

function clickCat(elt, callback)	{

	// jQuery('#header').stop();

	if (jQuery('body').hasClass('home')) {
		jQuery('#header').animate({
			paddingTop: '-='+sliderHeight
			}, 800, 'swing'
		);
	} else {
		jQuery('#header').animate({
			paddingTop: (headerPadding-sliderHeight)
			}, 800, 'swing'
		);
	}
	jQuery('#menu-categories li').removeClass('current-menu-item');
	elt.parent().addClass('current-menu-item');
	link = elt.attr('href');
	jQuery('#container').fadeTo('fast', 0, function() {
		jQuery('#container').load(link + ' #content', function() {
			jQuery('body').addClass('archive').removeClass('single home');
			jQuery('#container').append('<hr class="spacer" />');
			loadSlider();
			jQuery('#container').fadeTo('slow', 1);
			if (callback) checkSlider(jQuery('#container').find('#slider'));
		});
	});
	
}

function clickSlider(elt) {
	jQuery('#header').stop();

	if (jQuery('body').hasClass('archive')) {
		jQuery('#header').animate({
			paddingTop: '0'
			}, 800, 'swing'
		);
	}
	jQuery('#slider li').removeClass('on').attr('style', '');
	jQuery('#slider li img').attr('style', '');
	elt.parent('li').addClass('on');
	elt.parent().parent('li').addClass('on');
	link = elt.attr('href');
	jQuery('#postcontent').fadeTo('fast', 0, function() {
		jQuery('#postcontent').load(link + ' div.post', function() {
			jQuery('body').addClass('single');
			jQuery('#postcontent').fadeTo('slow', 1);
			stickyFooter();
		});
	});

}

function getUrl(elt)	{
	elt.blur();
	var url = elt.attr('href').split('/');
	var urlLength = url.length;
	if (url.length > 6) jQuery.address.value(url[urlLength-4]+'/'+url[urlLength-3]+'/'+url[urlLength-2]);
	else jQuery.address.value(url[urlLength-3]+'/'+url[urlLength-2]);
	return false;
}

function checkCategory(callback) {
	jQuery('#menu-categories li a').each( function() {
		if (this.href.indexOf('/category/'+currentArray[2]) > 0) clickCat(jQuery(this), callback);
	});
}

function checkSlider(elt) {
	elt.find('li h2 a').each( function() {
		if (this.href.indexOf('/project/'+currentArray[2]+'/'+currentArray[3]+'/') > 0) clickSlider(jQuery(this));
	});
}

function vimeoPlayer(){

     // Listen for the ready event for any vimeo video players on the page
    var player = document.getElementById('fancybox-frame');
    $f(player).addEvent( 'ready', ready);
   
    /**
     * Utility function for adding an event. Handles the inconsistencies
     * between the W3C method for adding events (addEventListener) and
     * IE's (attachEvent).
     */
    function addEvent(element, eventName, callback) {
        if (element.addEventListener) {
            element.addEventListener(eventName, callback, false);
        }
        else {
            element.attachEvent('on' + eventName, callback);
        }
    }
   
    /**
     * Called once a vimeo player is loaded and ready to receive
     * commands. You can add events and make api calls only after this
     * function has been called.
     */
    function ready(player_id) {
        // Keep a reference to Froogaloop for this player
        var froogaloop = $f(player_id);
          
        onFinish();

        function onFinish() {
            froogaloop.addEvent('finish', function(data) {
                jQuery.fancybox.close();
            });
        }

    }
   

}

