var site = {
	tabOn:null,
	destStr:"",
	resizeFirstRun:true,
	height:0,
	width:0,
	prj:{
		tabOn:null,
		firstRun:true,
		url:"",
		loaded:0,
		no:0
	}
};
$(function(){
	//Initialization
	$(".script").show();
	$(".noscript").remove();
	$("a").attr("target","_blank");
	site.tabOn = $(".tab:first");
	$(".loading").append('<img src="img/ajax-loader.gif" alt="Loading" />');
	$(".tab").each(function(){
		if (location.hash == $(this).attr("href")) {
			site.tabOn = $(this);
		}
	});
	//Animations
	$(document).oneTime(100,function(){
		$("#container").show();
		$("#content").scrollTo($(".ele:last"),0);
		site.height = $("#container").height()+20;
		site.width = 820+100;
		site.resizeHandler();
		site.tabsOnClick(site.tabOn);
	})
	
	//Blog
	$("#contentExt").attr("src","http://we-designs.tumblr.com/")
	
	//Events
	$(".tab").click(function(){
		site.tabsOnClick($(this));
		return false;
	});
	$(window).resize(function(){
		site.resizeHandler();
	});
	
	$("#prjThumbnails img").hover(
		function(){
			$("#prjToolTip").text(" - " + $(this).attr("alt"));
			$(this).fadeTo({duration:300},1);
		},
		function(){
			$("#prjToolTip").html("");
			$(this).fadeTo({duration:300},0.6);
		}
	);
	$("#prjThumbnails a").click(function(){
		site.prj.url = $(this).attr("href");
		$(".scroll-pane").addClass("hideFlow");
		site.destStr = "#prjShow";
		$("#content").scrollTo("#prjShow",{duration:300,
		onAfter:site.prj.galleryCreater});
		return false;
	});
	$("#prjTopics li").click(function(){
		site.prj.tabsOnClick($(this));
	});
	
	$("#prjShowBack").click(function(){
		site.tabsOnClick($('.tab[href="#prj"]'));
		return false;
	});
	
	$("#prjImage").click(function(){
		$('#prjImgNo'+site.prj.no).removeClass("numberChoosing");
		site.prj.no = (site.prj.no+1)%site.prj.items.length;
		site.prj.loadImage();
	});
	
	$("#contactForm").submit(function(){
		var form = {};
		var $fields = $(this).find("input,textarea");
		$fields
			.attr('disabled',"true")
			.removeClass("error")
			.each(function(){
				form[$(this).attr('name')] = $(this).val();
			});
		$("#formMessage")
			.html("Sending Form...");
		$.post("email.php",form,function(data){
			if(data.ok){
				$("#contactForm .textBox")
						.val("");
			}else{
				$.each(data.validate,function(i,val){
					if(!val)
						$("#contactForm [name="+i+"]")
							.addClass("error");
				})
			}
			$("#formMessage")
				.html(data.message);
			$fields
				.removeAttr('disabled');
		}, "json");
		
		
		return false;
	});
	
	$("#notifyBar").click(function(){
		$(this).hide();
	});
	
});

site.tabsOnClick = function (jq){
	$(".scroll-pane").addClass("hideFlow").scrollTo(0);
	if(site.tabOn!=null) 
		site.tabOn.removeClass("tabOn");
	jq.addClass("tabOn");
	site.tabOn = jq;
	site.destStr = jq.attr("href");
	
	if(site.destStr.indexOf("http://")!=0){
		//hide iframe
		$("#contentExt").hide();
		
	}
	var $dest = $(site.destStr);
	if(site.destStr.indexOf("http://") == 0)
		$dest = $("#ext");
	//smooth scrolling
	if ($("#content").scrollLeft() == 0 || site.destStr == "#prj") {
		$("#content").scrollTo($dest, {
			duration: 500,
			onAfter: site.afterScroll
		});
	}else {
		$("#content").scrollTo($dest, {
			duration: 1000,
			queue: true,
			axis: "xy",
			onAfter: site.afterScroll
		});
	}
		
}

site.afterScroll = function(){
	$(site.destStr).find(".scroll-pane").removeClass("hideFlow");
	$(".loading").show();
	//prj init
	$("#prjShow .right")
		.find(".number")
		.remove();
	$("#prjImage img")
		.remove();
	site.prj.no = 0;
	
	if (site.destStr == "#prj" && site.prj.firstRun){
		$("#prjThumbnails img")
			.fadeTo(0, 0.6)
			.each(function(){
				$(this)
					.attr("alt",$(this).attr("title"))
					.attr("title","");
			});
		site.prj.tabsOnClick($("#prjTopics li:first"));
		site.prj.firstRun = false;
	}
	
	if(site.destStr.indexOf("http://")==0){
		//show iframe
		$("#contentExt").show();
	}
}

site.prj.tabsOnClick = function(jq){
	if(site.prj.tabOn!=null)
		site.prj.tabOn.removeClass("prjTabOn");
	site.prj.tabOn = jq;
	jq.addClass("prjTabOn");
	var dest = jq.find("span").html();
	$("#prjThumbnails")
		.find("img")
			.fadeOut(100)
		.end()
		.find(dest)
			.fadeIn(300);
}

site.getFlickrID = function(url){
	
	var flickrID = {};
	
	var nsidRe = new RegExp("[0-9]{1,}\@[0-9A-Z]{1,}","g");
	var setRe = new RegExp("sets\/[0-9]{1,}","g");
	
	var nsidExec = nsidRe.exec(site.prj.url);
	var setExec = setRe.exec(site.prj.url);
	
	if(nsidExec!=null) flickrID.nsid = nsidExec[0];
	else flickrID.nsid = "";
	
	if(setExec!=null) flickrID.set = setExec[0].substr(5);
	else flickrID.set = "";
	return flickrID;
}

site.prj.galleryCreater = function(){
	var flickrID = site.getFlickrID(site.prj.url);
	var url = "http://api.flickr.com/services/rest/?format=json&jsoncallback=?&per_page=200&photoset_id="+flickrID.set+"&api_key=ba31847a0fe033c7f39decabc511aa32&method=flickr.photosets.";
	site.prj.loaded=0;
	site.afterScroll();
	$(".scroll-pane").addClass("hideFlow");
	$.getJSON(url+"getInfo",function(data){
		$("#prjShow h2").text(data.photoset.title._content);
		$("#prjDescription")
			.html(data.photoset.description._content.replace(/\n/g, '<br />'))
			.find("a")
				.attr("target","_blank");
		site.prj.loaded++;
		
		if(site.prj.loaded==2)
			site.prj.openGallery();
	});
	$.getJSON(url+"getPhotos",function(data){
		site.prj.items = data.photoset.photo;
		for(i=site.prj.items.length;i>0;i--){
			$('<li/>').
				attr("class","number").
				attr("id","prjImgNo"+(i-1)).
				html(" "+i+" ").
				appendTo("#prjShowChooseBar");
		}
		site.prj.loaded++;
		
		if(site.prj.loaded==2)
			site.prj.openGallery();
	});
}
site.prj.openGallery = function (){
	$("#prjDetail")
		.scrollTo(0);
	$("#prjShow .loading")
		.slideUp({duration:300,complete:site.prj.loadImage});
			
	$("#prjShowChooseBar .number").click(function(){
		$('#prjImgNo'+site.prj.no)
			.removeClass("numberChoosing");
		site.prj.no = ($(this).html()-1);
		site.prj.loadImage();
	});
	
}
site.prj.loadImage = function(){
	var img = site.prj.items[site.prj.no];
	$("#prjShow .loading")
		.hide();
	$(".scroll-pane")
		.removeClass("hideFlow");
	$("#prjImage")
		.addClass("loadingBg")
		.find("*")
			.remove();
	$('#prjImgNo'+site.prj.no)
		.addClass("numberChoosing");
	site.prj.loadImg(img,"");

}
site.prj.loadImg = function(img,str){
	$('<img />')	
    	.load(function(){
			$(this).fadeTo(0,0)
			$('#prjImage')
				.append( $(this) );
			/*
			if ($(this).width() == 500 && $(this).height() == 375) {
				site.prj.loadImg(img,"");
				$(this).remove();
				return false;
			}
			*/
			$('#prjImage')
				.removeClass("loadingBg");
			var ratio = Math.max(
				$(this).width()/($("#prjImage").width()-8),
				$(this).height()/($("#prjImage").height()-8)
			);
			$(this).css({
				width:($(this).width()/ratio)+"px",
				height:($(this).height()/ratio)+"px"
			});
			$('#prjImage').css({
				paddingTop: (($("#prjImage").height() - $(this).height()) / 2) + "px"
			});
			$(this).fadeTo(300,1)
		})
		.attr('src',"http://farm"+img.farm+".static.flickr.com/"+img.server+"/"+img.id+"_"+img.secret+str+".jpg");
}
site.resizeHandler = function (){
	site.resizeFirstRun = false;
	var winHeight = Math.min(Math.max($(window).height(),400),780);
	var exceed = winHeight - site.height;
	$(".stretch").each(function(){
		$(this).css({height: ($(this).height() + exceed)});
	});
	var cHeight = $("#contentWrapper").height();
	$(".loading").each(function(){
		var padding = ((cHeight-$(this).height())/2-10);
		$(this).css({paddingTop: padding+"px",paddingBottom:padding+"px"});
	});
	$("#content,.ele").css({height:cHeight+"px"});
	$(".scroll-pane,.cStretch").css({height:(cHeight-80)+"px"});
	$("#prjDetail").css({height:(cHeight-100)+"px"});
	site.height = winHeight;
	
	var winWidth = $("#container").width() + 100;
	var exceedW = winWidth - site.width;
	$(".stretchW, .ele, .picList div").each(function(){
		$(this).css({width: ($(this).width() + exceedW)});
	});
	site.width = winWidth;
	
	if(site.destStr!="")
		$("#content").scrollTo($(site.destStr));
	
	var offSet = Math.max(($(window).height()-$("#container").height())/2,0);
	$("#container").css({marginTop:(offSet+"px")});
}

site.notifer = function(msg){
	$("#notifyBar")
		.show()
		.find("span")
			.html(msg)
		.end()
		.find(".close")
			.show();
}
