//<!--WebCoderAutoDate--><!-- Mortal / 20080529 181656 --><!--/WebCoderAutoDate-->
tmg.errhandleregister();
login_cbs = [];

guestbox_w = false;
userbox_w = false;

function resizetopmenu(user) { // If user, resize user, else resize guest
	var fromid = user ? 'topmenuguest' : 'topmenuuser';
	var toid = user ? 'topmenuuser' : 'topmenuguest';
	var fromclass = user ? 'guest' : 'user';
	var toclass = user ? 'user' : 'guest';
	var fromele = document.getElementById(fromid);
	var toele = document.getElementById(toid);
	if (!fromele || !toele) {
		alert('resizetopmenu: Kunne ikke finde de to topmenuer!');
		return;
	}
	fromele.className = 'topmenu'+fromclass;//+' topmenu'+fromclass+'_hidden';
	toele.className = 'topmenu'+toclass;
	toele.style.width = '';
	var fromw = fromele.clientWidth-(user ? 0 : 10);
	var tow = toele.clientWidth-(user ? 10 : 0);
	if (!fromw || !tow) {
		alert('resizetopmenu: De to bredder er ugyldige!');
		return;
	}
	if (fromw === tow) {
		//alert('resizetopmenu: De to bredder er ens');
		return;
	}
	fromele.className = 'topmenu'+fromclass;//+' topmenu'+fromclass+'_hidden';
	toele.className = 'topmenu'+toclass;
	fromele.style.width = fromw+'px';
	toele.style.width = fromw+'px';
	fromele.style.zIndex = 1;
	toele.style.zIndex = 2;
	Animation(fromele).to('width', tow+'px').from('width', fromw+'px').blind().ease(Animation.ease.both).checkpoint().to('opacity', 0).go();
	Animation(toele).to('width', tow+'px').from('width', fromw+'px').to('opacity', 1).from('opacity', 0).blind().ease(Animation.ease.both).go();
	//startresizing(fromw, tow, toele);
}

login_wait_img = null;
function login(ele) {
	if (typeof ele !== 'object') {
		return true;
	}
	var user = ele.username;
	var pass = ele.password;
	if (!user || !pass) {
		//alert('login() blev kaldt med ugyldig form!');
		return true;
	}
	user = user.value.replace(/^\s+|\s+$/g, '');
	pass = pass.value;
	if (user === '' || pass === '') {
		return true; // Show the old form
	}
	var postdata = 'username='+escape(user)+'&password='+escape(pass);
	// if xhrpost returns false, return true, otherwise false
	//return !tmg.xhrpost('login.php?xhr=1', login_cb, postdata);
	return !tmg.xhrpostj('login.php?json=1', login_cbjson, postdata);
}

function login_cb(xhr) {
	if (!xhr || !xhr.responseXML) {
		var lform = document.getElementById('loginform');
		if (lform) lform.submit();
		return;
	}
	var root = xhr.responseXML;
	if (root.documentElement) root = root.documentElement;
	if (root.tagName.toLowerCase() === 'success') {
		var indata = [];
		indata['userid'] = null;
		indata['username'] = null;
		indata['realname'] = null;
		indata['admin'] = 0; // assume 0 if nothing comes in
		indata['other'] = [];
		for (var i = 0; i < root.childNodes.length; i++) {
			var curele = root.childNodes[i];
			if (curele.nodeType !== 1) continue;
			var curtag = curele.tagName.toLowerCase();
			if (curtag === 'id' && !indata['userid']) {
				indata['userid'] = parseInt(unescape(tmg.trim(tmg.textContent(curele))));
			} else if (curtag === 'username' && !indata['username']) {
				indata['username'] = unescape(tmg.trim(tmg.textContent(curele)));
			} else if (curtag === 'realname' && !indata['realname']) {
				indata['realname'] = unescape(tmg.trim(tmg.textContent(curele)));
			} else if (curtag === 'admin' && !indata['admin']) {
				indata['admin'] = parseInt(unescape(tmg.trim(tmg.textContent(curele))));
			} else {
				indata['other'][indata['other'].length] = [curtag, unescape(tmg.textContent(curtag))];
			}
		}
		return login_cbdata(indata);
	}
	var resp = tmg.textContent(root);
	login_cberror(resp);
}

function login_cbjson(xhr) {
	var data = tmg.xhrjson(xhr);
	if (!data) return;
	if (data.error) {
		return login_cberror(data.error);
	} else {
		return login_cbdata(data);
	}
	return false;
}

function login_cbdata(indata) {
	if (indata['userid']) userid = indata['userid'];
	if (indata['username']) username = indata['username'];
	if (indata['realname']) realname = indata['realname'];
	if (indata['admin']) admin = indata['admin'];
	if (indata['other'] && indata.other.length) {
		if ((typeof login_otherdata) === 'undefined') login_otherdata = [];
		var ourid = login_otherdata.length;
		login_otherdata[ourid] = [];
		for (var i = 0; i < indata['other'].length; i++) login_otherdata[ourid][login_otherdata[ourid].length] = indata['other'][i];
	}
	onloggedin();
	return;
}

function login_cberror(s) {
	alert(s);
	return false;
}

function add_login_cb(func) {
	if ((typeof login_cbs) === 'undefined') login_cbs = [];
	var id = login_cbs.length;
	login_cbs[id] = func;
	return id;
}

function remove_login_cb(id) {
	if ((typeof login_cbs) === 'undefined') return;
	login_cbs[id] = null;
}

function onloggedin() {
	setrealname(realname);
	var adminele = document.getElementById('admin');
	if (adminele) {
		adminele.className = admin ? '' : 'admin_hidden';
	}
	resizetopmenu(true);
	if ((typeof login_cbs) !== 'undefined') {
		for (var i = 0; i < login_cbs.length; i++) {
			if (login_cbs[i]) login_cbs[i]();
		}
	}
}

logout_wait_img = null;
function logout(ele) {
	tmg.xhrget('logout.php?xhr=1', logout_cb);
	return false;
}

function logout_cb(xhr) {
	if (logout_wait_img) logout_wait_img.parentNode.removeChild(logout_wait_img);
	logout_wait_img = null;
	if (!xhr || !xhr.responseXML) {
		//alert('logout_cb: Fik ikke ordentligt svar fra serveren.');
		var lform = document.getElementById('logoutform');
		if (lform) lform.submit();
		return;
	}
	var root = xhr.responseXML;
	if (root.documentElement) root = root.documentElement;
	if (root.tagName.toLowerCase() === 'success') {
		loggedin = false;
		username = false;
		userid = false;
		realname = false;
		admin = false;
		loggedout();
	} else {
		var lform = document.getElementById('logoutform');
		if (lform) lform.submit();
		return;
	}
}

function add_logout_cb(func) {
	if ((typeof logout_cbs) === 'undefined') logout_cbs = [];
	var id = logout_cbs.length;
	logout_cbs[id] = func;
	return id;
}

function remove_logout_cb(id) {
	if ((typeof logout_cbs) === 'undefined') return;
	logout_cbs[id] = null;
}

function loggedout() {
	resizetopmenu(false);
	if ((typeof logout_cbs) !== 'undefined') {
		for (var i = 0; i < logout_cbs.length; i++) {
			if (logout_cbs[i]) logout_cbs[i]();
		}
	}
}

updatingmenu = false;
function updatemenu() {
	if (!admin) return;
	var cleared = false;
	if (arguments.length > 0) cleared = arguments[0] ? true : false;
	if (updatingmenu) {
		if (!confirm('Vi er allerede i gang med at bede serveren om at opdatere menuen. Forts\xE6t?')) return;
	}
	updatingmenu = true;
	tmg.xhrpost('admin-updatemenu.php', updatemenu_cb, 'cleared='+(cleared ? '1' : '0'));
}

function updatemenu_cb(xhr) {
	updatingmenu = false;
	redrawmenu();
	menuregister();
}
function redrawmenu() {
	if (!document.getElementById('menu')) {
		alert('redrawmenu: Kunne ikke finde menuen');
		return;
	}
	tmg.xhrget('menu.php', redrawmenu_cb);
}

function redrawmenu_cb(xhr) {
	var ele;
	if (!(ele = document.getElementById('menu'))) {
		alert('redrawmenu_cb: Kunne ikke finde menuen');
		return;
	}
	var root = xhr.responseXML;
	if (!root) {
		alert('redrawmenu_cb: xhr.responseXML ikke set');
		return;
	}
	if (root.documentElement) root = root.documentElement;
	if (!root) {
		alert('redrawmenu_cb: Ugyldigt svar fra server (!root)');
		return;
	}
	ele.innerHTML = unescape(tmg.textContent(root));
	menuregister();
}

function menu_bgcolor(clas) {
	switch (clas) {
		case 'sublvl': //return '#DDE3C3'; // fallthrough
		case 'sublvl-alt': return '#EEEEDD';
		case 'header': return '#FFFFF0';
		case 'toplvl': return '#444444';
		case 'maincolored': return '#CC3333';
		default: return '#FFFFFF';
	}
}

function menu_color(clas) {
	switch (clas) {
		case 'sublvl': //return '#000000'; // fallthrough
		case 'sublvl-alt': return '#000000';
		case 'header': return '#000000';
		case 'toplvl': return '#FFFFFF';
		case 'maincolored': return '#FFFFFF';
		default: return '#FFFFFF';
	}
}

function menu_td_a(ele) {
	var td = null, a = null, mode = -1;
	if (ele.nodeType == 3) ele = ele.parentNode;
	if (ele.tagName.toLowerCase() == 'li') {
		mode = 0;
		td = ele;
		for (var i = 0; i < ele.childNodes.length; i++) {
			if (ele.childNodes[i].nodeType == 1 && ele.childNodes[i].tagName.toLowerCase() == 'a') {
				a = ele.childNodes[i];
				break;
			}
		}
		if (!a) a = td;
	} else {
		mode = 1;
		a = ele;
		td = ele.parentNode;
	}
	return [td, a, mode];
}

function menu_highlight(ele, e) {
	var td_a = menu_td_a(ele);
	//if (td_a[2]) return;
	Animation(td_a[0]).to('backgroundColor', '#FFFFFF').duration(100).ease(Animation.ease.end).go();
	Animation(td_a[1]).to('color', '#000000').duration(100).ease(Animation.ease.end).go();
}

function menu_lowlight(ele, e) {
	var td_a = menu_td_a(ele);
	//if (td_a[2] != 0) return;
	Animation(td_a[0]).to('backgroundColor', menu_bgcolor(td_a[0].className)).duration(500).ease(Animation.ease.both).go();
	Animation(td_a[1]).to('color', menu_color(td_a[0].className)).duration(100).ease(Animation.ease.both).go();
}

var overid = false;
function menuover(e) {
	if (!e) e = window.event;
	var ele = tmg.eventTarget(e);
	var td_a = menu_td_a(ele);
	if (overid !== false) {
		var otherele = document.getElementById(overid);
		if (otherele && ((typeof td_a[0].id) === 'undefined' || (td_a[0].id && td_a[0].id !== overid))) {
			menu_lowlight(otherele, null);
			overid = false;
		}
	}
	menu_highlight(ele, e);
	if ((typeof td_a[0].id) != 'undefined' && td_a[0].id) {
		overid = td_a[0].id;
	}
}

function menuout(e) {
	if (!e) e = window.event;
	var ele = tmg.eventTarget(e);
	var tg = ele;
	//if (tg.nodeName.toLowerCase() != 'li') return;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	if (reltg) {
		while (reltg && reltg != tg && (reltg.nodeType != 1 || reltg.tagName.toUpperCase() != 'BODY'))
			reltg= reltg.parentNode;
		if (reltg && reltg== tg) return;
	}
	// Mouseout took place when mouse actually left layer
	// Handle event

	var td_a = menu_td_a(ele);
	menu_lowlight(ele, e);
	if (overid !== false && (typeof td_a[0].id) !== 'undefined' && td_a[0].id) {
		overid = false;
	}
}

window.lastclicked = null;
function menuclick(e) {
	if (!e) e = window.event;
	var ele = tmg.eventTarget(e);
	var td_a = menu_td_a(ele);
	ele = td_a[1];
	if (ele.justclicked) {return;}
	if (window.lastclicked) {window.lastclicked.justclicked = false;}
	window.lastclicked = ele;
	if (typeof inpage == 'object')
		return inpage.linkclick_ex(ele, e);
	else {
		return true;
	}
}

function menudown(e) {
	if (!e) e = window.event;
	var ele = tmg.eventTarget(e);
	var td_a = menu_td_a(ele);
	if (td_a[2] != 0) return;
	Animation(td_a[0]).to('backgroundColor', '#FFDD66').duration(100).ease(Animation.ease.end).go();
}

function menuup(e) {
	if (!e) e = window.event;
	var ele = tmg.eventTarget(e);
	var td_a = menu_td_a(ele);
	menu_lowlight(ele, e);
}

function menufocus(e) {
	if (!e) e = window.event;
	var ele = tmg.eventTarget(e);
	menu_highlight(ele, e);
}

function menublur(e) {
	if (!e) e = window.event;
	var ele = tmg.eventTarget(e);
	menu_lowlight(ele, e);
}

function menu_addevents(ele) {
	tmg.addEventSimple(ele, 'blur', menublur);
	tmg.addEventSimple(ele, 'focus', menufocus);
	tmg.addEventSimple(ele, 'mouseup', menuup);
	tmg.addEventSimple(ele, 'mousedown', menudown);
	tmg.addEventSimple(ele, 'mouseout', menuout);
	tmg.addEventSimple(ele, 'mouseover', menuover);
	if (!ele.onclick) {
		ele.onclick = menuclick;
	} else {
		tmg.addEventSimple(ele, 'click', menuclick);
	}
}

function menuregister() {
	var divmenu = document.getElementById('menu');
	if (!divmenu) return;
	var tds = tmg.getChildTags(divmenu, 'li'); // like getElementsByTagName, except returns an array, not HTMLCollection
	for (var i = 0; i < tds.length; i++) {
		var s = tds[i].innerHTML;
		s = s.replace(/&nbsp;/g, '');
		if (s == s.replace(/\w/, '')) continue;
		menu_addevents(tds[i]);
	}
}

function setrealname(s) {
	var labels = tmg.getElementsByClassName(document.body, 'realnamelabel');
	for (var i = 0; i < labels.length; i++) {
		labels[i].innerHTML = s;
	}
}
function popupimg(intId){
	window.popupimage = window.open(
		"popupimg-"+intId,
		"popupimage",
		"toolbar=no,location=no,directories=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=600,height=450");
}
function closeme() {
	window.popupimage.close();
}
function rewirenbdeletions() {
	var a = tmg.getElementsByClassName(document.body, 'deletelink');
	while (a.length) {
		var ele = a.shift();
		if (ele.nbdeletionrewired)
			continue;
		ele.nbdeletionrewired = true;
		if (ele.href) {
			var o = ele.href.match(/[?&;]deletenb=([^&;]*)/);
			if (o) {
				tmg.addEventSimple(ele, 'click', nbdelete);
				ele.nbid = o[1];
				ele.href = 'javascript:void(0)';
			}
		}
	}
}
function nbdelete(e) {
	if (!e)
		e = window.event;
	var ele = tmg.eventTarget(e);
	while (ele && (ele.nodeType != 1 || ele.tagName.toLowerCase() != 'a'))
		ele = ele.parentNode;
	if (!ele)
		return;
	if (!ele.nbid)
		return;
	var nbid = ele.nbid;
	while (ele && !tmg.hasClass(ele, 'notabenestock'))
		ele = ele.parentNode;
	var xhr = tmg.xhrpostj('index.php?json', nbdelete_cb, 'deletenb='+escape(nbid));
	xhr.ele = ele; // this might be null
}
function nbdelete_cb(xhr) {
	var o = tmg.xhrjson(xhr);
	if (!o)
		return;
	if (o.error) {
		alert(o.error);
		return;
	}
	if (xhr.ele)
		Animation(xhr.ele).to('opacity', 0).checkpoint().hide().go();
}

tmg.addLoad(menuregister);
tmg.autofocusregister();
tmg.addLoad(function () {
	if (typeof inpage == 'object') {
		inpage.init(['content', 'top']);
		inpage.eventsubscribe('load', rewirenbdeletions);
	}
});
tmg.addLoad(rewirenbdeletions);
