// JavaScript Document

var itemsWidth = 0;
var container,ul,div1,div2,div3,div4,div5,div6,div61,div7;
var recentHash = "";
var orderedprojects = new Array();

$(window).load(function() {
	
	// click for landing index page
	if ($('body#index').length==0) {
		$("#logo").click(function() {
			document.location="index.html";
		});
	} else if ($('body#index').length>0) {
		$("#logo").click(function() {
			document.location="projects.html";
		});
	}
	
	container = $('div#slidecontainer');
	
	// background divs
	div1 = $('#clouds', container);
	div2 = $('#sky', container);
	div3 = $('#hills3', container);
	div4 = $('#hills2', container);
	div5 = $('#hills1', container);
	div6 = $('#buildings', container);
	//div61 = $('#trees', container);
	
	// project div
	div7 = $('#projects', container);
	
	// scrolling width
	itemsWidth = div7.innerWidth() - container.outerWidth() + 10;
	
	$('.slider SPAN', container).onmousedown = $('.slider SPAN', container).onselectstart = function(){ return false; }
	
	$('.slider', container).slider({
		min: 0,
		max: itemsWidth,
		/*handle: '.handle',*/
		handle: $('.handle', container),
		stop: function (event, ui) {
			div7.animate({'left' : ui.value * -1.25}, 750, 'linear');
			//div61.animate({'left' : ui.value * -1.25}, 750, 'linear');
			div6.animate({'left' : ui.value * -1.25}, 750, 'linear');
			div5.animate({'left' : ui.value * -1.15}, 750, 'linear');
			div4.animate({'left' : ui.value * -1.1}, 750, 'linear');
			div3.animate({'left' : ui.value * -1}, 750, 'linear');
			div2.animate({'left' : ui.value * -0.5}, 750, 'linear');
			div1.animate({'left' : ui.value * -1}, 750, 'linear');
			
			if ($('body#about').length>0) {
				waitForFinalEvent(function(){
					var zoptions =
					{
						zoomWidth: 400,
						zoomHeight: 400,
						showEffect: 'fadein',
						fadeinSpeed: 'slow',
						hideEffect: 'fadeout',
						fadeoutSpeed: 'slow',
						title: false,
						alwaysOn: true,
					}
					$(".jqzoom").jqzoom(zoptions);
					
				}, 750, "zoomeronslidestop");
			}
			
		},
		slide: function (event, ui) {
			div7.animate({'left': ui.value * -1.25}, 1);
			//div61.animate({'left': ui.value * -1.25}, 1);
			div6.animate({'left': ui.value * -1.25}, 1);
			div5.animate({'left' : ui.value * -1.15}, 1);
			div4.animate({'left' : ui.value * -1.1}, 1);
			div3.animate({'left' : ui.value * -1}, 1);
			div2.animate({'left': ui.value * -0.5}, 1);
			div1.animate({'left' : ui.value * -1}, 1);
		}
	});

	// clicking down anywhere on slider closes the project view
	$('.slider, .slider .handle', container).mousedown(function() {
		unloadproject();
	});
	
	$(".previous",".slidewrapper").click(function(){
		unloadproject();
		$('.slider', container).slider("moveTo","-=1275px");
	});

	$(".next",".slidewrapper").click(function(){
		unloadproject();
		$('.slider', container).slider("moveTo","+=1275px");
	});
	
	// set initial container size based on window
	sizewin();
	
	// read markers and place them on page, unless it's the contact page
	if ($('body#contact').length==0) {
		placemarkers();
	}
	
	// load projects
	if ($('body#home').length>0) {
		placeprojects();
		//$('.slider', container).slider("moveTo","+=6600px");
		loadprojectfromURL();
		setInterval(loadprojectfromURL, 500);
		createorder();
		$("#projectview #projectdetail #bottom A").disableSelection();
	}

	// load bios
	if ($('body#about').length>0) {
		placebios();
	}

	// load awards
	if ($('body#awards').length>0) {
		placeawards();
	}

	// adjust viewing area based on window size
	$(window).resize(function() {
		var hh = $(window).height();
		if ((hh >= 590) && (hh <= 750)) {
			if ($('body#contact').length==0) {
				$("#container").height(hh-15);
				$("#slidecontainer").height(hh-85);
				if ($('body#home').length>0) { $("#projectdetail").height(hh-220); }
			} else {
				$("#container").height(hh-240);
				$("#slidecontainer").height(hh-310);
			}
		}
	});
	
	// apply visible class when a single category is selected
	$("UL#categories LI").click(function(){
		unloadproject();
		$("UL#categories LI.current").removeClass('current');
		$(this).addClass('current');
		placemarkers(this);
		createorder(this);
	});

	// switching detail tabs in the project view...
	$("#projectdetail #top A").click(function(){
		if ($(this).attr('id')=="gallerytab") {
			$("#projectdetail #detailscontainer").fadeOut(200);
			$("#projectdetail #infocontainer").fadeIn(400);
			$("#projectdetail #bottom").fadeIn(400);
			$("#projectdetail #top A#detailstab").removeClass("selected");
			$(this).addClass("selected");
		} else if ($(this).attr('id')=="detailstab") {
			$("#projectdetail #infocontainer").fadeOut(200);
			$("#projectdetail #bottom").fadeOut(400);
			$("#projectdetail #detailscontainer").fadeIn(400);
			$("#projectdetail #top A#gallerytab").removeClass("selected");
			$(this).addClass("selected");
		}
	});
	
});

var sizewin = function() {
	var xx = $(window).height();
	if (xx < 590) {
		$("#container").height(575);
		$("#slidecontainer").height(505);
		$("#projectdetail").height(370);
	} else if ((xx >= 590) && (xx <= 750)) {
		$("#container").height(xx-15);
		$("#slidecontainer").height(xx-85);
		$("#projectdetail").height(xx-220);
	} else if (xx > 750) {
		$("#container").height(735);
		$("#slidecontainer").height(665);
		$("#projectdetail").height(530);
	}
}

var createorder = function(elt) {
	orderedprojects = [];
	var type = (elt ? elt.firstChild.className : null);
	j=0;
	if (projectmarkers) {
		if (type && type!='allprojects') {
			for (i=1; i<=projectmarkers.length; i++) {
				if (projectmarkers[i]) {
					if (type==projectmarkers[i]['type']) {
						orderedprojects[j] = $.extend(true, [], projectmarkers[i]);
						j++;
					}
				}
			}
			orderedprojects.sort(function(a, b) {
				return parseInt(a.year)-parseInt(b.year);
			});
		} else if (!type || type=='allprojects') {
			orderedprojects = $.extend(true, [], projectmarkers);
			orderedprojects.sort(function(a, b) {
				return parseInt(a.year)-parseInt(b.year);
			});
			orderedprojects = $.extend(true, [], orderedprojects);
		}
	}
}


var placemarkers = function(elt) {
	
	var markers = $('#markers','div.slidewrapper');
	if ((elt) && (elt.firstChild.className != "allprojects")) {
		markers.html("").addClass('filtered');
	} else if ((elt) && (elt.firstChild.className == "allprojects")) {
		markers.html("").removeClass('filtered');
	} else if (!elt) {
		//markers.html("").removeClass('filtered');
	}
	
	if ((projectmarkers) && ($('body#home').length>0)) {
		// show slider controls if markers are placed
		$('.previous','.slidewrapper').fadeIn(700);
		$('.slider','.slidewrapper').fadeIn(700);
		$('.next','.slidewrapper').fadeIn(700);
		$('#categories','#container').fadeIn(700);
		
		for (var i=1; i<=projectmarkers.length; i++) {
			if (projectmarkers[i]) {
				// check for a chosen category and skip marker if it doesn't match the type
				if ((elt) && (elt.firstChild.className != projectmarkers[i]['type']) && (elt.firstChild.className != "allprojects")) continue;
				
				// drop a marker
				//var newmarkerimg = $(document.createElement('IMG')).attr({src:projectmarkers[i]['thumb']});
				var newmarker = $(document.createElement('A')).addClass(projectmarkers[i]['type']).attr('id','project'+i);//.append(newmarkerimg);
				if ((projectmarkers[i]['yearcount']) && (projectmarkers[i]['yearcount'] > 0)) {
					if (elt && (elt.firstChild.className != "allprojects")) {
						var left = (parseInt(projectmarkers[i]['year'])<1985?0:(parseInt(projectmarkers[i]['year'])-1985))*29+32+(5*projectmarkers[i]['yearcount']);
					} else {
						var left = (parseInt(projectmarkers[i]['year'])<1985?0:(parseInt(projectmarkers[i]['year'])-1985))*29+30+(4*projectmarkers[i]['yearcount']);
					}
				} else {
					if (elt && (elt.firstChild.className != "allprojects")) {
						var left = (parseInt(projectmarkers[i]['year'])<1985?0:(parseInt(projectmarkers[i]['year'])-1985))*29+32;
					} else {
						var left = (parseInt(projectmarkers[i]['year'])<1985?0:(parseInt(projectmarkers[i]['year'])-1985))*29+30;
					}
				}
				newmarker.css('left',left);

				var newmarkerblurb = $(document.createElement('DIV')).html("<strong>"+projectmarkers[i]['name']+"</strong><br /><em>"+projectmarkers[i]['location']+"</em><br /><i>"+projectmarkers[i]['type']+"</i> &nbsp;|&nbsp; "+projectmarkers[i]['year']+"<SPAN></SPAN>");
				newmarker.append(newmarkerblurb);
				/* IE needs this silly href for CSS :hover effects to work */
				if ($.browser.msie) { newmarker.attr('href','#'); }
				markers.append(newmarker);
				newmarker.click(function() {
					unloadproject();
					$('.slider DIV#markers A').removeClass('selected');
					$(this).addClass('selected');
					$('.projectthumb.selected DIV','#projects .project').fadeOut(10);
					$('.projectthumb.selected','#projects .project').removeClass('selected');
					var thumbid = "#projectthumb-"+this.id.substr(7);
					$(thumbid,'#projects').addClass('selected');
					$(thumbid,'#projects').children("DIV").fadeIn(350);
					//$(".widget .mid img").attr("src", $(this).attr("src"));
				});
			}
		}
		
		filterprojects(elt);
		
	} else if ((aboutmarkers) && ($('body#about').length>0)) {
		// show slider controls if markers are placed
		$('.previous','.slidewrapper').fadeIn(700);
		$('.slider','.slidewrapper').fadeIn(700);
		$('.next','.slidewrapper').fadeIn(700);
		
		for (var i=1; i<=aboutmarkers.length; i++) {
			if (aboutmarkers[i]) {
				
				// drop a marker
				var newmarker = $(document.createElement('A')).addClass('interiors').attr('id','bio'+i);

				left = (i*6)+236;
				/* if (i==1) { left = 236; } else if (i==2) { left = 330; } else if (i > 2) { left = (i*6)+384; } */
				newmarker.css('left',left);

				var newmarkerblurb = $(document.createElement('DIV')).html("<strong>"+aboutmarkers[i]['name']+"</strong><br /><br /><img width='50' height='50' src='images/bios/"+ aboutmarkers[i]['uid'] +".jpg' /><SPAN></SPAN>");
				newmarker.append(newmarkerblurb);
				/* IE needs this silly href for CSS :hover effects to work */
				if ($.browser.msie) { newmarker.attr('href','#'); }
				markers.append(newmarker);
				newmarker.click(function() {
					//unloadbio();
					$('.biothumb.selected DIV','#projects .bio').fadeOut(10);
					$('.biothumb.selected','#projects .bio').removeClass('selected');
					var thumbid = "#biothumb-"+this.id.substr(3);
					$(thumbid,'#projects').addClass('selected');
					$(thumbid,'#projects').children("DIV").fadeIn(350);
				});
				
			}
		}
	} else if ((awardmarkers) && ($('body#awards').length>0)) {
		// show slider controls if markers are placed
		$('.previous','.slidewrapper').fadeIn(700);
		$('.slider','.slidewrapper').fadeIn(700);
		$('.next','.slidewrapper').fadeIn(700);
		
		for (var i=1; i<=awardmarkers.length; i++) {
			if (awardmarkers[i]) {
				
				// drop a marker
				var newmarker = $(document.createElement('A')).addClass(awardmarkers[i]['type']).attr('id','award'+i);//.append(newmarkerimg);
				if ((awardmarkers[i]['yearcount']) && (awardmarkers[i]['yearcount'] > 0)) {
					var left = (parseInt(awardmarkers[i]['year'])<1985?0:(parseInt(awardmarkers[i]['year'])-1985))*29+30+(4*awardmarkers[i]['yearcount']);
				} else {
					var left = (parseInt(awardmarkers[i]['year'])<1985?0:(parseInt(awardmarkers[i]['year'])-1985))*29+30;
				}
				newmarker.css('left',left);

				var newmarkerblurb = $(document.createElement('DIV')).html("<strong>"+awardmarkers[i]['name']+"</strong><br /><i>"+(awardmarkers[i]['type']?awardmarkers[i]['type']+'</i> &nbsp;|&nbsp; ':'')+""+awardmarkers[i]['year']+"<SPAN></SPAN>");
				newmarker.append(newmarkerblurb);
				/* IE needs this silly href for CSS :hover effects to work */
				if ($.browser.msie) { newmarker.attr('href','#'); }
				markers.append(newmarker);
				newmarker.click(function() {
					//unloadproject();
					$('.slider DIV#markers A').removeClass('selected');
					$(this).addClass('selected');
					$('.awardthumb.selected DIV','#projects .award').fadeOut(10);
					$('.awardthumb.selected','#projects .award').removeClass('selected');
					var thumbid = "#awardthumb-"+this.id.substr(5);
					$(thumbid,'#projects').addClass('selected');
					$(thumbid,'#projects').children("DIV").fadeIn(350);
				});
			}
		}
	}

};

var placeprojects = function() {
	var projectsdiv = $('#projects','div#slidecontainer');

	if (projectmarkers) {

		// place all the PROJECT PILLAR divs
		for (var i=1; i<=projectmarkers.length; i++) {
			if (projectmarkers[i]) {
				if (!(projectmarkers[i]['yearcount']) || (projectmarkers[i]['yearcount'] == "undefined")) {
					var newproject = $(document.createElement('DIV')).addClass('project').attr('id','projectdiv-'+projectmarkers[i]['year']);
					var left = (parseInt(projectmarkers[i]['year'])<1985?0:(parseInt(projectmarkers[i]['year'])-1985))*343+30;
				} else if ((projectmarkers[i]['yearcount']) && (projectmarkers[i]['yearcount'] == 5)) {
					var newproject = $(document.createElement('DIV')).addClass('project').attr('id','projectdiv-'+projectmarkers[i]['year']+'-2');
					var left = (parseInt(projectmarkers[i]['year'])<1985?0:(parseInt(projectmarkers[i]['year'])-1985))*343+30+120;
				}
				newproject.css({'left':left,'padding-bottom':(140-5*(Math.floor(Math.random()*5+1)))});
				//newproject.css('left',left).html(projectmarkers[i]['year']);
				projectsdiv.append(newproject);
			}
		}
		
		// place the PROJECT THUMBS in the pillars
		for (var i=1; i<=projectmarkers.length; i++) {
			if (projectmarkers[i]) {
				var newthumbimg = $(document.createElement('IMG')).attr({src:"images/projects/"+projectmarkers[i]['uid']+"/"+projectmarkers[i]['uid']+"-thumb.jpg"});
				var newthumb = $(document.createElement('A')).addClass('projectthumb').attr('id','projectthumb-'+i).append(newthumbimg);
				var newthumbquote = $(document.createElement('DIV'))
									.addClass(projectmarkers[i]['type'])
									.html(""
										  +"<em>"
										  +projectmarkers[i]['quote']
										  +"</em><br />"
										  +"<strong>"
										  +projectmarkers[i]['name']
										  +"</strong> &nbsp;/&nbsp; "
										  +projectmarkers[i]['location']
										  +" &nbsp;/&nbsp; "
										  +projectmarkers[i]['year']
										  +" &nbsp;/&nbsp; "
										  +projectmarkers[i]['type']
										  +"<SPAN></SPAN>");
				newthumb.append(newthumbquote);
				/* IE needs this silly href for CSS :hover effects to work */
				if ($.browser.msie) { newthumb.attr('href','#'); }
				
				// append the markers in the right div
				if (!(projectmarkers[i]['yearcount']) || (projectmarkers[i]['yearcount'] < 5)) {
					$('#projectdiv-'+projectmarkers[i]['year'],'#projects').append(newthumb);
				} else if ((projectmarkers[i]['yearcount']) && (projectmarkers[i]['yearcount'] >= 5)) {
					$('#projectdiv-'+projectmarkers[i]['year']+'-2','#projects').append(newthumb);
				}
				
				// if a thumb is not already selected or filtered, mouseover it should hide any other visible selection
				newthumb.hover(
					function() {
						if ((!$(this).hasClass("selected")) && (!$(this).hasClass("filtered"))) {
							$('.slider DIV#markers A').removeClass('selected');
							//$(this).addClass('selected');
							$('A.projectthumb.selected DIV','#projects .project').fadeOut(1);
							$('A.projectthumb.selected','#projects .project').removeClass('selected');
							$(this).children("DIV").fadeIn(350);
						}
					},
					function() {
						if ((!$(this).hasClass("selected")) && (!$(this).hasClass("filtered"))) {
							$(this).children("DIV").fadeOut(1);
						}
					}
				);
				
				// call function to load the project detail, only show if its not filtered out by category
				newthumb.click(function() {
					if (!$(this).hasClass("filtered")) {
						loadproject(this.id); 
					}
				});

				//var bgStr = "url(" + projectmarkers[i]['thumb'] +")";
				//$('A.projectthumb DIV em','#projects').css({"background-image":bgStr});
			}
		}
	}
};

var filterprojects = function(elt) {
	var projectthumbs = $(".projectthumb", "#projects");
	for (var i=0; i<projectthumbs.length; i++) {
		if (projectthumbs[i]) {
			
			// clear all thumbs of filter
			$(projectthumbs[i]).removeClass("filtered");
			
			// get the project index from the ID
			var thumbnum = parseInt((projectthumbs[i].id).match(/\d+$/)[0]);
			
			// check for a chosen category and filter the thumb if it doesn't match the type
			if ((elt) && (elt.firstChild.className != projectmarkers[thumbnum]['type']) && (elt.firstChild.className != "allprojects")) {
				$(projectthumbs[i]).addClass("filtered");
			}
		}
	}
};


// trying to mark the current loaded project in the list of ordered projects
var setprojectsequence = function(x) {
	var currentprojectindex;
	for (var i=0; i<orderedprojects.length; i++) {
		if (orderedprojects[i]) {
			//console.log(projectmarkers[x]['uid']+"--"+orderedprojects[i]['uid']);
			if (projectmarkers[x]['uid'] == orderedprojects[i]['uid']) {
				currentprojectindex = i;
			}
		}
	}
	
	if (currentprojectindex > 0) { 
		var previd = orderedprojects[currentprojectindex-1]['uid'];
	}
	
	if (currentprojectindex < orderedprojects.length-1) { 
		var nextid = orderedprojects[currentprojectindex+1]['uid'];
	}
	
	for (var i=1; i<=projectmarkers.length; i++) {
		if (projectmarkers[i]) {
			//console.log(previd+"--"+projectmarkers[i]['uid']);
			var previndex, nextindex;
			if (previd) {
				if (previd == projectmarkers[i]['uid']) { previndex = i; }
				$("#projectview #projectdetail #bottom A.previous").unbind();
				$("#projectview #projectdetail #bottom A.previous").click(function() { loadproject("projectthumb-"+previndex); });
			}
			if (nextid) {
				if (nextid == projectmarkers[i]['uid']) { nextindex = i; }
				$("#projectview #projectdetail #bottom A.next").unbind();
				$("#projectview #projectdetail #bottom A.next").click(function() { loadproject("projectthumb-"+nextindex); });
			}
		}
	}
	
	//console.log(currentproject.indexcode + ": projectthumb-" + x);
}


// project detail loader
var container = $('div#slidecontainer');
var pview_name, pview_location, pview_type, pview_client, pview_year, pview_built, pview_plot, pview_team, pview_budget, pview_contractor, pview_structure, pview_landscape, pview_phe, pview_electrical, pview_photography, pview_quote, pview_writeup;
var loadproject = function(eltid) {
	if (eltid) {
		//console.log(eltid);
		var x = parseInt(eltid.match(/\d+$/)[0]);
		
		if (projectmarkers[x]) {

			//order the visible projects for sequenced browsing
			setprojectsequence(x);
			//console.log("done sequencing, loading project info...");

			// closing the project
			$("#projectdetail #close").unbind().click(function() {
				unloadproject();
			});

			// marking the marker
			$('.slider DIV#markers A.selected').removeClass('selected');
			$('.slider DIV#markers A#project'+x).addClass('selected');
			//var leftpos = parseInt($('#'+eltid).parent().css('left'));
			//$('.slider', container).slider("moveTo",(leftpos/1.402)+'px');
			//console.log(leftpos);
			
			// clear the previous category colour code
			$("#slidecontainer #projectview #projectdetail #type").removeClass(pview_type);
			
			pview_name = projectmarkers[x]['name'];
			pview_location = projectmarkers[x]['location'];
			pview_type = projectmarkers[x]['type'];
			pview_client = projectmarkers[x]['client'];
			pview_year = projectmarkers[x]['year'];
			pview_built = projectmarkers[x]['built'];
			pview_plot = projectmarkers[x]['plot'];
			
			pview_team = projectmarkers[x]['team'];
			pview_budget = projectmarkers[x]['budget'];

			pview_contractor = projectmarkers[x]['contractor'];
			pview_structure = projectmarkers[x]['structure'];
			pview_landscape = projectmarkers[x]['landscape'];
			pview_phe = projectmarkers[x]['phe'];
			pview_electrical = projectmarkers[x]['electrical'];
			pview_photography = projectmarkers[x]['photography'];
			
			pview_quote = projectmarkers[x]['quote'];
			pview_writeup = projectmarkers[x]['writeup'];
			
			$("#slidecontainer #projectview #projectdetail #title").html(pview_name+",");
			$("#slidecontainer #projectview #projectdetail #location").html(pview_location+",");
			$("#slidecontainer #projectview #projectdetail #type").addClass(pview_type).html(pview_type);
			
			$("#slidecontainer #projectview #projectdetail #infocontainer #client").html(pview_client);
			$("#slidecontainer #projectview #projectdetail #infocontainer #year").html(pview_year);
			$("#slidecontainer #projectview #projectdetail #infocontainer #built").html(pview_built);
			$("#slidecontainer #projectview #projectdetail #infocontainer #plot").html(pview_plot);

			$("#slidecontainer #projectview #projectdetail #infocontainer #team").html(pview_team);
			$("#slidecontainer #projectview #projectdetail #infocontainer #budget").html('<br />'+(pview_budget?pview_budget:'n/a'));

			$("#slidecontainer #projectview #projectdetail #infocontainer #contractor").html(pview_contractor);
			$("#slidecontainer #projectview #projectdetail #infocontainer #structure").html(pview_structure);
			$("#slidecontainer #projectview #projectdetail #infocontainer #landscape").html(pview_landscape);
			$("#slidecontainer #projectview #projectdetail #infocontainer #phe").html(pview_phe);
			$("#slidecontainer #projectview #projectdetail #infocontainer #electrical").html(pview_electrical);
			$("#slidecontainer #projectview #projectdetail #infocontainer #photography").html(pview_photography);

			if (pview_quote) {
				$("#slidecontainer #projectview #projectdetail #quote").html("&quot;"+pview_quote+"&quot;");
			}
			
			loadprojectimages(x);
			
			$("#slidecontainer #projectview #projectdetail #writeup").html(pview_writeup);
			if (!pview_writeup) {
				$("#projectdetail #top A#detailstab").css({'display':'none'});
			} else {
				$("#projectdetail #top A#detailstab").css({'display':'block'});
			}
			
			$("#slidecontainer #projectview").fadeIn(350);
			window.location.hash = x; recentHash = window.location.hash;
			//console.log("load "+x+": "+pview_type);
		}
	} else {
		//console.log("UNloading...");
		unloadproject();
	}
};

var loadprojectfromURL = function() {
	// this is because on refresh of a project view, the sequence gets messed up even though the recent hash seems to persist
	if ((window.location.hash==recentHash) && (window.location.hash != null) && (window.location.hash != "") && (window.location.hash != "#")) {
		var x = parseInt(window.location.hash.substr(1));
		setprojectsequence(x);
	}

	// no change since last polling, return with no load action
	if ((window.location.hash==recentHash) || (window.location.hash=="#") || (window.location.hash=="")) {
		return;
	}
	
	loadproject(window.location.hash);
};

var unloadproject = function() {
	$("#slidecontainer #projectview").fadeOut(300);
	$("#projectdetail #top A#gallerytab").click();
	window.location.hash = ""; recentHash = "";
	
	//unmarking the marker
	//only if no valid thumb has the "selected" class
	if (($("#projects .project A.projectthumb.selected").attr('id')==null) || ($("#projects .project A.projectthumb.selected").attr('id')=="undefined")) {
		$('.slider DIV#markers A.selected').removeClass('selected');
	}
};

// Image Gallery Loader and Controller

var myImgEnd = ".jpg"
var myImgPath = "images/projects/";

var loadprojectimages = function(n) {
	var thumbDiv = $("#projectdetail #infocontainer #thumbs").html("");
	var mainImg = $("#projectdetail #infocontainer #mainimage IMG").hide();
	if ((projectmarkers[n]) && (projectmarkers[n]["images"])) {
		var howMany = projectmarkers[n]["images"].length;
		if (howMany>10) { howMany = 10; }
		var i=0;
		while (i<howMany) {
			var thumbimagesrc = myImgPath + projectmarkers[n]["uid"] + "/" + projectmarkers[n]["images"][i] + myImgEnd;
			var thumbimage = $(document.createElement('IMG')).attr('src',thumbimagesrc);
			var thumblink = $(document.createElement('A')).addClass('gallerythumb').append(thumbimage);
			if (i==0) { thumblink.addClass('selected'); }
			thumblink.click(function(){
				$('#slidecontainer #projectdetail #infocontainer #thumbs A.gallerythumb').removeClass('selected');
				$(this).addClass('selected');
				$("#projectdetail #infocontainer #image #mainimage IMG").hide().attr('src',$(this).children(':first-child').attr('src')).fadeIn(300);
			});
			thumbDiv.append(thumblink);
			i++;
		}
		var firstimage = myImgPath + projectmarkers[n]["uid"] + "/" + projectmarkers[n]["images"][0] + myImgEnd;
		mainImg.attr('src',firstimage).show();
	}
};


var placebios = function() {
	var projectsdiv = $('#projects','div#slidecontainer');

	if (aboutmarkers) {

		// place all the BIO PILLAR divs
		for (var i=0; i<=11; i++) {
			var newbio = $(document.createElement('DIV')).addClass('bio').attr('id','biodiv-'+i);
			var left = 2500+(155*i);
			newbio.css({'left':left,'padding-bottom':(100-8*(Math.floor(Math.random()*5+1)))});
			projectsdiv.append(newbio);
		}
		
		// place the PROJECT THUMBS in the pillars
		for (var i=1; i<=aboutmarkers.length; i++) {
			if (aboutmarkers[i]) {
				var newthumbimg = $(document.createElement('IMG')).attr({src:"images/bios/"+aboutmarkers[i]['uid']+".jpg"});
				var newthumb = $(document.createElement('A')).addClass('biothumb').attr('id','biothumb-'+i).append(newthumbimg);
				var newthumbquote = $(document.createElement('DIV'))
									.html("<h2>"+ aboutmarkers[i]['name'] +"</h2>"
										  +"<em>"
										  +aboutmarkers[i]['bio']
										  +"</em><br />"
										  +"<SPAN></SPAN>");
				newthumb.append(newthumbquote);
				// IE needs this silly href for CSS :hover effects to work
				if ($.browser.msie) { newthumb.attr('href','#'); }
				
				// append the markers in the right div
				$('#biodiv-'+aboutmarkers[i]['group'],'#projects').append(newthumb);
				
				// if a thumb is not already selected or filtered, mouseover it should hide any other visible selection
				newthumb.hover(
					function() {
						if (!$(this).hasClass("selected")) {
							$('A.biothumb.selected DIV','#projects .bio').fadeOut(1);
							$('A.biothumb.selected','#projects .bio').removeClass('selected');
							$(this).children("DIV").fadeIn(350);
						}
					},
					function() {
						if (!$(this).hasClass("selected")) {
							$(this).children("DIV").fadeOut(1);
						}
					}
				);
				
				// call function to load the project detail, only show if its not filtered out by category
				//newthumb.click(function() {
				//	if (!$(this).hasClass("filtered")) {
				//		loadproject(this.id); 
				//	}
				//});
			}
		}
	}
};


// place awards
var placeawards = function() {
	var projectsdiv = $('#projects','div#slidecontainer');

	if (awardmarkers) {

		// place all the PROJECT PILLAR divs
		for (var i=1; i<=awardmarkers.length; i++) {
			if (awardmarkers[i]) {
				if (!(awardmarkers[i]['yearcount']) || (awardmarkers[i]['yearcount'] == "undefined")) {
					var newaward = $(document.createElement('DIV')).addClass('award tree'+Math.floor(Math.random()*6+1)).attr('id','awarddiv-'+awardmarkers[i]['year']);
					var left = (parseInt(awardmarkers[i]['year'])<1985?0:(parseInt(awardmarkers[i]['year'])-1985))*343+30;
				} else if ((awardmarkers[i]['yearcount']) && (awardmarkers[i]['yearcount'] == 5)) {
					var newaward = $(document.createElement('DIV')).addClass('award tree'+Math.floor(Math.random()*3+1)).attr('id','awarddiv-'+awardmarkers[i]['year']+'-2');
					var left = (parseInt(awardmarkers[i]['year'])<1985?0:(parseInt(awardmarkers[i]['year'])-1985))*343+30+130;
				}
				newaward.css({'left':left,'padding-bottom':(140-5*(Math.floor(Math.random()*5+1)))});
				//newproject.css('left',left).html(projectmarkers[i]['year']);
				projectsdiv.append(newaward);
			}
		}
		
		// place the PROJECT THUMBS in the pillars
		for (var i=1; i<=awardmarkers.length; i++) {
			if (awardmarkers[i]) {
				var newthumbimg = $(document.createElement('IMG'));
				if (awardmarkers[i]['link']) {
					newthumbimg.attr({src:"images/projects/"+projectmarkers[awardmarkers[i]['link']]['uid']+"/"+projectmarkers[awardmarkers[i]['link']]['uid']+"-thumb.jpg"});
				} else {
					newthumbimg.attr({src:'images/award.png'}); 
				}
				
				var newthumb = $(document.createElement('A')).addClass('awardthumb').attr('id','awardthumb-'+i).append(newthumbimg);
				var newthumbquote = $(document.createElement('DIV'))
									.html("<b>"
										  + awardmarkers[i]['year'] + "</b>"
										  + (awardmarkers[i]['type'] ? (" &nbsp;/&nbsp; " + awardmarkers[i]['type']):"")
										  + "<br /><strong>"
										  + awardmarkers[i]['name']
										  + "</strong><br />"
										  + "<em>"
										  + awardmarkers[i]['info']
										  + "</em><br />"
										  + "<SPAN></SPAN>");
				newthumbquote.addClass(awardmarkers[i]['type']);
				newthumb.append(newthumbquote);
				/* IE needs this silly href for CSS :hover effects to work */
				if ($.browser.msie) { newthumb.attr('href','#'); }
				
				// append the markers in the right div
				if (!(awardmarkers[i]['yearcount']) || (awardmarkers[i]['yearcount'] < 5)) {
					$('#awarddiv-'+awardmarkers[i]['year'],'#projects').append(newthumb);
				} else if ((awardmarkers[i]['yearcount']) && (awardmarkers[i]['yearcount'] >= 5)) {
					$('#awarddiv-'+awardmarkers[i]['year']+'-2','#projects').append(newthumb);
				}
				
				// if a thumb is not already selected or filtered, mouseover it should hide any other visible selection
				newthumb.hover(
					function() {
						if (!$(this).hasClass("selected")) {
							$('.slider DIV#markers A').removeClass('selected');
							//$(this).addClass('selected');
							$('A.awardthumb.selected DIV','#projects .award').fadeOut(1);
							$('A.awardthumb.selected','#projects .award').removeClass('selected');
							$(this).children("DIV").fadeIn(350);
						}
					},
					function() {
						if (!$(this).hasClass("selected")) {
							$(this).children("DIV").fadeOut(1);
						}
					}
				);
				
				// call function to load the project detail, only show if its not filtered out by category
				newthumb.click(function() {
					//loadproject(this.id);
				});

			}
		}
	}
};


// IMG pre loader function
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)

// Call a function after all repeated events have stopped
var waitForFinalEvent = (function () {
  var timers = {};
  return function (callback, ms, uniqueId) {
    if (!uniqueId) {
      uniqueId = "Don't call this twice without a uniqueId";
    }
    if (timers[uniqueId]) {
      clearTimeout (timers[uniqueId]);
    }
    timers[uniqueId] = setTimeout(callback, ms);
  };
})();

// disabling unwanted selection
jQuery.fn.extend({ 
        disableSelection : function() { 
                this.each(function() { 
                        this.onselectstart = function() { return false; }; 
                        this.unselectable = "on"; 
                        jQuery(this).css('-moz-user-select', 'none'); 
                }); 
        } 
});

