var displayTopbar = 1;

function switchTopbar() {
	
    if (displayTopbar == 1) {
        document.getElementById("topBar").style.display = "none";
        document.getElementById("imageNavigationButtonsTop").style.display = "block";
        displayTopbar = 0;
    } else {
        document.getElementById("imageNavigationButtonsTop").style.display = "none";
        document.getElementById("topBar").style.display = "block";
        displayTopbar = 1;
    }
    
}

var arrayIndexArray = new Array();

function buildGallery(schiffearray) {
    startSlideshow(0);
	
	var imagebar = document.getElementById("topBar");
	var arrayIndex, schiffgefunden;
	var trarray	= document.getElementById("Suchmaske").getElementsByTagName("tr");
	var perspektive = GetCheckboxValue(trarray[9]);
	var licht = GetCheckboxValue(trarray[10]);
	var ort = GetCheckboxValue(trarray[11]);
	var terminalkai = GetCheckboxValue(trarray[12]);
	var dock = GetCheckboxValue(trarray[13]);
	var kamerastandort = GetCheckboxValue(trarray[14]);
	var fotogefunden, valuetocheck;
	arrayIndexArray = new Array();

    while (imagebar.hasChildNodes()) {
	    imagebar.removeChild(imagebar.lastChild);
    }

	for (var i=0; i<imageArray.length; i++) {
		
		arrayIndex = i;
		fotogefunden = false;
		
		for (var j=0; j<schiffearray.length; j++) {
			
			if (imageArray[i][0] == schiffearray[j][0]) {
				fotogefunden = true;
				break;
			}
		
		}
		
		if (!fotogefunden) {
			continue;
		}
		
		if (schiffearray.length > 1 && (
			(perspektive != "" && perspektive.indexOf(imageArray[i][2]) == -1) ||
			(licht != "" && licht.indexOf(imageArray[i][3]) == -1) ||
			(ort != "" && ort.indexOf(imageArray[i][4]) == -1) ||
			(terminalkai != "" && terminalkai.indexOf(imageArray[i][6]) == -1) ||
			(dock != "" && dock.indexOf(imageArray[i][5]) == -1) ||
			(kamerastandort != "" && kamerastandort.indexOf(imageArray[i][7]) == -1)
			)) {
			continue;
		}

		arrayIndexArray[arrayIndexArray.length] = arrayIndex;
		
		if (arrayIndexArray.length >= 100) {
			break;
		}
	}
	
	buildGalleryPart2();
}

function buildGalleryPart2() {

	if (!arrayIndexArray.length > 0) {
		alert("Keine passenden Fotos gefunden.");
		return;
	}

	if (document.all) {
		setTimeout('addLinkElements();',50);
	} else {
		addLinkElements();
	}
	
	FadeOutElement(document.getElementById("Suchmaske"));
	document.getElementById("infoboxLarge").style.display = "none";

    imageNavigation(0);
    displayTopbar = 0;
    switchTopbar();
}

function addLinkElements() {
	var imagebar = document.getElementById("topBar");
	var linkElement, imageElement;
	var indexTemp = arrayIndexArray[0];
	
	try {
		linkElement = document.createElement("a");
		linkElement.setAttribute("href","javascript:showImage(imageArray[" + indexTemp + "])");
		
		imageElement = document.createElement("img");
		imageElement.setAttribute("src","http://www.hamburg-heide-harz.de/images/" + imageArray[indexTemp][1] + "TN.jpg");
		imageElement.setAttribute("title", "");
		
		linkElement.appendChild(imageElement);
		imagebar.appendChild(linkElement);
	} catch (e) {
		alert(indexTemp);
	}
	
	if (arrayIndexArray.length > 1)	{
		arrayIndexArray.shift();
		
		if (document.all) {
			 setTimeout('addLinkElements(arrayIndexArray);',20);
		 } else {
			 addLinkElements(arrayIndexArray);
		 }
		 
	} else {
		eval(document.getElementById("topBar").getElementsByTagName("a")[0].href.replace("javascript:", "").replace(";", ""));
	}
	
}

function showImage(arrayElement) {
	document.getElementById("infoboxLarge").style.display = "none";
	
	for (var i = 0; i < schiffearray.length; i++) {
		
		if (schiffearray[i][0] == arrayElement[0]) {
			var schiffearrayElement = schiffearray[i];
			break;
		}
	}
	
	aktuellerschiffsname = schiffearrayElement[0];
	var iframeFullsizeImage = document.getElementById("fullsizeImage");
    iframeFullsizeImage.setAttribute("src","image.html?imagename=" + arrayElement[1]);
    var infoboxText = "";
    
    switch (schiffearrayElement[2]) {
	    case "[S]":
	    	infoboxText += "Segelschiff ";
	    	break;
	    case "[K]":
	    	infoboxText += "Kreuzfahrtschiff ";
	    	break;
	    case "[C]":
	    	infoboxText += "Containerschiff ";
	    	break;
	    case "[F]":
	    	infoboxText += "Frachtschiff ";
	    	break;
	    case "[T]":
	    	infoboxText += "Tankschiff ";
	    	break;
	    case "[Fkt]":
	    	infoboxText += "Funktionsschiff ";
	    	break;
	    case "[M]":
	    	infoboxText += "Marineschiff ";
	    	break;
	    case "[J]":
	    	infoboxText += "Jacht ";
	    	break;
	    case "[H]":
	    	infoboxText += "Historisches Schiff ";
	    	break;
	    default:
	    	break;
    }
    
    infoboxText += schiffearrayElement[1];
    infoboxText += " am " + arrayElement[1].slice(6,8) + "." + arrayElement[1].slice(4,6) + "." + arrayElement[1].slice(0,4);
    infoboxText += " *** ";
    infoboxText += "Kamerastandort: ";
    
    switch (arrayElement[7]) {
	    case "[L]":
	    	infoboxText += "Landungsbrücken ";
	    	break;
	    case "[H]":
	    	infoboxText += "Hafenfähre oder Anleger ";
	    	break;
	    case "[B]":
	    	infoboxText += "Bubendey-Ufer ";
	    	break;
	    case "[A]":
	    	infoboxText += "Atlantic-Haus ";
	    	break;
	    default:
	    	break;
    }
	
    infoboxText += " *** Mehr Infos/alle Fotos zum Schiff: siehe Buttons linke Seite.";
	var infoboxElement = document.getElementById("infobox");
	
    while (infoboxElement.hasChildNodes()) {
	    infoboxElement.removeChild(infoboxElement.lastChild);
    }
    
	infoboxElement.appendChild(document.createTextNode(infoboxText));
}

function imageNavigation(direction) {
	var imagebar = document.getElementById("topBar");
	var currentImage = document.getElementById("fullsizeImage").getAttribute("src").split("=")[1];
	var newHref, newArrayIndex, nextChildNodeIndex;
	
	for (var i=0; i<imagebar.childNodes.length; i++) {
		
		if (imagebar.childNodes[i].childNodes[0].getAttribute("src").indexOf(currentImage) != -1 || i == (imagebar.childNodes.length - 1)) {
			
			if (imagebar.childNodes[i].childNodes[0].getAttribute("src").indexOf(currentImage) == -1 && i == (imagebar.childNodes.length - 1)) {
				i++;
			}
			
			if ((i + direction) < 0) {
				nextChildNodeIndex = imagebar.childNodes.length - 1;
			} else if ((i + direction) >= imagebar.childNodes.length) {
				nextChildNodeIndex = 0;
			} else {
				nextChildNodeIndex = (i + direction);
			}
			
			newHref = imagebar.childNodes[nextChildNodeIndex].getAttribute("href");
			newArrayIndex = newHref.split("[")[1].split("]")[0];
			showImage(imageArray[newArrayIndex]);
			break;
			return;
		}
	}
}

var timeoutSlideshow = 0;

function startSlideshow(action) {
    var slideshowButtonObject = document.getElementById("slideshowButton");
    var delay = slideshowButtonObject.getElementsByTagName("input")[0].value * 1000;
    
    if (action == 0) {
        clearTimeout(timeoutSlideshow);
        slideshowButtonObject.getElementsByTagName("a")[0].style.display = "block";
        slideshowButtonObject.getElementsByTagName("a")[1].style.display = "none";
        displayTopbar = 0;
        switchTopbar();
    } else {
		if (action == 1) imageNavigation(1);
        timeoutSlideshow = setTimeout('imageNavigation(1);startSlideshow();',delay);
        slideshowButtonObject.getElementsByTagName("a")[0].style.display = "none";
        slideshowButtonObject.getElementsByTagName("a")[1].style.display = "block";
        displayTopbar = 1;
        switchTopbar();
    }
    
}

function showRandomImage() {
	FadeOutElement(document.getElementById("Suchmaske"));
	document.getElementById("infoboxLarge").style.display = "none";
	document.getElementById("topBar").style.display = "none";
	displayTopbar = 0;
	var randomArrayIndex = parseInt(Math.random() * imageArray.length, 10);
	showImage(imageArray[randomArrayIndex]);
}

/* neu */

var element, timeoutFadeOut = 0;
var opacity = 100;

function FadeOutElement(elementtemp) {
	element = elementtemp;
	
	if (document.all) {
		element.style.filter = "alpha(opacity=" + opacity + ")";
		element.getElementsByTagName("select")[0].style.display = "none";
		element.getElementsByTagName("select")[1].style.display = "none";
		opacity -= 5;
	} else {
		element.style.opacity = opacity / 100;
		opacity -= 3;
	}
	
	if (opacity <= 0) {
		element.style.display = "none";
		return;
	}
	
	timeoutFadeOut = setTimeout("FadeOutElement(element)", 5);
}

function showConsole() {
	
	clearTimeout(timeoutFadeOut);
	opacity = 100;
	
	if (document.all) {
		element.style.filter = "alpha(opacity=" + opacity + ")";
		element.getElementsByTagName("select")[0].style.display = "inline";
		element.getElementsByTagName("select")[1].style.display = "inline";
	} else {
		element.style.opacity = opacity / 100;
	}
	
	//document.getElementsByTagName('form')[0].reset();
	element.style.display = "block";
}

function GetReferenceData() {
	var reedereienarray = GetReferenceArray("reedereien");
	schiffearray = GetReferenceArray("schiffe");
	
	FillSelectBox(0, schiffearray);
	FillSelectBox(1, reedereienarray);
}

function GetReferenceArray(elementid) {
	var paragrapharray = document.getElementById(elementid).getElementsByTagName("p");
	var contentarray = new Array();
	
	for (var i = 0; i < paragrapharray.length; i++) {
		contentarray[contentarray.length] = paragrapharray[i].firstChild.nodeValue.split("*");
	}
	
	return contentarray;
}

function FillSelectBox(selectboxindex, contentarray, contentarrayelementindex) {
	var selectbox = document.getElementById("Suchmaske").getElementsByTagName("select")[selectboxindex];
	var optionelement;
	
	for (var i = 0; i < contentarray.length; i++) {
		optionelement = document.createElement("option");
		optionelement.setAttribute("value", contentarray[i][0]);
		optionelement.appendChild(document.createTextNode(contentarray[i][1]));
		selectbox.appendChild(optionelement);
	}
	
}

function StartSuche() {
	var schiffearray = GetReferenceArray("schiffe");
	var trarray	= document.getElementById("Suchmaske").getElementsByTagName("tr");
	var schiffsname = GetSelectedValue(trarray[0]);
	var imonummer = parseInt("0" + trarray[1].getElementsByTagName("input")[0].value, 10);
	var schiffstyp = GetCheckboxValue(trarray[3]);
	var baujahr = GetCheckboxValue(trarray[4]);
	var laenge = GetCheckboxValue(trarray[5]);
	var container = GetCheckboxValue(trarray[6]);
	var reederei = GetSelectedValue(trarray[7]);
	var schiffgefunden, valuetocheck;
	
	for (var i = 0; i < schiffearray.length; i++) {

		schiffgefunden = true;
		
		if (schiffsname != "-") {
			
			if (schiffsname != schiffearray[i][0]) {
				schiffearray.splice(i, 1);
				i--;
			}
			
			continue;
		}
		
		if (imonummer != "0") {
			
			if (imonummer != schiffearray[i][11]) {
				schiffearray.splice(i, 1);
				i--;
			}
			
			continue;
		}
		
		if (schiffgefunden && schiffstyp != "" && schiffstyp.indexOf(schiffearray[i][2]) == -1) {
			schiffgefunden = false;
		}
		
		if (schiffgefunden && baujahr != "") {
			
			valuetocheck = parseInt(schiffearray[i][4], 10);
			
			if (!(baujahr.indexOf("[1]") != -1 && valuetocheck <= 1979) &&
				!(baujahr.indexOf("[2]") != -1 && valuetocheck >= 1980 && valuetocheck <= 1989) &&
				!(baujahr.indexOf("[3]") != -1 && valuetocheck >= 1990 && valuetocheck <= 1999) &&
				!(baujahr.indexOf("[4]") != -1 && valuetocheck >= 2000)) {
				schiffgefunden = false;
			}
			
		}
		
		if (schiffgefunden && laenge != "") {
			
			valuetocheck = parseInt(schiffearray[i][5], 10);
			
			if (!(laenge.indexOf("[1]") != -1 && valuetocheck < 100) &&
				!(laenge.indexOf("[2]") != -1 && valuetocheck >= 100 && valuetocheck < 150) &&
				!(laenge.indexOf("[3]") != -1 && valuetocheck >= 150 && valuetocheck < 200) &&
				!(laenge.indexOf("[4]") != -1 && valuetocheck >= 200 && valuetocheck < 300) &&
				!(laenge.indexOf("[5]") != -1 && valuetocheck >= 300)) {
				schiffgefunden = false;
			}
			
		}
		
		if (schiffgefunden && container != "") {
			
			valuetocheck = parseInt(schiffearray[i][8], 10);
			
			if (!(container.indexOf("[1]") != -1 && valuetocheck < 500) &&
				!(container.indexOf("[2]") != -1 && valuetocheck >= 500 && valuetocheck < 2000) &&
				!(container.indexOf("[3]") != -1 && valuetocheck >= 2000 && valuetocheck < 5000) &&
				!(container.indexOf("[4]") != -1 && valuetocheck >= 5000)) {
				schiffgefunden = false;
			}
			
		}
		
		if (schiffgefunden && reederei != "-") {
			
			if (reederei != schiffearray[i][3]) {
				schiffgefunden = false;
			}
			
		}
		
		if (!schiffgefunden) {
			schiffearray.splice(i, 1);
			i--;
		}
	
	}
	
	if (schiffearray.length > 0) {
		buildGallery(schiffearray);
	} else {
		alert("Keine passenden Fotos gefunden.");
	}
	
}

function ResetSuche() {
	
	with (document.getElementsByTagName("form")[0]) {
		reset();
		
		for (var i=1; i<getElementsByTagName("input").length; i++) {
			changeFormelementStatus(getElementsByTagName("input")[i]);
		}
	}
	
	
}

function changeFormelementStatus(clickedElement) {
	
	with (clickedElement.nextSibling.style) {
		
		if (clickedElement.checked) {
			color = "#33ff33";
		} else {
			color = "#ffffff";
		}
		
	}
	
}

function showSuchbeispiel(beispielArray) {
	ResetSuche();
	
	with (document.getElementsByTagName("form")[0]) {
		
		for (var i=0; i<beispielArray.length; i++) {
			getElementsByTagName("input")[beispielArray[i]].click();
		}
		
	}
	
}

function showAllImagesOfCurrentShip() {
	var schiffearray = GetReferenceArray("schiffe");
	var singleelementarray = new Array(1);
	
	for (var i = 0; i < schiffearray.length; i++) {
		
		if (aktuellerschiffsname == schiffearray[i][0]) {
			singleelementarray[0] = schiffearray[i];
			buildGallery(singleelementarray);
			break;
		}
		
	}
	
}

function showAllImagesOfCurrentDay() {
    startSlideshow(0);
	var imagebar = document.getElementById("topBar");

    while (imagebar.hasChildNodes()) {
	    imagebar.removeChild(imagebar.lastChild);
    }

	var currentDay = document.getElementById("fullsizeImage").src.split("=")[1].slice(0, 8);
	arrayIndexArray = new Array();
	
	for (var i=0; i<imageArray.length; i++) {
		
		if (imageArray[i][1].slice(0, 8) == currentDay) {
			fotogefunden = true;
			arrayIndexArray[arrayIndexArray.length] = i;
		}
		
	}
	
	buildGalleryPart2();
}

function showInfosForCurrentShip() {
	var infoboxLargeElement = document.getElementById("infoboxLarge");
	var infoboxLargeElementTd = infoboxLargeElement.getElementsByTagName("td");
	
	if (infoboxLargeElement.style.display == "block") {
		infoboxLargeElement.style.display = "none";
		return;
	}
	
	var schiffearray = GetReferenceArray("schiffe");
	var reedereienarray = GetReferenceArray("reedereien");
	var singleshipelement, htmlelementtemp, infoboxText;
	var singlecompanyelement = reedereienarray[0];
	
	for (var i = 0; i < schiffearray.length; i++) {
		
		if (aktuellerschiffsname == schiffearray[i][0]) {
			singleshipelement = schiffearray[i];
			break;
		}
		
	}
	
	for (var i = 0; i < reedereienarray.length; i++) {
		
		if (singleshipelement[3] == reedereienarray[i][0]) {
			singlecompanyelement = reedereienarray[i];
			break;
		}
		
	}
	
	infoboxText = "";
	
    switch (singleshipelement[2]) {
	    case "[S]":
	    	infoboxText += "Segelschiff ";
	    	break;
	    case "[K]":
	    	infoboxText += "Kreuzfahrtschiff ";
	    	break;
	    case "[C]":
	    	infoboxText += "Containerschiff ";
	    	break;
	    case "[F]":
	    	infoboxText += "Frachtschiff ";
	    	break;
	    case "[T]":
	    	infoboxText += "Tankschiff ";
	    	break;
	    case "[Fkt]":
	    	infoboxText += "Funktionsschiff ";
	    	break;
	    case "[M]":
	    	infoboxText += "Marineschiff ";
	    	break;
	    case "[J]":
	    	infoboxText += "Jacht ";
	    	break;
	    case "[H]":
	    	infoboxText += "Historisches Schiff ";
	    	break;
	    default:
	    	break;
    }
	
    infoboxText += singleshipelement[1];
    addTextToElement(infoboxText, infoboxLargeElement.getElementsByTagName("h2")[0]);
    addTextToElement(singleshipelement[11], infoboxLargeElementTd[1]);
    addTextToElement(singleshipelement[4], infoboxLargeElementTd[3]);
    addTextToElement(singleshipelement[5], infoboxLargeElementTd[5]);
    addTextToElement(singleshipelement[6], infoboxLargeElementTd[7]);
    addTextToElement(singleshipelement[7], infoboxLargeElementTd[9]);
	addTextToElement(singleshipelement[8], infoboxLargeElementTd[11]);
	addTextToElement(singleshipelement[9], infoboxLargeElementTd[13]);
	addTextToElement(singleshipelement[10], infoboxLargeElementTd[15]);
	addTextToElement(singlecompanyelement[1], infoboxLargeElementTd[17]);
	addTextToElement(singlecompanyelement[2], infoboxLargeElementTd[19]);
	addTextToElement(singlecompanyelement[3], infoboxLargeElementTd[21]);
	
	infoboxLargeElement.style.display = "block";
}

function addTextToElement(text, htmlelement) {
	
    while (htmlelement.hasChildNodes()) {
	    htmlelement.removeChild(htmlelement.lastChild);
    }
    
	if (text == "-") {
		return;
	}
	
    if (text.indexOf("http://") != -1) {
	    var linkelement = document.createElement("a");
	    linkelement.setAttribute("href", text);
	    linkelement.appendChild(document.createTextNode(text));
	    htmlelement.appendChild(linkelement);
	    return;
    }
    
    htmlelement.appendChild(document.createTextNode(text));

}

function GetSelectedValue(trelement) {
	var selectelement = trelement.getElementsByTagName("select")[0];
	var returnvalue = selectelement[selectelement.selectedIndex].value;
	return returnvalue;
}

function GetCheckboxValue(trelement) {
	var checkboxarray = trelement.getElementsByTagName("input");
	var checkboxstring = "";
	
	for (var i = 0; i < checkboxarray.length; i++) {
		
		if (checkboxarray[i].checked) {
			checkboxstring += checkboxarray[i].value;
		}
		
	}
	
	return checkboxstring;
}
