var activeTab = -1;
var activePage = -1;
var oldHash = "";
var tabs;
var imgPath;
var curPage = 1;
var maxPage = 1;
var buttonImages = new Array();
var tabImages = new Array();
var loadingImages = true;
var navInterval = -1;
function checkNavigation(){
	//activetab eruit parsen
	//activepage eruit parsen
	//als activeTab veranderd -> ga naar die tab
	//als er een page inzit én die is veranderd -> ga naar die page
	var params = window.location.hash;
	//alert(window.location.hash + ' ' + oldHash);
	if (params != oldHash){
		
		oldHash = params;
		var tIx = params.indexOf('tab');
		if ((tIx > -1)&(tabs != undefined)){
		  showTab(params.substring(tIx+3, tIx+4));
		}
		var pIx = params.indexOf('page');
		if (pIx > -1){
			//alert(params.substring(pIx+4, params.length));
			leesplaatjes( Number(params.substring(pIx+4, params.length) ) );
		} else if (tabs == undefined){
			//ZOEKresultaten hack
			leesplaatjes(0);
		}
		return true;		
	} else {		
		return false;
	}	
}
function tabClick(aIndex){
	var tmpHash = "#tab" + aIndex;
	if ((plNames.length > 0) & (aIndex == 0)){
		leesplaatjes((curPage-1)*9);
		tmpHash += "&page" + ((curPage-1)*9);
	}
	window.location.hash = tmpHash;
}
function pageClick(aIndex){
	//ok, nu 
	window.location.hash = "#tab1&page" + aIndex;
}
function preloadButtonImages(){
	for (var k=0; k< document.images.length; k++){
		var img = document.images[k];
		var btnName = document.images[k].id;
		if ((btnName.length > 2)&&(btnName.substring(0,3) == "btn")){
			var elem = new Object();
			elem.img = new Image;
			elem.img.src = imgPath + btnName + ".gif";
			elem.imgHot = new Image;
			elem.imgHot.src = imgPath + btnName + "Hot.gif";
			buttonImages[btnName] = elem;
		}			
	}
	loadingImages = false;
}
function preloadTabImages(){
	for (k = 0; k < tabs.length; k++){
		var elem = new Object();
		tabImages[tabs[k]] = elem;
		elem.img = new Image;
		elem.imgHot = new Image;
		elem.imgFixed = new Image;
		elem.img.src = imgPath + "tab" + tabs[k] + ".gif";		
		elem.imgHot.src = imgPath + "tab" + tabs[k] + "Hot.gif";		
		elem.imgFixed.src = imgPath + "tab" + tabs[k] + "Fixed.gif";
	} 
}
function leesplaatjes(min){
	var maxx = plNames.length;
	if (maxx > 0) {
	
		//beschrijving van waar we zijn in de navigatie
		descDiv = document.getElementById("navdesc");
		if (maxx == 1){
			descDiv.innerHtml = "";
		} else {
			descDiv.innerHTML = textAfbeelding + " <strong>" + (min+1).toString() + "</strong> " + textTot + " <strong>" +  Math.min(plNames.length,(min+9)).toString() + "</strong> " + textVan + " <strong>" + plNames.length + "</strong>";
		}
		
		//volgende/vorige
		var vol = min + 9;
		var vor = min - 9;
		var a = document.getElementById("aNext");
		if (min<maxx-9){
			a.style.visibility = "visible";
			a.href = "javascript:pageClick(" + vol + ")";
		} else {
			a.style.visibility = "hidden";
		}
		//de "vorige"link
		a = document.getElementById("aPrior");
		if (min<9) {
			a.style.visibility = "hidden";
		} else {
			a.style.visibility = "visible";
			a.href="javascript:pageClick(" + vor + ")";
		}
		
		//en de pagina navigering onder in beeld
		maxPage = Math.floor((plNames.length-1) / 9)+1;
		curPage = Math.floor(min / 9) + 1;
		makePageNavigation();
		
		/*var navv = document.getElementById("nav");
		if (vol > maxx){
			vol = maxx;
		}
		navv.innerHTML=eersteLink + vorLink + "&nbsp;&nbsp;" + (min+1) + "-" + vol + " / " + maxx + "&nbsp;" + volLink + laatsteLink;*/
		for (k =0; k<9; k++){ 
			hulp = k + min;
			aa = "a" + k + "";
			pl = "pl" + k + "";		
			var link = document.getElementById(aa);
			var plaat = document.getElementById(pl);
			if (hulp< maxx){
				link.href="detail.aspx?page=dafb&lang="+lang+"&id=" + plIDs[hulp];
				plaat.src="thumbs/"+plLokaties[hulp];
				plaat.title=plNames[hulp];
			} else {
			/* hier dus de case dat er niet 9 plaatjes op de pagina staan... */
				plaat.src="afb/stip.jpg";
				plaat.title="";
				link.href="";
			}
		}
	}
	//kan hier, hoewel een lelluke plek, de hoogte van containing div aangepast worden?
}
function makePageNavigation(){
	var navText = textPagina + "&nbsp;&nbsp;";
	navText += makeLink(1);
	if ((curPage > 5) & (maxPage > 9)){
		navText += " ...";
	}
	//nu willen we echt 7 elementen renderen. Hetzij drie aan weerszijden van de curpage, maar misschien ook wel meer, afhankelijk van hoe dicht de elementen tegen de uiteinden zitten. Maar als er minder pagina's zijn.. dan willen we natuurlijk minder renderen.
	var fromPage = (curPage - 3);
	var toPage = (curPage + 3);
	if (fromPage < 2){
		if (maxPage-1 < 9){
			toPage = maxPage -1;
		} else {
			toPage = 8;		
		}
		fromPage = 2;
	}
	if (maxPage - curPage < 4){
		//situatie waar we helemaal aan het einde van de sliert zitten	
		toPage = maxPage -1;
		fromPage = Math.max(maxPage-7, 2);
	}
	//men rendere de tussenliggende links
	for (k=fromPage; k <=toPage; k++){
		navText += makeLink(k);
	}
	
	if ((maxPage - curPage > 4)&(maxPage > 9)){
		navText += " ...";
	}
	if (maxPage > 1){
		navText += makeLink(maxPage);
	}
	document.getElementById("nav-footer").innerHTML = navText;
}
function makeLink(aPage){
	if (aPage == curPage){
		return " " + aPage.toString();
	} else {
		return ' <a href="javascript:pageClick(' + ((aPage-1)*9).toString() + ')" >'+ aPage.toString() + '</a>';
	}
}
function showTab(tabIndex){
	if (tabIndex != activeTab){
		if (tabIndex >= tabs.length){			
			tabIndex = tabs.length-1;
		}
		var oldIndex = activeTab;
		var tabButton = document.getElementById("tabButton");	
		var tabImage = document.getElementById("tabImage" + tabIndex);
		var newTop = tabImage.offsetTop;
		tabButton.style.top = newTop + "px"
		
		//arrange the images
		var dataTab = document.getElementById("detailData");
		activeTab = tabIndex;
		if (oldIndex > -1){
			//on \ialisation, the activeIndex == -1
			restoreImage(oldIndex);
			var oldTab = document.getElementById("tab" + tabs[oldIndex]);
			oldTab.style.display = "none";
		} else {
			//make sure the "loading" message disappears
			var dataTab = document.getElementById("detailData");
			dataTab.style.display = "none";
		}
		var img = document.getElementById("tabImage" + tabIndex);
		img.src = tabImages[tabs[tabIndex]].imgFixed.src;
		
		//show right content
		var newTab = document.getElementById("tab" + tabs[activeTab]);
		newTab.style.display = "";
		//and calculate the correct margin.
		var bottomImage = document.getElementById("tabImage" + (tabs.length-1).toString());
		newTab.style.marginBottom = "0px";
		if ((bottomImage.offsetTop - newTab.offsetHeight) > 0){
			newTab.style.marginBottom = (bottomImage.offsetTop - newTab.offsetHeight + 15).toString() + "px";
		}
		adjustFooter();
	}
}
function adjustFooter(){
	var outer=document.getElementById("outer");
	var footer = document.getElementById("footer");
	if (outer.clientHeight > 625){
		footer.style.top = (outer.clientHeight + 20).toString() + "px";
	} else {
		footer.style.top = "640px";
	}
}
function restoreImage(tabIndex){
	if((tabIndex != activeTab) && (!loadingImages)){
		var img = document.getElementById("tabImage" + tabIndex);
		if (img.src != tabImages[tabs[tabIndex]].img.src){
			img.src = tabImages[tabs[tabIndex]].img.src;
		}
	}
}
function swapImage(tabIndex){
	if((tabIndex != activeTab) && (!loadingImages)){
		var img = document.getElementById("tabImage" + tabIndex);
		if (img.src != tabImages[tabs[tabIndex]].imgHot.src){
			img.src = tabImages[tabs[tabIndex]].imgHot.src;
		}
	}
}
function makeTabs(){
	var tabsContainer = document.getElementById("tabSheet");	
	var tabsTekst = '';
	/*for (var k=0; k< tabs.length; k++){
		var tab = document.createElement("a");
		tab.href = "#tab"+k;
		var attr = document.createAttribute("onmousemove");
		attr.value = "swapImage(" + k + ")";
		tab.setAttributeNode(attr);
		attr = document.createAttribute("onmouseout");
		attr.value = "restoreImage(" + k + ")";
		tab.setAttributeNode(attr);
		var tabImg = new Image();
		tabImg.src = imgPath + "tab" + tabs[k] + ".gif";
		tabImg.alt = tabs[k];
		tabImg.id = "tabImage" + k;
		tab.appendChild(tabImg);
		tabsContainer.appendChild(tab);
		tabsContainer.appendChild(document.createElement("br"));
	} */
	for (var k=0; k< tabs.length; k++){
		tabsTekst += '<a href="javascript:tabClick('+k+')" onmousemove="swapImage(' + k + ')" onmouseout="restoreImage(' + k + ')">';
		tabsTekst += '<img src="' + imgPath + 'tab' + tabs[k] +  '.gif" height="11px" id="tabImage' + k + '" alt="'+tabs[k] + '" title=""/>';
		tabsTekst += '</a><br />';
	}
	tabsContainer.innerHTML = tabsTekst;
	
}
function init(){
	makeTabs();	
	var tabIx = -1;
	//we gaan kijken of we misschien delen van de tekst moeten highlighten, omdat er van een zoekpagina gekomen is..
	
	var params= queryString();
	if (params["q"] != null){
		var terms = decodeURIComponent(params["q"]);
		terms = terms.replace(/\'|"/g, '');
		terms = terms.split(/[\s,\+\.]+/);
		//eerst boven in beeld dingen vervangen..
		
		Hilite.hiliteElement( document.getElementById("table_top_content"), terms );
		//en vervolgens beneden; de tabs zogezegd. Van hoogste naar laagste index, de tab met laagste in
		//dex waarin een zoekterm gevonden wordt, moet getoond worden.
		for (var k=tabs.length-1; k>-1; k--){
			Hilite.hiliteElement(document.getElementById("tab" + tabs[k]), terms);
			if (Hilite.found){
				tabIx = k;
			}
		}
	}
	if (tabIx == -1){
		tabIx = 1;
	}
	//het komt voor dat er maar 1 tab bestaat. Dan juist altijd de 0e tab tonen.
	if (tabs.length == 1){
		tabIx = 0;
	}
	
	if (!checkNavigation()){
		leesplaatjes(0);
		//en dan tonen we de tab met de laagste index waar trefwoorden gevonden zijn, of anders de default tab
		showTab(tabIx);
	}
	setInterval( "checkNavigation()", 100);
}
function queryString(){
	var tparams = location.search.slice(1).split("&");
	var params=new Array();
	for (k=0; k<tparams.length; k++){
		var param = tparams[k].split("=");
		params[param[0]] = param[1];
	}
	return params;
}
function initSearchResults(){
	if (!checkNavigation()){
		leesplaatjes(0);
	}
	setInterval( "checkNavigation()", 100);
}
function btnHot(aImage){
	if (!loadingImages){
		var img = document.getElementById(aImage);
		//img.src = imgPath + aImage + "hot.gif";
		
		img.src = buttonImages[aImage].imgHot.src;
	}
}
function btnRestore(aImage){
	if (!loadingImages){
		var img = document.getElementById(aImage);
		img.src = buttonImages[aImage].img.src;
	}
}
function PopIt(aItem) {
       window.open(aItem,"AMHPop","scrollbars=yes, width=690,height=500,left="+(screen.width/2-335)+",top=100");
}
function PopSmall(aItem) {
       window.open(aItem,"AMHPop","scrollbars=yes, width=300,height=300,left="+(screen.width/2-335)+",top=200");
}
function Zoom(aFile, aLanguage){
	venster = open("", "", "scrollbar=no,width=758,height=542");
	venster.document.open();
	with (venster.document) {
		write("<html><title>Atlas of Mutual Heritage</title><body bgcolor=#102842>");
		write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="738" height="512" id="vafb2004" align="middle">');
		write('<param name="allowScriptAccess" value="sameDomain" />');
		write('<param name="movie" value="zoom/vafb2004.swf?afb=' + aFile + '&lang=' + aLanguage + '" /><param name="quality" value="high" /><param name="bgcolor" value="#102842" /><embed src="zoom/vafb2004.swf?afb=' + aFile + '&lang=' + aLanguage + '" quality="high" bgcolor="#102842" width="738" height="512" name="vafb2004" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
		write('</object>');
		write("</body></html>");
	}
}
function doSearch(){
	document.location ="results_freetext.aspx?terms=" + document.getElementById("tbQuickSearch").value + "&lang=" + lang;
}
function doQuickSearch(){
	document.location ="results_freetext.aspx?terms=" + document.getElementById("tbQuickSearch").value + "&lang=" + lang;
}
function doOnEnterQuick(){
	document.getElementById("tbQuickSearch").select();
}
function doOnKeyPressQuick(event){
	if(event.keyCode == 13){
		doQuickSearch();
	}
	
}