// pfScript.
//
// Site Design and Implementation by Evadne Wu, ev@monoceroi.com
// http://portfolio.monoceroi.com
//
//
//
//
//
var debugMode = false; //////////////////////////////////////////////////////////
var pfData = {

	'City in Turmoil': {
	
		'codeBase': 'city.in.turmoil',
		'items': 8
	
	},
	
	'And Brighter': {
	
		'codeBase': 'brighter',
		'items': 2
	
	},
	
	'Sorts Of': {
	
		'codeBase': 'sorts.of',
		'items': 3
	
	},
	
	'Lights Ahead': {
	
		'codeBase': 'lights.ahead',
		'items': 8
	
	},
	
	'Vectorized': {
	
		'codeBase': 'vectorized',
		'items': 4,
		'vectors': true
	
	}

}; //////////////////////////////////////////////////////////////////////////////





$LAB.script("ui/jquery.scrollTo-min.js", "ui/jquery.ui.js").block(function(){

$(document).ready(function(){

	$("body").removeClass("hey");

	if ($.browser.msie) {
	
		if (parseInt(jQuery.browser.version, 10) < 7)
		$.getScript("ui/ie6update.js");
		
		$("body").addClass("hey");
		$("#pfHeaderMessage").html("<a href='http://google.com/chrome' target='_blank'>Try Chrome and enjoy here better?</a>");
		
		$("#pfItemIndication").fadeTo(100, 0);

	} else {
	
		$(window).bind("resize", portfolio.checkWindow);
	
	}

	if(debugMode) $("body").addClass("d");
	
	portfolio.loadImages();
	portfolio.checkWindow();
	portfolio.behavior.initHeaderToggle();
	portfolio.behavior.initImageClickSwap();
	portfolio.behavior.initList();
	portfolio.behavior.keyboard.init();

});}).script("http://www.google-analytics.com/ga.js").block(function() {

	try {

		var pageTracker = _gat._getTracker("UA-10631756-3");
		pageTracker._trackPageview();

	} catch(err) {}
	
});







var portfolio = {

	checkWindow: function() {
	
		if ($(window).width() < 1152){
		
			$("body").addClass("hey");
			$("#pfHeaderMessage").html("Please maximize the window?");

		} else {
		
			$("body").removeClass("hey");
		
		}
		
	},

	loadImages: function() {

		var viewportObject = $("#pfViewport");
		var viewportList = $("#pfCategoryList ol");
		
		viewportList.empty();
		
		var viewportSpacer = $("<div class='spacer'>&nbsp;</div>");
		var viewportHolder = $("<div>&nbsp;</div>");
		var viewportListObject = $("<li>&nbsp;</li>");
		
		$("#pfViewport").dequeue().scrollTo({top: 0, left: 0}, 450);
		
		viewportObject.append(viewportHolder.clone());
		
		$.each(pfData, function(parent, children) {
		
			var categoryTitle = parent;
			var categoryCodeName = children.codeBase;
			var categoryChildrens = children.items;
			var categorySuffix = (children.vectors == true) ? "png" : "jpg";
			
			var destinationListObject = viewportListObject.clone()
							.attr("alt", categoryTitle)
							.attr("rel", categoryCodeName)
							.text(categoryTitle);

			destinationListObject.appendTo(viewportList);			
			viewportSpacer.clone().appendTo(viewportObject);
			
			var destinationContainer = viewportHolder.clone().attr("rel", categoryCodeName);
			destinationContainer.appendTo(viewportObject);
			
			var destinationPath = "context/" + categoryCodeName + "/";
			
			for (var i=1;i<=categoryChildrens; i++)	{
			
				var temporaryHolder = viewportHolder.clone();
				temporaryHolder.html("<img src='" + destinationPath + pushfill(i, 2) + "." + categorySuffix + "' height='540' />").attr("rel", i);
				
				temporaryHolder.appendTo(destinationContainer);
	
			}
			
				
				
		});
		
		viewportObject.append(viewportHolder.clone());
		
	},
	
	behavior: {
	
		initHeaderToggle: function() {
		
			$("#pfHeaderTitle").click(function() {
			
				if ($("#pfInformation").is(":visible")) $("#pfHeaderToggle").click();
				
				$("#pfItemIndication").empty();
				$("#pfCategoryList ol li.hinted").removeClass("hinted");
				$("#pfViewport").scrollTo({top: 0, left: 0}, 450);
				
			});
		
			$("#pfHeaderToggle").toggle(function() {
								
				$(this).text("Hide Info");
				$("#pfInformation").stop(true, true).slideDown(600);
				$("#pfHeaderTitle span").text("Information");
				
		
			}, function() {
				
				$(this).text("Info");
				$("#pfInformation").stop(true, true).slideUp(100);
				$("#pfHeaderTitle span").text("Portfolio");
				
			});
			
		},
		
		initImageClickSwap: function() {

			$("#pfViewport > div > div").click(function(event) {

				if ($("#pfInformation").is(":visible")) $("#pfHeaderToggle").click();

				var targetObject = $(this);

				if ($(this).hasClass("vision") && !$(this).is(":last-child"))
				targetObject = $(this).next();
				
				$("#pfViewport > div > div.vision").removeClass("vision");		
				targetObject.addClass("vision");
				$("#pfViewport").dequeue().scrollTo(targetObject, 450, {axis: 'x', offset: {left: -72}});

				portfolio.behavior.beans.show(targetObject.attr("rel"));

			});

		},
		
		initList: function() {
		
			$("#pfCategoryList ol li").click(function() {
		
				var beanCount = pfData[$(this).attr("alt")].items;
			
				if ($("#pfInformation").is(":visible")) $("#pfHeaderToggle").click();
			
				$("#pfCategoryList ol li.hinted").removeClass("hinted");	
				$(this).addClass("hinted");
				
				var destinationGrid = $(this).attr("rel");
				portfolio.behavior.showingFrame = $("#pfViewport div[rel=" + destinationGrid + "]");
				
				$("#pfViewport").dequeue().scrollTo(portfolio.behavior.showingFrame, 450, {offset: {left: -72, top: 18}});
				portfolio.behavior.showingFrame.children("div:eq(0)").addClass("vision");
				
				portfolio.behavior.beans.init(beanCount);
				portfolio.behavior.beans.show(1);

			});

		},
		
		beans: {
		
			init: function(destinationBeanCount) {
			
				portfolio.behavior.beans.pod = $("#pfItemIndication");
			
				var beanObject = $("<img src='ui/dot.png' />");
				portfolio.behavior.beans.pod.empty();
				
				for (i = 0; i < destinationBeanCount; i++)
				portfolio.behavior.beans.pod.append(beanObject.clone().attr("rel", i));

				portfolio.behavior.beans.pod.children("img").click(function(event) {
				
					var target = portfolio.behavior.showingFrame.children("div:eq(" + $(this).attr("rel") + ")");
					
					$("#pfViewport").dequeue().scrollTo(target, 450, {offset: {left: -72, top: 18}});
					
					portfolio.behavior.beans.show(Number($(this).attr("rel")) + 1);
				
				});
				
			},
			
			show: function(destinationBeanID) {

				portfolio.behavior.beans.pod
				.children("img.now").removeClass("now").end()
				.children("img:eq(" + (destinationBeanID - 1) + ")").addClass("now");

			}
		
		},
		
		keyboard: {
		
			init: function() {
				
				$("body").keydown(function(event) {
				
					portfolio.behavior.keyboard.listitem = $("#pfCategoryList ol li.hinted");
					portfolio.behavior.keyboard.containeritem = $("#pfViewport div[rel=" + portfolio.behavior.keyboard.listitem.attr("rel") + "]");
					portfolio.behavior.keyboard.pictureitem = portfolio.behavior.keyboard.containeritem.children("div.vision");

					switch (event.keyCode){
					
						case 56:
						case 104:
						case 38:	portfolio.behavior.keyboard.up();
								break;
						
						case 98:
						case 50:
						case 40:	portfolio.behavior.keyboard.down();
								break;
							
						case 100:
						case 52:
						case 37:	portfolio.behavior.keyboard.left();
								break;
							
						case 102:
						case 54:
						case 39:	portfolio.behavior.keyboard.right();	
								break;
								
						default:	break;
					
					}
					
				});
				
			},
			
			up: function() {

				if ((portfolio.behavior.keyboard.listitem.html() == null) || (portfolio.behavior.keyboard.listitem.prev().html() == null)) {
				
					$("#pfCategoryList ol li:last-child").click();
				
				} else {
				
					portfolio.behavior.keyboard.listitem.prev().click();
				
				}

			},
			
			down: function() {

				if ((portfolio.behavior.keyboard.listitem.html() == null) || (portfolio.behavior.keyboard.listitem.next().html() == null)) {
				
					$("#pfCategoryList ol li:first-child").click();
				
				} else {
				
					portfolio.behavior.keyboard.listitem.next().click();
				
				}

			},
			
			left: function() {

				if (portfolio.behavior.keyboard.pictureitem.html() == null) {
				
					portfolio.behavior.keyboard.up();
				
				} else if (portfolio.behavior.keyboard.pictureitem.prev().html() == null) {
				
					portfolio.behavior.keyboard.up();			
				
				} else {
				
					portfolio.behavior.keyboard.pictureitem.prev().click();
				
				}
				
			},
			
			right: function() {
			
				if (portfolio.behavior.keyboard.pictureitem.html() == null) {
				
					portfolio.behavior.keyboard.down();
				
				} else if (portfolio.behavior.keyboard.pictureitem.next().html() == null) {
				
					portfolio.behavior.keyboard.down();
					
				} else {
				
					portfolio.behavior.keyboard.pictureitem.next().click();
				
				}
				
			}
		
		}
	
	}

}

function d (t) {

	if (debugMode) window.console.log( t );
	
}

function pushfill (number, digits) {

	if (number < 0)
	return ( "-" + pushfill(Math.abs(number), digits));

	if ((10 * number) >= Math.pow(10, digits))
	return number;
	
	return ( "0" + pushfill (number, digits - 1));

}