var preloader = new Array();
var use_sounds = false;
var last_thumb = -1;
var letters = [
	{ id: 'jquery', image: '/images/jquery.jpg', starty:30 , scrollx:-75, align:'left', sound:'outside'},
	{ id: 'academic', image: '/images/asu.jpg', starty:30,  scrollx:-50, align:'left', sound:'street' },
	{ id: 'gallery', image: '/images/gallery.jpg', starty:30, scrollx:-50, align:'right', sound:'gallery'},
	{ id: 'share', image: '/images/share.jpg', starty:275, scrollx:-40, align:'right', sound:'beach' },
	{ id: 'studio', image: '/images/studio.jpg', starty:30, scrollx:-75, align:'right', sound:'museum' }
];

//load SoundManager 2
soundManager.flashVersion = 9;
soundManager.consoleOnly = true;
soundManager.debugMode = true;
soundManager.url = baseUrl+"/swf/";
soundManager.useHighPerformance = true;
soundManager.useFastPolling = true;
soundManager.onload = function() {
	use_sounds = true;
	if ($("#body").hasClass('index')){
		soundManager.createSound({id:'bounce', url:baseUrl+'/sounds/bounce.mp3',multiShot: true, autoLoad:true });
		
		soundManager.createSound({id:'outside', url:baseUrl+'/sounds/outside.mp3', autoLoad:true });
		soundManager.createSound({id:'street', url:baseUrl+'/sounds/street.mp3', autoLoad:true });
		soundManager.createSound({id:'museum', url:baseUrl+'/sounds/museum.mp3', autoLoad:true });
		soundManager.createSound({id:'beach', url:baseUrl+'/sounds/beach.mp3', autoLoad:true });
		soundManager.createSound({id:'gallery', url:baseUrl+'/sounds/gallery.mp3', autoLoad:true });
		
		startHomePage();
	}
	if ($("#body").hasClass('work')){
		soundManager.createSound({id:'swoosh', url:baseUrl+'/sounds/swoosh.mp3',multiShot: true, autoLoad:true });
		startWorkGallery();
	}
	
	if ($("#body").hasClass('about')) startAbout();
}
soundManager.onerror = function (){
	if ($("#body").hasClass('index')) startHomePage();
	if ($("#body").hasClass('work')) startWorkGallery();
	if ($("#body").hasClass('about')) startAbout();
}
//preloader
preloadImage(baseUrl+"/images/letters.png");
preloadImage(baseUrl+"/images/letters_mask.png");


//on page load
$(function (){
	$("div.letter").hide();
	if ($("#body").hasClass('media')) startMedia();
});

//Preload image
function preloadImage(file){
	temp = new Image();
	temp.src = file;
	preloader.push(temp);
}
//start home page animations
function startHomePage(){
	$("div.letter").each(function (i){
		$(this)[0].topPos =letters[i].starty;
		
		if (use_sounds) bounceSound('bounce', 200*i);
		
		$(this).css('top', ($(this)[0].topPos-800)+'px').show().delay(i*200).animate({top:$(this)[0].topPos}, 2000, 'easeOutBounce', function (){
			$(this).addClass('letter-masked');	
			if (letters[i]!=null){
				preloadImage(baseUrl+ letters[i].image);
				$(this).find("div.image").css("background", "url("+baseUrl+letters[i].image+")");
				$(this).find("div.mask").mouseenter(function (){
					if (use_sounds) soundManager.play(letters[i].sound);
					$('#'+letters[i].id).stop().css('opacity',1).show().children().each(function (t){
						if (letters[i].align=='left'){																		  
							$(this).css({opacity:0, 'left':0}).stop().delay(t*200).animate({opacity:1, 'left':20}, 'fast', 'linear').animate({'left':0}, 'slow','easeOutQuint');
						}else{
							$(this).css({opacity:0, 'right':0}).stop().delay(t*200).animate({opacity:1, 'right':20}, 'fast', 'linear').animate({'right':0}, 'slow','easeOutQuint');							
						}
					});
					$(this).siblings(".image").css({'left':0}).stop().animate({'left':letters[i].scrollx, opacity:[1,'easeOutQuint']}, 3000);
				}).mouseleave(function (){
					if (use_sounds) soundManager.stop(letters[i].sound);
					$('#'+letters[i].id).stop().animate({opacity:0}, function (){$(this).hide() });
					$(this).siblings(".image").stop().animate({opacity:0}, "normal");
				}).click(function (){
					document.location.href = baseUrl + $('#'+letters[i].id).find('a').attr('href');
				});;
			}
		});
	});
}

function bounceSound(sound_id, delay){
	var randFactor = (Math.random()*20)+1;
	setTimeout(function (){
		soundManager.play(sound_id, {volume:(100-randFactor)});
		setTimeout(function (){
			soundManager.play(sound_id, {volume:(40-randFactor*0.8)});
			setTimeout(function (){
				soundManager.play(sound_id, {volume:(30-randFactor*0.5)});
				setTimeout(function (){
					soundManager.play(sound_id, {volume:(20-randFactor*0.2)});
					setTimeout(function (){
						soundManager.play(sound_id, {volume:(10-randFactor*0.1)});
					}, 75);									
				}, 125);				
			}, 350);
		}, 700);
		
	}, 700+delay);
}


//start about interactivity
function startAbout(){
	$(document).keydown(function (event){
		if (event.keyCode ==32){
			$("#pageContent").find("strong").each(function (i){
				$("#pageContent").stop().animate({'color':'#666'},"slow");
				$(this).stop().animate({'color':'#FFF'},"slow");
			});
		}
	}).keyup(function (event){
		if (event.keyCode ==32){
			$("#pageContent").find("strong").each(function (i){
				$("#pageContent").stop().animate({'color':'#B3B3B3'},"slow");
				$(this).stop().animate({'color':'#B3B3B3'},"slow");
			});
		}
	}).focus();
	$("#pageContent").find("strong").each(function (i){
		$(this).wrap('<a href="http://www.google.com/search?q=define%3A+'+$(this).text().replace(/ /gi, '+')+'" target="_blank">');
		$(this).delay(10*i).animate({'color':'#FFF'},"slow").animate({'color':'#B3B3B3'},"slow");
	});
	
}

//start the work gallery interactivity
function startWorkGallery(){
	$("#work-gallery > div").css("width", $("#work-gallery").find(".job").length*880);
	$("#work-gallery").css("overflow-x", "hidden")//.find(".job:first").siblings(".job").children(".screenshot").css("opacity", 0.25).siblings().hide();
	$("#work-gallery").after('<div id="gallery-thumbs"><div class="thumbs-container" style="width:'+(($("#work-gallery").find(".job").length+1)*120)+'px;"></div></div>');
	$("#work-gallery").find(".job").each(function (){
		$("#gallery-thumbs .thumbs-container").append('<div class="thumb" style="background:url('+$(this).children(".screenshot").children("img").attr("src")+') no-repeat top left;"></div>');
	});
	$("#gallery-thumbs").prepend('<div id="thumb-selected" class="arrow-selected"></div><div id="thumb-back"></div><div id="thumb-next"></div>');
	$("#gallery-thumbs .thumbs-container").children(".thumb").each(function (){ this.selected = false; });
	$("#gallery-thumbs .thumbs-container").children(".thumb").each(function (i){
		$(this).click(function (){
			$(this).addClass("selected").siblings().removeClass("selected");
			window.location.hash="work"+(i+1);
			$("#thumb-selected").animate({"left": (48+(126*i))+"px"}, "normal");
			$("#gallery-thumbs .thumbs-container").children(".thumb").each(function (){ this.selected=false;});
			this.selected = true;
		}).hover(function(){
				$("#thumb-back").stop().animate({"opacity":0.5}, "normal");
				$("#thumb-next").stop().animate({"opacity":0.5}, "normal");
				$(this).stop().animate({"opacity": 1}, "slow").siblings().stop().animate({"opacity": 0.25}, "normal");
			}, function(){
				$("#thumb-back").stop().animate({"opacity":0}, "slow");
				$("#thumb-next").stop().animate({"opacity":0}, "slow");
				$("#gallery-thumbs .thumbs-container").children(".thumb").each(function (){$(this).stop().animate({"opacity": 1}, "slow");});
		});
	});
	$(document).keydown(function (event){
		switch(event.keyCode){
			case 37:
				$("#gallery-thumbs .thumbs-container").children(".selected").prev().click();
				break;
			case 38:
				$("#thumb-back").hover();
				break;
			case 39:
				$("#gallery-thumbs .thumbs-container").children(".selected").next().click();
				break;
			case 40:
				$("#thumb-next").hover();
				break;
		}
		console.log(event.keyCode);
	}).focus();
	
	$('#gallery-thumbs').mousewheel(function (event, delta){
		if (delta>0) $("#thumb-back").hover();
		if (delta<0) $("#thumb-next").hover();
	});

	$("#thumb-back").hover(function(){
			$("#thumb-back").stop().animate({"opacity":0.5}, "normal");
			$("#gallery-thumbs")[0]._scrollTo = -1;
			$("#gallery-thumbs")[0]._offsetScroll = 0;
			autoScroll();
		}, function(){
			$("#thumb-back").stop().animate({"opacity":0}, "slow");
			$("#gallery-thumbs")[0]._scrollTo = 0;
			autoScroll();
	});
	$("#thumb-next").hover(function(){
			$("#thumb-next").stop().animate({"opacity":0.5}, "normal");
			$("#gallery-thumbs")[0]._scrollTo = 1;
			$("#gallery-thumbs")[0]._offsetScroll = 15;
			autoScroll();
		}, function(){
			$("#thumb-next").stop().animate({"opacity":0}, "slow");
			$("#gallery-thumbs")[0]._scrollTo = 0;
			autoScroll();
	});
	$("#gallery-thumbs")[0].offset = 0;
	$("#gallery-thumbs")[0]._scrollTo = 0;
	$("#gallery-thumbs")[0].scrollLeft = 0;
		scrollThumbs();
	autoScroll();
	$("#work-gallery")[0].oldhash = '';
	$("#work-gallery")[0].offset = 0;
	$("#work-gallery")[0].scrollLeft = 0;
	if (window.location.hash.search(/^\#work\d+$/gi)<0) window.location.hash = "work1";
	$("#gallery-thumbs .thumbs-container").children(".thumb:eq("+(parseInt(window.location.hash.replace("#work", ""))-1)+")").click();
	$("#work-gallery")[0].offset = (parseInt(window.location.hash.replace("#work", ""))-1)*880;
}

function startMedia(){
	$("#media-gallery").each(function (){
		$(this).find("div.thumbnails").addClass("j-thumbnails");
		$(this).find("div.controls").html('<a class="prev" href="#">&lt; Prev</a><ul></ul><a class="next" href="#">Next &gt;</a>');
		var count = $(this).find("div.thumbnails ul").children("li").length;
		for (var i=1; i<(count/9); i++){
			$(this).find("div.controls > ul").append('<li><a href="#">'+i+'</a></li>')
		}
	});
}


//TODO: add autoscroll evey 3 thumbs
function autoScroll(){
	clearTimeout($("#gallery-thumbs")[0].timeout);
	if ($("#gallery-thumbs")[0].offset < 0 && $("#gallery-thumbs")[0]._scrollTo==-1){ $("#gallery-thumbs")[0]._scrollTo = 0; $("#gallery-thumbs")[0].offset = 0;}
	if ($("#gallery-thumbs")[0].offset > ($("#gallery-thumbs")[0].scrollWidth -1000) && $("#gallery-thumbs")[0]._scrollTo==1){ $("#gallery-thumbs")[0]._scrollTo = 0;}
	$("#gallery-thumbs")[0].offset +=  $("#gallery-thumbs")[0]._scrollTo*126;
	$("#gallery-thumbs")[0].timeout = setTimeout(autoScroll, 200);

}
function scrollThumbs(){
	$("#gallery-thumbs")[0].scrollLeft += (( $("#gallery-thumbs")[0].offset - ($("#gallery-thumbs")[0].scrollLeft-$("#gallery-thumbs")[0]._offsetScroll)) * 0.05)
	if (window.location.hash.search(/^\#work\d+$/gi)>=0) $("#work-gallery")[0].offset = (parseInt(window.location.hash.replace("#work", ""))-1)*880;
	
	thumb_id = Math.round($("#work-gallery")[0].scrollLeft / 880);
	thumb_speed = ($("#work-gallery")[0].scrollLeft - $("#work-gallery")[0].offset) / 14080;
	if (thumb_id!=last_thumb){last_thumb = thumb_id; if (use_sounds) {soundManager.play('swoosh', {volume:(100-Math.round((1-Math.abs(thumb_speed))*50)), pan:(thumb_speed*100)}); } }
	
	$("#work-gallery")[0]._offsetScroll = 0;
	if ($("#work-gallery")[0].offset>$("#work-gallery")[0].scrollLeft) $("#work-gallery")[0]._offsetScroll = 19;
	$("#work-gallery")[0].scrollLeft += ($("#work-gallery")[0].offset - $("#work-gallery")[0].scrollLeft+$("#work-gallery")[0]._offsetScroll) *0.05;
	setTimeout(scrollThumbs, 1);
}
