var lastelem = 0;
var lastlink = 0;
var initval = '';
var isInit = 1;
var links;
var forms;

var extcode = new Object();
// Code, der beim Umschalten zu einem Bereich ausgeführt wird
extcode['gb'] =
"  if (initval.length) {"+
"    gboffset = parseInt(initval);"+
"    initval = '';"+
"    gbnav(-1);"+
"  }"+
"  if (document.fgbentry && document.fgbentry.gbtext)  document.fgbentry.gbtext.focus();";


function tog (id, link) {
	// Die Anzeige zu einem bestimmten Bereich umschalten
	if (lastlink)  lastlink.className = '';
	lastlink = link;
	link.className = 'sel';
	link.blur();
	if (lastelem)  lastelem.style.display = 'none';
	var elem = document.getElementById('block_'+id);
	lastelem = elem;
	if (! elem)  return;
	elem.style.display = 'block';
	if (! initval.length)  initval = '0'; // Beim Anklicken eines Bereichslinks immer erste Seite aufrufen (z.B. im GB)
	if (extcode[id])  eval(extcode[id]);
	
	// Rückkehrlinks mitändern
	for(i=0; i<links.length; i++)
		changeLink(links[i], 1, id);
	for(i=0; i<forms.length; i++)
		changeLink(forms[i], 0, id);
}

function changeLink (elem, type, id) {
	href = type ? elem.href : elem.action;
	if (-1 == (idx = href.indexOf('rd=')))
		return;
	pfx = href.substr(0, idx);
	pfx2 = href.substr(idx);
	idx = pfx2.indexOf('&');
	if (idx >= 0) {
		sfx = pfx2.substr(idx);
		pfx2 = pfx2.substr(0, idx);
	} else sfx = '';
	pfx2 = pfx2.split('%23')[0];
	type
	  ? elem.href = pfx + pfx2 + '%23'+id + sfx
	  : elem.action = pfx + pfx2 + '%23'+id + sfx;
}

function init () {
	// Voreinstellungen. Ggf schon Bereich über Hashangabe in der URL auswählen (#id / #id_val)
	var hash = location.hash;
	if (! hash.length)
		hash = new Array('kontakt');
	else	hash = hash.substr(1, hash.length - 1).split('_');

	links = document.getElementsByTagName('a');
	forms = document.getElementsByTagName('form');

	if (hash[1])  initval = hash[1];
	if ((link = document.getElementById('link_'+hash[0])))
		tog(hash[0], link);
	isInit = 0;
}

function gbnav (dir) {
	// Gästebuch: Seitensprung
	if (dir == 0) {
		// Seite zurück (in Richtung neuere)
		if (gboffset < 1) {
			gboffset = 0;
			return;
		}
		--gboffset;
	} else if (dir == 1) {
		// Seite vor (in Richtung ältere)
		if (gboffset >= gboffsetmax) {
			gboffset = gboffsetmax;
			return;
		}
		++gboffset;
	}
	async_get('/p/async/gbdata.php?UID='+uid+'&gboffset='+(gboffset * gbepp), null, gbtablegen);
	if ((! isInit) && gbcnt >= gbepp) {
		document.getElementById('gboffset').innerHTML = '('+(1 + gboffset)+'/'+(1 + gboffsetmax)+')';
		document.getElementById('gbnav0').style.visibility = (gboffset < 1)            ? 'hidden' : 'visible';
		document.getElementById('gbnav1').style.visibility = (gboffset >= gboffsetmax) ? 'hidden' : 'visible';
		window.setTimeout("document.getElementById('gbnav0link').href = '#gb_'+"+(gboffset - 1)+';', 10);
		window.setTimeout("document.getElementById('gbnav1link').href = '#gb_'+"+(gboffset + 1)+';', 10);
		document.getElementById('gbnavtr').style.display = 'table-row';
	}
}

function gbtablegen (xml) {
	tbl = document.getElementById('gbdata');
	while(tbl.childNodes.length > 0)
		tbl.removeChild(tbl.firstChild);
	var i, td, tr, xe, lines, line, cls;
	cls = 1;
	lines = xml.responseText.split("\n");
	for(i=0; i<lines.length; i++) {
		if (!lines[i] && !lines[i+1])
			return;
		tr = document.createElement('tr');
		tr.className = 'color'+(1 + cls);
		cls ^= 1;
		td = document.createElement('td');
		td.innerHTML = lines[i++];
		td.className = 'attrn';
		tr.appendChild(td);
		td = document.createElement('td');
		td.innerHTML = lines[i];
		td.className = 'attrv';
		tr.appendChild(td);
		tbl.appendChild(tr);
	}
	lines = null;
}

function gbentry (id, token) {
	var elem = document.getElementById(id);
	if (! elem)  return true;
	async_get('/p/async/gbentry.php?UID='+uid+'&token='+token, 'gbtext='+encodeURIComponent(elem.value), gbentry2);
	return false;
}
function gbentry2 (xml) {
	var lines = xml.responseText.split("\n");
	var elem  = document.getElementById('gbtext');
	var resp  = document.getElementById('gbresponse');
	var tn    = document.createTextNode(lines[1]);
	if (parseInt(lines[0]) == 1) {
		// OK
		elem.parentNode.removeChild(document.getElementById('gbsubmit'));
		elem.parentNode.removeChild(elem);
		resp.className = '';
		gboffset = 0;
		if (++gbcnt > gbepp)
			gboffsetmax++;
		gbnav(-1); // aktualisieren
	} else {
		// Fehler
		document.getElementById('gbtext').focus();
		resp.className = 'err';
	}
	if (tn) {
		if (resp.firstChild)  resp.removeChild(resp.firstChild);
		resp.appendChild(tn);
	}
}

function gbdel_ (username) {
	return confirm('Soll der Gästebucheintrag von '+username+' wirklich gelöscht werden?');
}
function gbdel (EID, token) {
	async_get('/p/async/gbdel.php?EID='+EID+'&token='+token, null, function (xml) { if (1==parseInt(xml.responseText)) gbnav(-1); } );
	return;
}

function buddyadd_ (username) {
	return confirm('Soll '+username+' wirklich zu deiner Freundesliste hinzugefügt werden?');
}
function buddyadd (bUID, token) {
	async_get(
	  '/p/async/buddyadd.php?bUID='+bUID+'&token='+token,
	  null,
	  function (xml) {
	    if (1==parseInt(xml.responseText))
	      (-1 != location.href.indexOf('/'+myuid+'#freunde'))
	        ? location.reload()
		: location.href = myuid+'#freunde'; }
	);
	return;
}

function buddydel_ (username) {
	return confirm('Soll '+username+' wirklich von deiner Freundesliste entfernt werden?');
}
function buddydel (bUID, forcereload, token) {
	async_get(
	  '/p/async/buddydel.php?bUID='+bUID+'&token='+token,
	  null,
	  function (xml) {
	    if (1==parseInt(xml.responseText))
	      (forcereload || (-1 != location.href.indexOf('/'+myuid+'#freunde')))
	        ? location.reload()
		: location.href = myuid+'#freunde'; }
	);
	return;
}

