var cache = [];
// Arguments are image paths relative to the current page.
$.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
	var cacheImage = document.createElement('img');
	cacheImage.src = arguments[i];
	cache.push(cacheImage);
    }
}

function preload_work(){
    jQuery.preLoadImages("/img/portfolio/work/advertising/th/aigle.png","/img/portfolio/work/advertising/th/australia.png","/img/portfolio/work/advertising/th/compo.png","/img/portfolio/work/advertising/th/energymons.png","/img/portfolio/work/advertising/th/fucam.png","/img/portfolio/work/advertising/th/materne.png","/img/portfolio/work/advertising/th/pepsi.png","/img/portfolio/work/advertising/th/poche.png","/img/portfolio/work/advertising/th/sncb.png","/img/portfolio/work/design/th/actstar.png","/img/portfolio/work/design/th/asiastyle.png","/img/portfolio/work/design/th/bemyloft.png","/img/portfolio/work/design/th/cartedevoeux.png","/img/portfolio/work/design/th/farenheit.png","/img/portfolio/work/design/th/larcenet.png","/img/portfolio/work/design/th/monpetitgrain.png","/img/portfolio/work/design/th/portfolio.png","/img/portfolio/work/design/th/soulfury.png","/img/portfolio/work/design/th/unicef.png","/img/portfolio/work/design/th/zonart.png","/img/portfolio/work/illustration/th/color-bd.png","/img/portfolio/work/illustration/th/hippie.png","/img/portfolio/work/illustration/th/hoteldesdeuxmondes.png","/img/portfolio/work/illustration/th/lune.png","/img/portfolio/work/illustration/th/pieuvre.png","/img/portfolio/work/illustration/th/zwin.png");
}

function init(section){
	img_over();
	preload_work();
	switch(section){
		case 'home':
			transformHome();
		break;
		case 'about':
			transformAbout();
		break;
		case 'portfolio':
			transformPortfolio();
		break;
		case 'projects':
			transformProjects();
		break;
		case 'contact':
			transformContact();
		break;
	}
	if(!$.browser.msie){
	    $.address.init(function(event) {

		$('#slidingMenu a, a.alink').address(function() {
		    return $(this).attr('href').replace(location.pathname, '');
		});
	    }).change(function(event) {
		var text = (event.value == '') ? 'Home' :
		    event.pathNames[0].substr(0, 1).toUpperCase() +
		    event.pathNames[0].substr(1);
	    }).internalChange(function(event) {
			var link = event.value;
			var reg= new RegExp("/", "g");
			$(document).attr('title', link.replace(reg,'').charAt(0).toUpperCase()+link.replace(reg,'').substring(1)+' | Fred Faltin - Creative Designer');
	    }).bind('externalChange', {msg: '{value}'}, function(event) {
		var link = event.value;
		var reg= new RegExp("/", "g");
		if(link != ''){
		    get_content(link,$('#content'),link.replace(reg,''));
			$(document).attr('title', link.replace(reg,'').charAt(0).toUpperCase()+link.replace(reg,'').substring(1)+' | Fred Faltin - Creative Designer');
		}
	    });
	}
}

function transformHome() {
    
	jQuery.preLoadImages("/img/home/aboutme.png.over.png", "/img/home/blog.png.over.png","/img/home/contactme.png.over.png","/img/home/seemorework.png.over.png");
	
	$('a.alink').click(function(e){
	    var $this = $(this);
	    e.preventDefault();
	    $('#content').animate({'left':'-1000px','opacity':'0'},600,'easeOutExpo',function(){
		    get_content($this.attr('href'),$('#content'),$this.attr('href').replace('/',''));
	    });
	});
}

function transformAbout() {
	
}

function transformPortfolio() {
	fnm($('.cat-work a'));
	var notOver = true;
	if(notOver){
	$('.cat-work p a').bind('mouseenter',
		function(){
		    $('.cat-work p a').stop(true, true);
		    $(this).addClass('current');
		    $(this).animate({'opacity':'0.4'},300,function(){notOver = false;});

		}).bind('mouseleave',
		function(){
		    $(this).stop(false, false).animate({'opacity':'1'},300,function(){notOver = true;});
		});
	}
	
}

function transformProjects() {
	
}

function transformContact() {
	fnm($('a.nm'));
}

var windowWidth;
var windowHeight;

function get_content(u,d,c){
	$.ajax({
	  url: u,
	  cache: false,
	  error: function(XMLHttpRequest, textStatus, errorThrown){
		d.css({'left':windowWidth+'px'});
		d.animate({'left':'90px','opacity':'1'}, 600, 'easeOutExpo');
		d.html('Sorry, the requested file isn\'t available.');
		d.removeClass();
		d.addClass(c);
	  },
	  success: function(html){
		d.css({'left':windowWidth+'px'});
		d.animate({'left':'90px','opacity':'1'}, 600, 'easeOutExpo');
		d.html($(html).find('#content').html());
		d.removeClass();
		d.addClass(c);
		init(c);
	  }
	});
}

$(document).ready(function() {
	
	init($('#content').attr('class'));
	
	var offsetWidth;
	var $window = $(window);
	var $wrapper  = $('#wrapper');
	var $body = $('body');
	var $content = $('#content');
	var $tagmenu = $('#tagmenu');
	var $menu = $("#slidingMenu");
	var $selected = $menu.find('li.current');
		
	function min(){
		windowWidth = $window.width();
		windowHeight = $window.height();
		if(windowWidth < 950){
			windowWidth = 950;
			$wrapper.css({'width':'950px'});
			$body.css({'overflow-x':'scroll'});
		} else {
			$wrapper.css({'width':windowWidth+'px'});
			$body.css({'overflow-x':'hidden'});
		}
		if(windowHeight < 650){
			windowHeight = 650;
			$wrapper.css({'height':'650px'});
			$body.css({'overflow-y':'scroll'});
		} else {
			$wrapper.css({'height':windowHeight+'px'});
			$body.css({'overflow-y':'hidden'});
		}
	}
	
	$window.load(min);
	$window.resize(min);

	Cufon.replace('#menu a, #menu span, #tagmenu').CSS.ready(function() {
		if (!jQuery.browser.msie) {
			var $moving		= $('<li />',{
				className	: 'move',
				top			: $selected[0].offsetTop + 'px',
				width		: $selected[0].offsetWidth + 'px'
			});
		}
		
		$('#slidingMenuDesc > div').each(function(i){
			var $this = $(this);
			$this.css('top',$menu.find('li:eq('+i+')')[0].offsetTop + 'px');
		});
		
		$tagmenu.bind('mouseenter',function(){
			$menu.animate({'left':'-10'}, 400, 'easeOutExpo', function(){});
			$tagmenu.fadeOut('fast');
		})
			.bind('mouseleave',function(){
		});
		
		$menu.bind('mouseleave',function(){
				if (!jQuery.browser.msie) {
					moveTo($selected,400);
				}
				$menu.animate({'left':'-200'}, 400, function(){});
				$tagmenu.fadeIn('fast');
			  })
			 .append($moving)
			 .find('li')
			 .not('.move')
			 .bind('mouseenter',function(){
				var $this = $(this);
				offsetWidth = $this.width();
				$('#slidingMenuDesc > div[data-menu-descr='+$this.attr('data-menu-descr')+']').stop(true).animate({'width':windowWidth-offsetWidth-30+'px', 'display':'block', 'right': offsetWidth-offsetWidth+'px'},400, 'easeOutExpo');
				if (!jQuery.browser.msie) {
					moveTo($this,400);
				}
				$content.css({
					'opacity': '0.4',
					'z-index':'0'
					});
			  })
			  .bind('mouseleave',function(){
				flog('Menu mouseleave');
				var $this = $(this);
				$('#slidingMenuDesc > div[data-menu-descr='+$this.attr('data-menu-descr')+']').stop(true).animate({'width':'0px', 'display': 'none', 'right':'0px'},400, 'easeOutExpo',function(){ $(this).hide();});
				$content.css({'opacity': '1'});
			  }).bind('click',function(e){
				if(!$.browser.msie){
					e.preventDefault();
				}
				//e.preventDefault();
				$menu.find('li.current').removeClass('current');
				var $this = $selected = $(this);
				$this.addClass('current');
				$('#slidingMenuDesc > div[data-menu-descr='+$this.attr('data-menu-descr')+']').stop(true).animate({'width':'0px','display':'none'},400, 'easeOutExpo',function(){ $(this).hide();});
				$content.css({'opacity': '1'});
				if($content.attr('class') != $this.attr('data-menu-descr')){
				    $content.animate({'left':'-1000px','opacity':'0'},600,'easeOutExpo',function(){
					    get_content($this.find('a').attr('href'),$content,$this.attr('data-menu-descr'));
				    });
				}
			  });
			  
		function moveTo($elem,speed){
			$moving.stop(true).animate({
				top		: $elem[0].offsetTop + 'px',
				width	: $elem[0].offsetWidth + 'px'
			}, speed, 'easeOutExpo');
		}
	}) ;
});

function img_over(){
	var src;
	$('img.overed').hover(function(){
		src = $(this).attr('src');
		var nsrc = 'over-'+$(this).attr('src');
		$(this).attr('src',$(this).attr('src')+'.over.png');
	}, function(){
		$(this).attr('src',src);
	});
}

function flog(value){
   if(!$.browser.msie){
	  //console.log(value);
   }
}
function fnm(obj){
	if(obj.length != 0){
		obj.click(function(e){e.preventDefault();});
		obj.nm();
	}
}
