// JavaScript Document
//var technologiesList = new TechnologiesList();

//homepage namespace
Markisgood.HomePage = 
{
	techData: null,
	mainColumn: null,
	contentCol1: null,
	contentCol2: null,
	
	onReady: function()
	{
		this.techData = new this.TechData();
		this.mainColumn = new this.MainColumn();
		this.contentCol1 = new this.ContentCol1();
		this.contentCol2 = new this.ContentCol2();
		
		//create technologies submenu
		$("#technologies").clone().fadeTo(0,1.0).attr("id","technologiesmenu").appendTo( $("#contentcol2") );
		$("#key").clone().attr("id","smallkey").appendTo( $("#technologiesmenu") );	

		//collapse main column
		$("#content").css("visibility", "hidden");
		$("#mainbg").css("height",272);

		//handles address changes for jquery.address
		$.address.change(function(e) 
		{
			var techName = e.pathNames;
			if(techName != "")
			{
				Markisgood.HomePage.techData.techSelected(techName);
			}
			else
			{
				if(Markisgood.HomePage.mainColumn.isCollapsed)
				{
					Markisgood.HomePage.contentCol2.collapse();
					Markisgood.HomePage.contentCol1.collapse();
					Markisgood.HomePage.mainColumn.expand(Markisgood.HomePage.mainColumn.doneLoading);
				}
				else
				{
					$("#content").css("visibility", "visible");
					$("#mainbg").css("height", $("#content").height() +  $("#contentheader").height() + 75);
					Markisgood.HomePage.mainColumn.isCollapsed = false;
				}		
			}
		});
		
		//changes address rather than linking
		$("#technologies a, #technologiesmenu a").click(function(e)
		{
			e.preventDefault();  
			var name = $(this).text();
			location.href=$.address.baseURL() + "/#/" + name; 
		});
		
		///add dropshadows to technolgies and technologies menu
		$("#technologies li").dropShadow({right: 2, top: 3, blur: 1, opacity: 1, color: "#000000"});
		$("#technologiesmenu li").dropShadow({right: 2, top: 3, blur: 1, opacity: 1, color: "#000000"});
	}
}




///Main content columm
//extends Markisgood.Collapsible in main.js
Markisgood.HomePage.MainColumn = function()
{	
	Markisgood.HomePage.MainColumn.superclass.constructor.call(this,$("#content"),$("#mainbg"));
	this.isShowLoading = true;
	this.isChangeBG = true;
	this.isCollapsed = false;
	this.collapsedHeightOffset = 272;
	this.expandedHeightOffset = $("#contentheader").height() + 75;
}
Markisgood.extend(Markisgood.HomePage.MainColumn, Markisgood.Collapsible);

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

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


/////////////////////////////////////////////////////////
/////////TECH DATA///////////////////////////////////////
/////////////////////////////////////////////////////////
Markisgood.HomePage.TechData = function()
{
	
}
Markisgood.HomePage.TechData.prototype =
{
	onDeck: "null",
	
	techSelected: function(name)
	{
		if(!Markisgood.HomePage.contentCol1.isAnimating && !Markisgood.HomePage.mainColumn.isAnimating)
		{
			this.onDeck = null;
			
			if(!Markisgood.HomePage.mainColumn.isCollapsed)
				Markisgood.HomePage.mainColumn.collapse(this.getData,name);
			else
				Markisgood.HomePage.contentCol1.collapse(this.getData,name);
		}
		else
		{
			this.onDeck = name;
		}
	},
	
	afterChange: function()
	{
		if(this.onDeck != null)
		{	
			this.techSelected(this.onDeck);
		}
	},
	 
	getData: function(name)
	{
		
		//scroll up
		$("html, body").animate({"scrollTop": 0}, 200);

		var name = name;
		var isProjects = false;
		var isBlog = false;
		var projectXML;
		var blogXML;
		var blogSearchString;
		
		//////////PROJECTS	
		$.ajax({
			type: "POST",
			url: Markisgood.ajaxDispatcherController,
			data: "type=getTechnologyData&name=" + name,
			success: function(xml)
			{
				isProjects = true
				projectXML = xml;
				
				blogSearchString = $(xml).find("blog").text();
				
				getBlog();	
			}
		})
		
		//called by projects AJAX success
		function getBlog()
		{
			//////////GET BLOGS
			$.ajax({
				type: "POST",
				url: "http://www.markisgood.com/test.php",
				data: "type=getBlogPosts&search=" + blogSearchString,
				success: function(xml)
				{
					//convert crazy ass return data to readable xml
					isBlog = true;
					blogXML = xml.replace(/\<p\>/g, "");
					blogXML = blogXML.replace(/\<\/p\>/g, "");
					blogXML = blogXML.replace(/\t/g, "");
					blogXML = blogXML.replace(/\n/g, "");
					blogXML = blogXML.substr(0, blogXML.length - 4);
					onSuccess();
				}
			});
		}
		
		//when both project and blog data has returned addData method is called

		function onSuccess()
		{
			if(isProjects && isBlog)
				Markisgood.HomePage.techData.addData(projectXML, blogXML);
		}
	},
	
	addData: function(xml,xml2)
	{
		$("#contentcol1").html("");
		var name = $(xml).find("technologyName").text();
		var blogIconURL = $(xml).find("blogiconurl").text();
		
		$("#contentcol1").append("<span class='titledropshadow'><h2>" + name + "</h2></span>");
		$("#contentcol1 .titledropshadow").dropShadow({right: 1, top: 3, blur: 2, color: "black", opacity: 1});
		$("#contentcol1").append("<div id='thought'>" + $(xml).find("thought").text() + "</div>");	

		//add project data 
		var projectI = 0;
		var isFirstProject = true;
		$(xml).find("project").each(function()
		{
			if(isFirstProject)
			{
				$("#contentcol1").append("<h3>Projects</h3>");	
				$("#contentcol1").append('<ul id="projects"></ul>');
				isFirstProject = false;
			}
			$("#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++;
		});   
		
		//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");
			}
		);
		$("#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});
		
		$("#contentcol1").append('<div class="clear"></div>');
		
		//add blog data
		var posts = xml2.split("::::");
		if(posts[0] != "")
		{
			$("#contentcol1").append("<br />");
			$("#contentcol1").append("<h3>Blog Entries</h3>");	
			$("#contentcol1").append('<ul id="posts"></ul>');
	
			
			var i = 0;
			for( var post in posts)
			{
				var aPost = posts[i].split("::");
				$("#contentcol1 #posts").append('<li><span><a href="' + aPost[1] + '">' + aPost[0] + '</a></span></li>');
				i++;
			}
			
			//add drop shadow
			$("#contentcol1 #posts span").dropShadow({right: 1, top: 3, blur: 2, color: "black", opacity: 1});
		}

		Markisgood.HomePage.contentCol1.expand(this.afterChange);
		if(Markisgood.HomePage.contentCol2.isCollapsed)
			Markisgood.HomePage.contentCol2.expand();	
	}
};


$(document).ready(function()
{
	Markisgood.HomePage.onReady();
});

