// JavaScript Document

//projects page namespace
Markisgood.Projects = 
{
	projectsData: null,
	contentCol1: null,
	contentCol2: null,
	
	onReady: function()
	{
		this.projectsData = new this.ProjectsData();
		this.contentCol1 = new this.ContentCol1();
		this.contentCol2 = new this.ContentCol2();
		
		
		$("#mainbg").css("height", 272);
	
		var urlName = location.href.split("/")[location.href.split("/").length - 1];
		if(urlName == "all" || urlName ==  "projects")
		{
			this.contentCol1.isCollapsed = false;
			$("#contentcol1").css("visibility","visible");
			$("#contentcol1bg").css("visibility","visible");
			
			//Firefox bug
			//PHP prints html properly 
			//Firefox moves anchor html outside of anchor
			$("#contentcol1 #projects .ffbug_project").each(function()
			{
				if($(this).children(".ffbug").size() > 0 )
				{
					$(this).children("a").html( "<ul>" + $(this).children(".ffbug").html() + "</ul>" );
					$(this).children(".ffbug").remove();
				}
			});
	
			this.addProjectLinkEvents();
			
			$("#contentcol1").append('<div class="clear"></div>');	
			$("#contentcol1bg").css("height", $("#contentcol1").height() ); 
		}
		else
		{
			this.contentCol1.isCollapsed = true;
			$("#contentcol1").css("visibility","hidden");
			$("#contentcol1bg").css("visibility","hidden");
			$("#contentcol1bg").css("height", 0 );
		}
	
		$("#contentcol2").css("visibility","visible");
		$("#contentcol2bg").css("visibility","visible");
		$("#contentcol2bg").css("height", $("#contentcol2").height() - 30 );
	
		
		$("#projectsmenu a").click(function(e)
		{
			e.preventDefault();
			var name = $(this).attr("href");
			location.href=$.address.baseURL() + "#/" + name; 
		});
		 
		if(location.href == $.address.baseURL())
			location.href=$.address.baseURL() + "#/" + "all";
		 
		$.address.change(function(e) 
		{
			Markisgood.Projects.onURLChange(e.pathNames);
		});
	},
	
	onURLChange: function(name)
	{
		if(name != this.projectsData.currentURL && name != "")
		{
			if(name == "")
				name="all";
			this.projectsData.typeSelected(name);
		}
	}
	
};

Markisgood.Projects.addProjectLinkEvents = function()
{
	//project rollover
	$("#contentcol1 #projects li").hover(
		function()
		{
			$(this).children("a").css("text-decoration","underline");
			$(this).children("img").css("background","#CC6633");
			
		},
		function()
		{
			$(this).children("a").css("text-decoration","none");
			$(this).children("img").css("background","#FFFFFF");
		}
	);
	
	//override click
	$("#contentcol1 #projects li").click(function()
	{
		location.href = $(this).children("a").attr("href");
	});
	
	///add drop shadow
	$("#contentcol1 #projects li a ul li .dropshadow").dropShadow({right: 1, top: 3, blur: 2, color: "black", opacity: 1});
}



//////////////////////////////////////////////////////




Markisgood.Projects.ProjectsData = function()
{
}

Markisgood.Projects.ProjectsData.prototype =
{
	currentURL: "all",
	onDeck: "null",
	
	typeSelected: function(name)
	{
		this.currentURL = name;

		if(!Markisgood.Projects.contentCol1.isAnimating)
		{
			this.onDeck = null;
			Markisgood.Projects.contentCol1.collapse(this.getData,name);
		}
		else
		{
			this.onDeck = name;
		}
	},
	
	afterChange: function()
	{
		if(this.onDeck != null)
		{	
			this.typeSelected(this.onDeck);
		}
	},

	addData: function(xml)
	{
		$("#contentcol1 #projects").remove();
		$("#contentcol1").append('<ul id="projects"></ul>');
		
		var projectI = 0;
		$(xml).find("project").each(function()
		{
			$("#contentcol1 #projects").append('<li><img src="application/projectthumbimages/' + $(this).find("projectThumb").text() + '" /><a href="project?p=' + $(this).find("projectID").text() + '&n=/' + $(this).find("name").text().replace(/ /g,"_") + '" id="project' + projectI + '"></a></li>');
			
			var splitted = $(this).find("name").text().split(" ");
			var i = 0;
			var html = "<ul>";
			var limit = 13;
			while(i < splitted.length)
			{
				if(i < splitted.length - 2 && splitted[i].length + splitted[i + 1].length + splitted[i + 2].length <= limit - 2)
					html += "<li><span class='dropshadow'><span class='projectname'>" + splitted[i] + " " + splitted[++i] + " " + splitted[++i] + "</span></span></li>";
				else if(i < splitted.length - 1 && splitted[i].length + splitted[i + 1].length <= limit - 1)
					html += "<li><span class='dropshadow'><span class='projectname'>" + splitted[i] + " " + splitted[++i] +"</span></span></li>";
				else
					html += "<li><span class='dropshadow'><span class='projectname'>" + splitted[i] + "</span></span></li>";
				i++;
			}
			html += "</ul>";
			
			$("#project" + projectI).html(html);
			projectI++;
		});   

		Markisgood.Projects.addProjectLinkEvents();
		
		$("#contentcol1").append('<div class="clear"></div>');	
		Markisgood.Projects.contentCol1.expand();
	},
	
	getData: function(name)
	{
		var type = String(name);
		if(type == "all")
		    $("#projecttypes").text("All Projects");
		else
			$("#projecttypes").text(type);	
		$.ajax({
			type: "POST",
			url: Markisgood.ajaxDispatcherController,
			data: "type=filterProjects&val=" + name,
			success: function(xml)
			{
				Markisgood.Projects.projectsData.addData(xml);
			}
		})
	}
}



//Content column 1
//extends Markisgood.Collapsible in main.js
Markisgood.Projects.ContentCol1 = function()
{
	Markisgood.Projects.ContentCol1.superclass.constructor.call(this,$("#contentcol1"),$("#contentcol1bg"));
	this.isShowLoading = true;
	this.isChangeBG = true;
}
Markisgood.extend(Markisgood.Projects.ContentCol1, Markisgood.Collapsible);

//Content column 2
//extends Markisgood.Collapsible in main.js
Markisgood.Projects.ContentCol2 = function()
{
	Markisgood.Projects.ContentCol2.superclass.constructor.call(this,$("#contentcol2"),$("#contentcol2bg"));
	this.expandedOffset = - 85;
}
Markisgood.extend(Markisgood.Projects.ContentCol2, Markisgood.Collapsible);

//jQuery onReady
$(document).ready(function()
{
	Markisgood.Projects.onReady();
});
