

var requester
var busy
var autoOnOff = false
var autoTimer

function rotate() {
	var val = document.getElementById('status').innerHTML
	var newVal = '-'
	switch (val) {
		case 'GO':
		newVal='-'; break;
		case '-':
		newVal='\\'; break;
		case '\\':
		newVal='|'; break;
		case '|':
		newVal='/'; break;
	}
	document.getElementById('status').innerHTML=newVal
	busy=window.setTimeout("rotate()",30)
}

function stopRotate() {
	window.clearTimeout(busy)
	document.getElementById('status').innerHTML="<br>"
	//document.getElementById('status').disabled=false
}

function clearPreviousResult() {
	document.getElementById('result').innerHTML = ""
}


function send(value) {
	if (value==null || value.length==0) {
		clearTagResult()
		return
	}
	clearPreviousResult()
	stopRotate()
	rotate()
	if (requester && (requester.readyState==2 || requester.readyState==3)) {
		requester.abort();
	}
	try {
		requester = new XMLHttpRequest();
	} catch (error) {
		try {
			requester = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (error) {
			error()
			return false;
		}
	}
	requester.onreadystatechange = stateHandler;
	requester.open("GET", "/cgi-bin/photo/search.cgi?value="+value);
	requester.send(null);
}



function stateHandler() {
	if (requester.readyState == 4) {
		if (requester.status == 200) {
			// Erfolg! Hurra!
			if (requester.status == 200) {
				handleXML(requester.responseXML)
			} else {
				// Problem beim Laden
				error();
			}
		} else {
			// Problem beim Laden
			error();
		}
	}
	return true;
}

function handleXML(xml) {
	var noTagsFound = true
	var noSearchResult = true
	// clear:
	clearTagResult()
	clearSearchResult()
	// tag results:
	var tresult = new Array()
	tresult = xml.getElementsByTagName("tag")
	tagResult("<ul>")
	for (var i=0; i<tresult.length; i++) {
		noTagsFound = false
		var value = tresult[i].childNodes[0].nodeValue
		//value = encodeURIComponent(value)
		tagResult("<li><a href='/tags/"+value+"'>"+value+"</a></li>")
	}
	tagResult("</ul>")
	// now look through the search-results:
	var sresult = new Array()
	sresult = xml.getElementsByTagName("search")
	searchResult("<ul>")
	for (var j=0; j<sresult.length; j++) {
		if (!sresult[j])
			break
		if (!sresult[j].childNodes[0])
			break
		noSearchResult=false
		var value = sresult[j].childNodes[0].nodeValue
		//value = encodeURIComponent(value)
		searchResult("<li><a href='/search/"+value+"'>"+value+"</a></li>")
	}
	searchResult("</ul>")
	stopRotate()
	if (noSearchResult)
		searchNotFound()
	if (noTagsFound)
		tagNotFound()
}

function error() {
	stopRotate()
	clearTagResult()
	tagResult("ERROR")
}

function tagNotFound() {
	clearTagResult()
	tagResult("not found")
}

function searchNotFound() {
	clearSearchResult()
	searchResult("not found")
}

function tagResult(txt) {
	document.getElementById('tagresult').innerHTML += txt
}
function clearTagResult() {
	document.getElementById('tagresult').innerHTML = ""
}

function searchResult(txt) {
	document.getElementById('searchresult').innerHTML += txt
}
function clearSearchResult() {
	document.getElementById('searchresult').innerHTML = ""
}

/************ submitChange ********/

function submitChange() {
alert(1)
}

/************ auto ****************/

function auto() {
	//alert(autoOnOff)
	if (!autoOnOff) {
		autoOnOff = true
		autoStopTimer()
		if (document.getElementById("sec")) {
			var seconds = document.getElementById("sec").value
			autoSetTimer(seconds)
		}
	} else {
		autoOnOff = false
		if (autoTimer)
			window.clearTimeout(autoTimer)
	}
}

function autoCheck() {
	var para = document.location.search
	if (para) {
		//alert(para)
		para = para.substring(1,para.length)
		var args = para.split("=")
		//alert(document.getElementById("type"))
		//alert(args[0])
		if (args[0]=="random")
			document.getElementById("type").selectedIndex=0
		else
			if (args[0]=="next")
				document.getElementById("type").selectedIndex=1
			else
				return
		document.getElementById("sec").value=args[1]
		document.getElementById("auto").checked=true
		auto()
	}
}

function autoSetTimer(seconds) {
	var type = document.getElementById("type").value
	autoTimer = window.setTimeout("autoExecute('"+type+"', "+seconds+")", (seconds*1000))
}

function autoSelect() {
	autoStopTimer()
	document.getElementById("auto").checked=false
	autoOnOff=false
}

function autoStopTimer() {
	if (autoTimer)
		window.clearTimeout(autoTimer)
}

function autoExecute(autoType, sec) {
	//alert(autoType)
	var a
	if (autoType=="next")
		a = document.getElementsByName("anext")[0]
	if (autoType=="random")
		a = document.getElementById("arand")
	if (a && a.href) {
		var link = a.href.split("#")
		window.location.href = link[0] + "?" + autoType + "=" + sec + "#" + link[1]
	}
	else {
		alert("Konnte kein entsprechendes Bild finden.")
		autoSelect()
	}
}

/************* TV *****************/
var channel = "off"
function press (btn) {
if (channel == "off")
return
if (channel == "on")
channel = 0;
switch (btn) {
case '+': channel += 1; break;
case '-': channel -= 1; break;
case 1:   channel = 1;  break;
case 2:   channel = 2;  break;
case 3:   channel = 3;  break;
case 4:   channel = 4;  break;
case 5:   channel = 5;  break;
case 6:   channel = 6;  break;
case 7:   channel = 7;  break;
case 8:   channel = 8;  break;
case 9:   channel = 9;  break;
}
if (channel<1)
channel=17
if (channel>17)
channel=1
changeChannel(channel)
}

function power() {
if (channel != "off")
changeChannel("off")
else
changeChannel("on")
}

function changeChannel(to) {
channel = to
if (to<10)
to = "0" + to
var newImg = "/pic/China/Fruehjahr%202003/1%20Shenyang/Hotel/Fernseher/640/channel_" + to + ".jpg"	
var newDig = "/chinatv/digi_" + to + ".gif"
document.getElementById("channel").src = newImg
document.getElementById("digi").src = newDig
}


/***** Details of a thumbnail **********/

var detailsShow;

function getThumbnailDetails(value, id) {
	if (value==null || value.length==0) {
		return
	}
	if (requester && (requester.readyState==2 || requester.readyState==3)) {
		requester.abort();
	}
	try {
		requester = new XMLHttpRequest();
	} catch (error) {
		try {
			requester = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (error) {
			return false;
		}
	}
	detailsId = id
	requester.onreadystatechange = handleDetails
	requester.open("GET", "/cgi-bin/photo/details.cgi?value="+value);
	requester.send(null);
}



function handleDetails(x) {
	if (requester.readyState == 4) {
		if (requester.status == 200) {
			detailsShow = window.setTimeout("displayDetails(requester.responseXML)", 500);
		} else {
			//alert("Error retrieving details")
		}
	}
	return true;
}
var showDetails = false;
var detailsTimer
var detailsImageId
var detailsId
function closeDetails() {
	window.clearTimeout(detailsTimer);
	window.clearTimeout(detailsShow);
	showDetails = false;
	detailsTimer = window.setTimeout("displayDetails()", 100);
}

function closeDetailsNow() {
	showDetails = false;
	window.clearTimeout(detailsTimer);
	window.clearTimeout(detailsShow);
	var details = document.getElementById("thumbnailDetails");
	if (!details) return false
	details.style.display="none";
}

function displayDetails(obj) {
	window.clearTimeout(detailsTimer);
	window.clearTimeout(detailsShow);
	var details = document.getElementById("thumbnailDetails");
	if (!details) return false
	if (details.style.display=="block" && !showDetails) {
		details.style.display="none";
		return
	}
	if (obj == null)
		return;
	showDetails = true;
	var ret = "";
	ret += "<table width='100%'><tr>";
	ret += "<td>";
	ret += "<div class='detailsHeader'><img onClick='closeDetailsNow()' class='closeDetails' src='/icons/close.gif'>"+getValue(obj, "name")+"</div>";
	ret += "<div class='detailsDesc'>";
	ret += getValue(obj, "description").replace(/\n/, "<br/>");
	ret += "<br><a href='"+getValue(obj, "link")+"'>view larger image</a>";
	ret += "</div>";
	ret += "<div class='detailsViews'>Views: ";
	ret += getValue(obj, "views");
	ret += "</div>";
	ret += "<div class='detailsLink'>Folder: ";
	ret += "<a href='/album"+getValue(obj, "folder")+"'>"+getValue(obj, "folder")+"</a>";
	ret += "</div>";
	ret += "<div class='detailsTags'>Tags: ";
	// tag results:
	var result = new Array()
	result = obj.getElementsByTagName("tag")
	for (var i=0; i<result.length; i++) {
		if (result[i].childNodes[0]) {
			var value = result[i].childNodes[0].nodeValue
			var number = result[i].childNodes[1].childNodes[0].nodeValue
			ret += "<a title='TagName (# of images)' href='/tags/"+value+"'>"+value+" ("+number+")</a> ";
		}
	}
	ret += "<a class='small' href='/cgi-bin/photo/protected/manage.cgi?mode=manage&album="+getValue(obj, "folder")+"#"+getValue(obj, "name")+"'>...</a>";
	ret += "</div></td></tr></table>";

	if (detailsId == null || detailsId.length == 0)
		detailsId = "randomContainer"
	var img = document.getElementById(detailsId)
	if (!img) return false;

	var x=0; var y=0;
	do {
		x += img.offsetLeft;
		y += img.offsetTop;
	} while (img = img.offsetParent);
	x -= 310
	y += 100
	if (x < 0)
		x = 50;
	//alert(x + ", " + y)
	details.style.left=x+"px";
	details.style.top=y+"px";
	details.innerHTML = ret;
	details.style.display="block";
}

/***** Google Map *************/

function getValue(obj, val) {
	var ret = "";
	var cn = obj.getElementsByTagName(val)[0].childNodes[0];
	if (cn != null)
		ret = cn.nodeValue;
	return ret;
}

function getName(obj) {
	return getValue(obj, "name");
}

function getContent(obj) {
	var ret = "";
	ret += "<table width='100%'><tr>";
	ret += "<td><img src='"+getValue(obj, "icon")+"'></td>";
	ret += "<td>";
	ret += "<div class='markerHeader'>"+getValue(obj, "name")+"</div>";
	ret += "<div class='markerDesc'>";
	ret += getValue(obj, "description").replace(/\n/, "<br/>");
	ret += "</div>";
	ret += "<div class='markerLink'>Link: ";
	ret += "<a href='/album"+getValue(obj, "path")+"'>"+getValue(obj, "path")+"</a>";
	ret += "</div>";
	ret += "<div class='markerPics'>Bilder: ";
	ret += getValue(obj, "pics");
	ret += "</div>";
	ret += "<div class='markerViews'>Views: ";
	ret += getValue(obj, "views");
	ret += "</div>";
	ret += "</td></tr></table>";
	return ret;
}

function getMarkerContent(m, path) {
	m.openInfoWindowHtml("<div class='markerLoading'>Loading...<br><img src='/searching.gif'></div>");
	var request = GXmlHttp.create();
	request.open("GET", "/cgi-bin/photo/map.cgi?value="+path, true);
	request.onreadystatechange = function() {
	if (request.readyState == 4) {
		var xml = request.responseXML;
		var tabs = new Array();
		var tab = new GInfoWindowTab(getName(xml), getContent(xml))
		tabs[tabs.length] = tab;
		var folders = xml.getElementsByTagName("folder");
		for (var i=0; i<folders.length; i++) {
			var tab = new GInfoWindowTab(getName(folders[i]), getContent(folders[i]))
			tabs[tabs.length] = tab;
		}
		m.openInfoWindowTabsHtml(tabs);
	}
	}
	request.send(null);
}

/***** layer - sitemap **************/

var tree;
var outside = false;

function treeInit() {
	outside = false;
	tree = new YAHOO.widget.TreeView("yuiTree");
	tree.setDynamicLoad(loadDataForNode);

	var root = tree.getRoot();

	var myobj = { label: "fuehring.org", id:"/" } ;
	var tmpNode = new YAHOO.widget.TextNode(myobj, root, false);

	tree.draw();
}

function loadDataForNode(node, onCompleteCallback) {
	outside = false;
	var loc = node.data.id
	globalNode = node
	globalCallBackFunction = onCompleteCallback
	sendTree(loc);
}


function showSitemap(obj) {
	var sm = document.getElementById("yuiTree");
	if (!sm) return false
	if (sm.style.display=="block") {
		sm.style.display="none";
		return
	}

	outside = false;

	if (!obj) return false;

	if(!tree)
		treeInit()

	var x=0; var y=0;
	do {
		x += obj.offsetLeft;
		y += obj.offsetTop;
	} while (obj = obj.offsetParent);
	sm.style.left=x+"px";
	sm.style.top=(y+20)+"px";
	sm.style.display="block";
}

function closeSitemap() {
	if (outside)
		showSitemap()
}

document.onclick = function() {
	if (outside)
		window.setTimeout("closeSitemap()", 100)
}
