/*
  Website Palmboom & van den Bout
  Copyright (C) 2008 by Systemantics, Bureau for Informatics

  Lutz Issler
  Mauerstr. 10-12
  52064 Aachen
  GERMANY

  Web:    www.systemantics.net
  Email:  mail@systemantics.net

  Permission granted to use the files associated with this
  website only on your webserver.
*/



var pageObj = null;
var pageObjZ = null;
var textObj = null;
var fixedTextObj = null;
var mouseMoved = false;

function toFront(prefix, id, level) {
	if (!mouseMoved) {
		return;
	}
	pageObj = DHTMLAPI.getRawObject(prefix+id);
	pageObjZ = DHTMLAPI.getZIndex(pageObj);
	DHTMLAPI.setZIndex(pageObj, (level+1)*1000);
	textObj = DHTMLAPI.getRawObject(prefix+id+"text");
	if (textObj) {
		if (fixedTextObj) {
			DHTMLAPI.hide(fixedTextObj);
		}
		DHTMLAPI.show(textObj);
	}
}

function toBack() {
	if (pageObj) {
		DHTMLAPI.setZIndex(pageObj, pageObjZ);
	}
	if (textObj) {
		DHTMLAPI.hide(textObj);
	}
	if (fixedTextObj) {
		DHTMLAPI.show(fixedTextObj);
	}
}

var SQRT5 = Math.sqrt(5);
var phi = (1 + SQRT5) / 2;
var minWidth = 30;

function fib(n) {
	if (n==1) {
		// Little modification
		return 0;
	}
	return Math.round((Math.pow(phi, n) - Math.pow(1 - phi, n)) / SQRT5);
}

function resized() {
	// Change the height of the project descriptions
	var offset = $(".text .columns").offset();
	if (offset) {
		$(".text .columns").height(Math.max(DHTMLAPI.getInsideWindowHeight()-offset.top, 84));
	}
	// Layout project descriptions
	COLUMN_LAYOUT.setCols(2);
	COLUMN_LAYOUT.setBalanceMode(true);
	COLUMN_LAYOUT.layoutAll("columns", "column");
	// Spread first level to width
	totalWidth = 0;
	for (var i=0; i<page0Count; i++) {
		totalWidth += DHTMLAPI.getElementWidth("page0_"+i);
	}
	var unitWidth;
	var layoutedPages = page0Count+1;
	var availWidth = Math.min(DHTMLAPI.getInsideWindowWidth(), totalWidth)-Math.max(DHTMLAPI.getElementWidth("page0_"+(page0Count-1)), 550);
	do {
		layoutedPages--;
		unitWidth = layoutedPages==1 ? 0 : availWidth/fib(layoutedPages);
		availWidth -= minWidth;
	} while (unitWidth<minWidth && layoutedPages>1);
	for (var i=0; i<page0Count; i++) {
		var x = i<page0Count-layoutedPages ? i*minWidth : (page0Count-layoutedPages)*minWidth+unitWidth*fib(i-page0Count+layoutedPages+1);
		DHTMLAPI.moveTo("page0_"+i, x-10, DHTMLAPI.getElementTop("page0_"+i));
		DHTMLAPI.show("page0_"+i);
		if (i!=page1Anchor) {
			var obj = DHTMLAPI.getRawObject("page0_"+i+"text");
			if (obj) {
				DHTMLAPI.moveTo(obj, Math.max(x-7, obj.getElementsByTagName("IMG").length==1 ? 35 : -1000), DHTMLAPI.getElementTop(obj));
			}
		}
	}
	// Layout second level
	if (page1Count>0) {
		// Spread second level aligned to anchor
		unitWidth = -30;
		var deltaX = Math.max(DHTMLAPI.getElementLeft("page0_"+page1Anchor)+10, -(page1Count-1)*unitWidth);
		for (var i=0; i<page1Count; i++) {
			var obj = DHTMLAPI.getRawObject("page1_"+i);
			if (obj) {
				DHTMLAPI.moveTo("page1_"+i, (page1Count-i-1)*unitWidth+deltaX-10, DHTMLAPI.getElementTop("page1_"+i));
				DHTMLAPI.show("page1_"+i);
			}
		}
		var obj = DHTMLAPI.getRawObject("page0_"+page1Anchor+"text");
		if (obj) {
			var x = DHTMLAPI.getElementLeft("page1_"+(page1Count-1));
			DHTMLAPI.moveTo(obj, Math.max(x, obj.getElementsByTagName("IMG").length==1 ? 35 : -1000), DHTMLAPI.getElementTop(obj));
		}
		fixedTextObj = DHTMLAPI.getRawObject("page0_"+page1Anchor+"text");
		DHTMLAPI.show(fixedTextObj);
	}
}

function loaded() {
	// Init DHTML API
	DHTMLAPI.init();
	// Layout the publication columns
	COLUMN_LAYOUT.setCols(2);
	COLUMN_LAYOUT.setPageProperties("buttons active", "||||| "+buttonNext, "||||| "+buttonAgain),
	COLUMN_LAYOUT.setBalanceMode(false);
	COLUMN_LAYOUT.layoutAll("pubcolumns", "column");
	// Layout the project columns
	var cols = $(".projects").columnize({columns: 3, balance: false}).children();
	if (cols.length>3) {
		cols.filter(":gt(2)").css("display", "none");
		var current = cols.eq(0);
		$('<div class="button buttons active">||||| '+buttonNext+'</div>')
			.click(function() {
				current = current.hide().next()
					.hide().next()
					.hide().next();
				if (current.length==0) {
					current = $(cols.eq(0));
				}
				var preview = current.show().next()
					.show().next()
					.show().next();
				$(this).html(preview.length>0 ? '||||| '+buttonNext : '||||| '+buttonAgain);
			})
			.appendTo(cols.parents(".office"));
	}
	// Move pages to their positions
	resized();
	// Init Google Maps API
	if (typeof GEvent!="undefined" && GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
		var center = new GLatLng(latlng[0], latlng[1]);
		map.setCenter(center, 13);
		var marker = new GMarker(center, {title: "PALMBOUT-Urban Landscapes."});
		var el = document.getElementById("mapInfoWindow").cloneNode(true);
		el.style.display = "block";
		marker.bindInfoWindow(el);
		map.addOverlay(marker);
		GEvent.trigger(marker, "click");
		window.onunload = GUnload;
	}
	// Init mouse move handler
	document.onmousemove = function() {
		mouseMoved = true;
	}
}

var oldPersonEl = false;

function _selectPerson(el, cv) {
	$('#cv')
		.css("visibility", "hidden")
		.html(cv);
	if (!$.browser.msie) {
		$('#cv')
			.columnize({columns: 2, balance: false, cache: false})
	}
	$('#cv')
		.css("visibility", "visible");
	if (oldPersonEl) {
		$(oldPersonEl).removeClass("selected");
	}
	$(el).addClass("selected");
	oldPersonEl = el;
}

function selectPerson(el, cv) {
	var img = $(cv).children("img");
	if (img.length) {
		var pImg = new Image;
		pImg.onload = function() {
			_selectPerson(el, cv);
		};
		pImg.src = img.attr("src");
	} else {
		_selectPerson(el, cv);
	}
}

$(window).load(loaded);
window.onresize = resized;
