// really, microsoft? really?
if(!Array.indexOf) {
	   Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}

var projects_categories;
var projects_selected_category;
var projects_selected_site;
var projects_selected_photo;

$(document).ready(function() {
	$.getJSON("/res/js/projects.txt", null, function(categories) {
		projects_categories = new Array();
		$.each(categories, function(i, category) { 
			projects_categories.push(category);
			$("#project_categories").append(makeCategoryListItem(category));
		});
		selectCategory(categories[0]);
	})
	$("#previous_slide").click(function() { 
		previousSlide() 
	});
	$("#next_slide").click(nextSlide);
});


function imgDirForSite(site)
{
	return "/res/img/projects/" + 
	(projects_categories.indexOf(projects_selected_category) + 1) + "/" +
	(projects_selected_category.sites.indexOf(site) + 1) + "/";
}

function makeCategoryListItem(category) {
	category.li = $("<li><a href='#'><table><tr><td>" + category.name +"</td></tr></table></a></li>").click(function() {
		selectCategory(category);
	});
	
	return category.li;
}

function selectCategory(category)
{
	if(projects_selected_category)
		projects_selected_category.li.toggleClass("selected");
	
	projects_selected_category = category;	
	projects_selected_category.li.toggleClass("selected");
	
	$("#project_sites ul").empty();
	$.each(category.sites, function(i, site) {
		$("#project_sites ul").append(makeSiteListItem(site));
	});
	
	selectSite(category.sites[0]);
}

function makeSiteListItem(site) {
	site.li = $("<li><div class='site' style='background-image:url(" + imgDirForSite(site) + "thumb.jpg)'><span class='site_title'>" + site.name + "</span><span class='site_address'>" + site.address + "</span></div><div class='screen'></div><div class='bord' style='visibility:hidden'></div></li>");
	
	var under = site.li.find("div.site");
	var over = site.li.find("div.screen");
	
	var sitelihover = function() { if(site != projects_selected_site) site.li.toggleClass("selected") }
	site.li.hover(sitelihover, sitelihover);
	
	under.click(function() { selectSite(site) })
	over.hover(
			function() { over.css('visibility','hidden') }, function() {});
	under.hover(function() {},
			function() { if(site != projects_selected_site) over.css('visibility','visible') }
		);
	
	return site.li;
}

function selectSite(site) {
	if(projects_selected_site)
	{
		projects_selected_site.li.removeClass("selected");
		projects_selected_site.li.find("div.screen").css('visibility', 'visible');
		projects_selected_site.li.find("div.bord").css('visibility', 'hidden');
	}
	
	projects_selected_site = site;
	projects_selected_site.li.addClass("selected");
	projects_selected_site.li.find("div.screen").css('visibility', 'hidden');
	projects_selected_site.li.find("div.bord").css('visibility', 'visible');
	
	var n = $("#slide_numbers");
	n.empty();
	for(var i = 1; i <= site.photos; i++)
	{
		n.append(makePhotoListItem(i));
		if(i != site.photos)
			n.append(" | ");
	}
	selectPhoto(1);
}

function makePhotoListItem(photo) {
	var a = $("<a id='photo_" + photo + "' href='#'>" + photo + "</a>");
	return a.click(function() { selectPhoto(photo); });
		
}

function selectPhoto(photo) {
	projects_selected_photo = photo;
	
	a = $("#photo_" + photo);
	a.parent().find("a.selected").toggleClass("selected");
	a.toggleClass("selected");
	
	$("#project_image").empty().append(
		"<img src='" + imgDirForSite(projects_selected_site) + photo + ".jpg'/>");
}

function nextSlide()
{
	selectPhoto(projects_selected_photo == projects_selected_site.photos ? 1 : projects_selected_photo + 1);
}
function previousSlide()
{
	
	selectPhoto(projects_selected_photo == 1 ? projects_selected_site.photos : projects_selected_photo - 1);
}