var TopFilter_State = 0;
var LgThumb_State = 0;
var selectedPortIMG = "";

var portfolioMode;
var currPortArrayPos;
var PortfolioItemsReturned;
var PortfolioThumbCols;
var ThumbCont_width;
var smallThumb_currPos;

var columnShifts = {};
columnShifts.near = 1;
columnShifts.far = 2;


var portfolio;



$(document).ready(portfolio_ready);


//***** utilities ********//

function dumpObject(obj, showEmptyAttributes)
{
	if(showEmptyAttributes == null)
	{
		showEmptyAttributes = false;
	}
	
	var output = "";
	for(var prop in obj)
	{
		var propValue = obj[prop];
		if(!showEmptyAttributes)
		{
			if(propValue == "")
			{
				continue;
			}
		}
		output += "\n" + prop + ": " + propValue + "\n----------------------";
	}
	alert("::::::: Object Dump :::::::\n\n" + output);
}


// ********* functions ***********//

function portfolio_ready()
{
	currPortArrayPos = 0;
	// count results, set mode accordingly
	// divide by 2 because both large near-view projects and small far-view projects are tagged as "project"
	PortfolioItemsReturned = $("#PortSlidingThumb_Container .Project").length;
	PortfolioThumbCols = Math.ceil(PortfolioItemsReturned/4);
	ThumbCont_width = (PortfolioItemsReturned * 302);
	if(PortfolioThumbCols < 4){
		smallThumb_currPos = PortfolioThumbCols;
	}
	else {
		smallThumb_currPos = 4;
	}
	
	
	var pMode = "far";
	
	if(PortfolioItemsReturned < 10)
	{
		pMode = "near";
	}
	setPortfolioMode(pMode);
	
	$("#PortSlidingThumb_Container").position.left = 200;
	$("#PortSlidingThumb_Container").width(PortfolioItemsReturned * 302);
	$("#PortSlidingThumb_Container").position.left = 0;
	
	assignEventHandlers();
}


function assignEventHandlers()
{
	$(".LinkToCaseStudy").click(LinkToCaseStudy_Click);
	$(".LinkToSite").click(LinkToSite_Click);
	$(".LinkToCollage").click(LinkToCollage_Click);
	$(".Project_Far").click(Project_Far_Click);
	$(".Port_RolloverLinkWrap").click(Port_RolloverLinkWrap_Click);
	$("#PortOverlay_Left").click(moveBackwardsPortsThumbs);
	$("#PortOverlay_Right").click(moveForwardPortsThumbs);
	$("#PortRightArrow").click( moveForwardPortsThumbs );
	$("#PortLeftArrow").click( moveBackwardsPortsThumbs );
}


function showCollageImage(src)
{
	$('#SelectedProjectCollage_Container').modal({containerId: "portfolioBig-container"});
	//!!!update this img's src with the new portfolio item
	$('#PortLg_IMG').attr("src", src);
}


function centerObject(obj)
{
	var objLeft = $(window).width()/2 - obj.width()/2;
	var objTop = $(window).height()/2 - obj.height()/2;
	
	$(obj).css({left: objLeft, top: objTop});
}


function setPortfolioMode(mode)
{
	$("#NearPortfolioThumbs").hide();
	$("#FarPortfolioThumbs").hide();
	portfolioMode = mode;
	
	switch(mode.toLowerCase())
	{
		case "near":
			$("#NearPortfolioThumbs").show();
			$("#PortfolioArea").addClass("Overlay");
			$("#PortOverlay_Left").show();
			$("#PortOverlay_Right").show();
			if( !isNaN(parseInt( $("#SelectedProject").val() )) )
			{
				processIndividualProject();
			}
			else
			{
				crownMiddleProject();
			}
		break;
		
		case "far":
			$("#FarPortfolioThumbs").show();
			$("#PortfolioArea").removeClass("Overlay");
			$("#PortOverlay_Left").hide();
			$("#PortOverlay_Right").hide();
			disableArrow("left");
			setFarPageDisplay();
		break;
	}
}


function processIndividualProject()
{
	var pid = $("#SelectedProject").val();
	if(pid == null)
	{
		return;
	}
	nearProjects = $(".Project_Near");
	var selectedProject = $(".PortCell[ProjectID="+ pid +"]");
	var firstProject = $(nearProjects[0]);
	if ($(nearProjects[1]).attr("ProjectID") != pid) 
	{
		// the selected project is moved AFTER the first project, if the first project IS the selected project
		// the selected project must be moved BEFORE the third project in order to move it to the center
		if (firstProject.attr("ProjectID") != pid) 
		{
			firstProject.after(selectedProject);
		}
		else 
		{
			var thirdProject = $(nearProjects[2]);
			thirdProject.before(selectedProject);
		}
	}
	
	nearProjects = null;
	crownMiddleProject();
}


function crownMiddleProject()
{
	nearProjects = $(".Project_Near");
	
	var childNum = currPortArrayPos+1;
	childNum = currPortArrayPos + 2;
	if(childNum > nearProjects.length)
	{
		childNum -= nearProjects.length;
	}
	
	var pid = $("#SelectedProject").val();
	middleChild = $(nearProjects[1]);
	
	
	var middleChildHeader = middleChild.children(".Header");
	$(".PortHeader_ON").addClass("PortHeader");
	$(".PortHeader_ON").removeClass("PortHeader_ON");
	middleChildHeader.removeClass("PortHeader");
	middleChildHeader.addClass("PortHeader_ON");
	
	// set document title
	document.title = middleChildHeader.text() + " - Portfolio - Silverscape";
	
	// show description info
	$(".PortDescription").hide();
	middleChild.children(".PortDescription").show();
	
	// check it out
	$(".Port_checkItOut").removeClass("Port_checkItOut");
	middleChild.children(".PortIMGBorder").children(".Port_RolloverLinkWrap").addClass("Port_checkItOut");
	
	// show googly eyes
	$(".googlyEyes").hide();
	$(".googlyEyes[ProjectID=" + middleChild.attr("ProjectID") + "]").show();
	
	if(childNum == 1)
	{
		childNum = nearProjects.length+1;
	}
	setNearPageDisplay(childNum-1, nearProjects.length);
	
	if (pid != null)
	{
		$("#SelectedProject").remove();
		$("#SelectedProject").val(null);
	}
}



function setNearPageDisplay(page, total)
{
	var start = page;
	if(total == 0)
	{
		start = 0;
	}
	$("#NearView_currentCount").text( start + " of " + total );
}

function setFarPageDisplay()
{
	var start = ((smallThumb_currPos-4) * 4) + 1;
	if(start < 0)
	{
		start = 1;
	}
	if(PortfolioItemsReturned == 0)
	{
		start = 0;
	}
	var end = start + 15;
	if(end > PortfolioItemsReturned)
	{
		end = PortfolioItemsReturned;
	}
	$("#NearView_currentCount").text(start + "-"+ end +" of " + PortfolioItemsReturned );
	
	enableArrow("left");
	enableArrow("right");
	if(end == PortfolioItemsReturned)
	{
		disableArrow("right");
	}
	if(start == 1)
	{
		disableArrow("left");
	}
}


var nearProjects;

function moveForwardPortsThumbs()
{
	if(portfolioMode == "near"){
		
		nearProjects = $(".Project_Near");
		
		var slider = $("#PortSlidingThumb_Container");
		
		var shiftCount = columnShifts.near;
		var currPos = ($("#PortSlidingThumb_Container").position.left) + (-302 * shiftCount);
		slider.animate({left:currPos}, (200 * shiftCount) / 1.25, null, slider_Forward_Complete);
		slider.position.left = currPos;
		currPortArrayPos += shiftCount;
		if(currPortArrayPos >= nearProjects.length)
		{
			currPortArrayPos -= nearProjects.length;
		}
	}
	else{
		
		if (smallThumb_currPos > PortfolioThumbCols || PortfolioThumbCols < 4)
		{
			return;
		}
		
		var slider = $("#PortSlidingThumbSmall_Container");
		
		
		var shiftCount = columnShifts.far;
		if(smallThumb_currPos+shiftCount > PortfolioThumbCols)
		{
			shiftCount = PortfolioThumbCols - smallThumb_currPos;
		}
		smallThumb_currPos += shiftCount;
		var currPos = (slider.position.left) + (-219 * shiftCount);
		slider.animate({left:currPos}, (200 * shiftCount) / 1.25);
		slider.position.left = currPos;
		
		setFarPageDisplay();
	}
}


function moveBackwardsPortsThumbs()
{
	if(portfolioMode == "near"){
		
		nearProjects = $(".Project_Near");
		
		// shift are done before move in BACKWARD mode
		var last = $(nearProjects[ nearProjects.length-1 ]);
		var parent = last.parent();
		parent.prepend(last);
		
		var newLeft = parseInt(parent.css("left")) - 302;
		parent.css("left", newLeft );
		parent.position.left = newLeft;
		// end shifts
		
		
		var shiftCount = columnShifts.near;
		
		var currPos = ($("#PortSlidingThumb_Container").position.left) + (302 * shiftCount);
		$("#PortSlidingThumb_Container").animate({left:currPos}, (200 * shiftCount) / 1.25, null, slider_Backward_Complete);
		$("#PortSlidingThumb_Container").position.left = currPos;
		currPortArrayPos -= shiftCount;
		if(currPortArrayPos < 0)
		{
			currPortArrayPos += nearProjects.length;
		}
	}
	else{
		
		if (smallThumb_currPos <= 4)
		{
			return;
		}
		
		var shiftCount = columnShifts.far;
		if(smallThumb_currPos-shiftCount <= 4)
		{
			shiftCount = smallThumb_currPos - 4;
		}
		smallThumb_currPos -= shiftCount;
		var currPos = ($("#PortSlidingThumbSmall_Container").position.left) + (219 * shiftCount);
		$("#PortSlidingThumbSmall_Container").animate({left:currPos}, (200 * shiftCount)/1.25);
		$("#PortSlidingThumbSmall_Container").position.left = currPos;
		
		setFarPageDisplay();
	}
}


function disableArrow(direction)
{
	if(direction.toLowerCase() == "left")
	{
		$("#PortLeftArrow").addClass("Disabled");
	}
	else if(direction.toLowerCase() == "right")
	{
		$("#PortRightArrow").addClass("Disabled");
	}
}

function enableArrow(direction)
{
	if(direction.toLowerCase() == "left")
	{
		$("#PortLeftArrow").removeClass("Disabled");
	}
	else if(direction.toLowerCase() == "right")
	{
		$("#PortRightArrow").removeClass("Disabled");
	}
}


function slider_Forward_Complete()
{
	var first = $(nearProjects[0]);
	var parent = first.parent();
	parent.append(first);
	
	var newLeft = parseInt(parent.css("left")) + 302;
	parent.css("left", newLeft );
	parent.position.left = newLeft;
	
	crownMiddleProject();
}

function slider_Backward_Complete()
{
	crownMiddleProject();
}


function getNearProjectIndex(projectid)
{
	var index = -1;
	$.each(nearProjects, function(i, val)
	{
		var item = $(nearProjects[i]);
		if(item.attr("ProjectID") == projectid)
		{
			index = i;
			return;
		}
	});
	return index;
}



function togglePortfolioTags(type){
	$('#toggleBar').show();
	switch(type){
		case 'industry':
			$('#toggleBar').animate( { marginLeft:"123" }, { duration:300 }, highlight('industry'));
			changeTags('industry');
			break;
		case 'project':
			$('#toggleBar').animate( { marginLeft:"57" }, { duration:300 }, highlight('project'));
			changeTags('project');
			break;
	}
}
function highlight(type){
	switch(type){
		case 'industry':
			$('#Industry a').addClass('selectedToggle');
			$('#Project a').removeClass('selectedToggle');
			break;
		case 'project':
			$('#Project a').addClass('selectedToggle');
			$('#Industry a').removeClass('selectedToggle');	
			break;
	}
}

function quickToggle(type){
	$('#toggleBar').show();
	switch(type){
		case 'industry':
			$('#toggleBar').css("marginLeft", "123px");
			highlight('industry');
			changeTags('industry');
			break;
		case 'project':
			$('#toggleBar').css("marginLeft", "57px");
			highlight('project');
			changeTags('project');
			break;
	}	
}


function changeTags(type)
{
	switch (type){
		case 'industry':
			$("#projectTypeTags").hide();
			$("#industryTags").show();
		break;
		case 'project':
			$("#industryTags").hide();
			$("#projectTypeTags").show();
		break;
	}
}


function Port_RolloverLinkWrap_Click()
{
	var sender = $(this);
	if(sender.attr("URL") != null && sender.attr("URL") != "")
	{
		var url = sender.attr("URL");
		if(url.indexOf("http://") == -1)
		{
			url = "http://" + url;
		}
		window.open(url);
	}
	else if(sender.attr("Source") != null)
	{
		showCollageImage( sender.attr("Source") );
	}
}


function Project_Far_Click()
{
	var sender = $(this);
	location.href = "/Portfolio/Project/" + sender.attr("ProjectID");
}


function LinkToCaseStudy_Click()
{
	var blogid = $(this).attr("BlogID");
	location.href = "/Blog/P/" + blogid;
}

function LinkToCollage_Click()
{
	var sender = $(this);
	var source = sender.attr("Source");
	var pid = sender.parent().parent().parent().attr("ProjectID");
	showCollageImage( "/graphics/Projects/" + pid + "/" + source );
}

function LinkToSite_Click()
{
	var url = $(this).attr("URL");
	if(url.indexOf("http://") == -1)
	{
		url = "http://" + url;
	}
	window.open(url);
}
