/* ***************************** *
 *                               *
 * ft/CMS : v0.300 : 2009 Oct 30 *
 *                               *
 * contact: flow @ flowtron.de   *
 *                               *
 * ***************************** *
 *  Copyright 2009 by prosolvo   *
 * ***************************** */

var W3CDOM = (document.getElementById && document.images && document.createElement);
var URL_working = this.SITE_ROOT + "IMG/div/working.gif"; 
var URL_thegif = self.SITE_ROOT + "IMG/div/the.gif";

/* --------------------------------------------------------------------------------------------------- */
/* DEBUG */

function test_values(o)
{
	var ex = 0;
	var tt = "";
	for(ex = 0; ex < o.elements.length; ex++)
	{
		tt += "#" + ex + ": " + o.elements[ex].name + " = " + o.elements[ex].value + " | " + o.elements[ex].checked + "\n";
	}
	alert(tt);
	//return false; // don't really submit!
	return true;
}

/* --------------------------------------------------------------------------------------------------- */

function mod_form(h,n,v)
{
	var encF = encodeURI ? encodeURI : escape;
	ev = encF(v);
	//h.elements[n].value = ev;
	if(h.elements[n])
	{
		h.elements[n].value = ev;
	} else {
		alert("FORM-elements has no element "+n+"\nSorry - please reload the (entire) page.");
	}
	return n + " = " + ev;
}

function del_form(h,n)
{
	if(h.elements[n]) h.removeChild(h.elements[n]);
}

function req_page(page, node, lang, topic)
{
	var PLform = getel("PageLoader");
	if(PLform)
	{
		var atxt = "";
		if(page)  atxt += mod_form(PLform,  'page',  page); else del_form(PLform, 'page');
		if(node && !topic)  atxt += mod_form(PLform,  'node',  node); else del_form(PLform, 'node');
		//if(lang)  atxt += mod_form(PLform,  'lang',  lang); else del_form(PLform, 'lang');
		if(lang)  atxt += mod_form(PLform,  'lang',  lang); else atxt += mod_form(PLform, 'lang', curSelLang);
		if(topic) atxt += mod_form(PLform, 'topic', topic); else if(node) del_form(PLform, 'topic');
		PLform.method = "GET";
		PLform.submit();
	}
	else alert("I can't see the FORM to process your data.");
		//alert("can NOT goto '"+urlgoto+"' because there's no FORM to use");
}

function reqPage(page)   { req_page(page, null, null, null);  }
function reqNode(node)   { req_page(null, node, null, null);  }
function reqTopic(topic) { req_page(null, null, null, topic); }

function reqLang(lang)
{
	var ureqTopic = getQueryArg('topic');
	var ureqNode = getQueryArg('node');
	if(ureqTopic) req_page(null, null, lang, ureqTopic);
	else req_page(null, ureqNode, lang, null); 
}

function update_el(el, content)
{
	try {
		if (el != null) 
			el.innerHTML = content; 
	} catch(e) {  } //document.write("update_el :: [" + el.nodeName + "] : " + e); }
}

function update_text(tid, content)
{
	if(W3CDOM)
	{
		var real_tid = tid;
		var not_numeric = isNaN(tid);
		if(!not_numeric) real_tid = pageElementId( tid );
		var domel = document.getElementById( real_tid );
		if(domel) domel.innerHTML = content;
	}
}

// this function was leeched from ppk (http://quirksmode.org)
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent); // = != == - I know! :)
	}
	return [curleft,curtop];
}

// we only need to decode here
function un_num17(s)
{
	var r = new String();
	for(var i = 0; i < s.length; i++) 
	{
		var ci = s.substring(i, i+1);
		var cc = ci.charCodeAt(0);
		var tc = (cc==32) ? 32 : 43;
		if(cc>=65 && cc<=74) tc = cc - 17;
		r += String.fromCharCode(tc);
	}
	return r;
}

function un_rot13(s)
{
	var r = new String();
	for(var i = 0; i < s.length; i++) 
	{
		var ci = s.substring(i, i+1);
		var cc = ci.charCodeAt(0);
		var bv = 0;
		if(cc>=65 && cc<=90) bv = 64;
		if(cc>=97 && cc<=122) bv = 97;
		if(bv)
		{
			var tc = cc + 13;
			if(tc >= bv + 26) tc = bv + (tc - (bv + 26));
			r += String.fromCharCode(tc); 
		} else r += ci;
	}
	return r;
}

var call = Array();
call[call.length] = Array("hqyQRc", "", "A EH GC", "BI DG EC");
call[call.length] = Array("hqyVc", "@EJ", "EH GC", "BI DG EC");

var totag = Array(60, 97, 32, 104, 114, 101, 102, 61, 34, 109, 97, 105, 108, 116, 111, 58);
var tagto = Array(32, 23, 17);
var toend = Array(60, 47, 97, 62);
var callend = Array("", "&#160;", "&#160;-&#160;", "");

var mehl = Array(); 
mehl[mehl.length] = Array("jroznfgre", "jroznfgre", "yvcvmmnare-hagreqrayvaqra", "qr");
mehl[mehl.length] = Array("onmvQR", "Oneonen", "yvcvmmnare-hagreqrayvaqra", "qr");
mehl[mehl.length] = Array("onmvRH", "Oneonen", "yvcvmmna-ubefrf", "rh");
mehl[mehl.length] = Array("pbqre", "sybj", "yvcvmmnare-hagreqrayvaqra", "qr");
mehl[mehl.length] = Array("mhpug", "Mhpug", "yvcvmmnare-hagreqrayvaqra", "qr");
mehl[mehl.length] = Array("fnyr", "Irexnhs", "yvcvmmnare-hagreqrayvaqra", "qr");
mehl[mehl.length] = Array("sybjC", "Sybevna.Fpuhygr", "cebfbyib", "pbz");

function chr(cc) { return String.fromCharCode(cc); }

function fix_call()
{
	var i;
	var allSPANs = document.getElementsByTagName("span");
	var findCALL = /call_./
	var findSPCE = /\ /
	var replCALL = Array();
	for(i = 0; i < call.length; i++)
	{
		var rc = call[i];
		var c = Array();
		c[0] = un_rot13(rc[0]);
		var tocontent = "";
		for(var j=1; j<rc.length; j++) tocontent += un_num17(rc[j]) + callend[j]; // non-I18L-calls have &#160; at front *shrug*
		replCALL[i] = Array(c[0], tocontent);
	}
	for(i = 0; i < allSPANs.length; i++)
	{
		var potCand = (allSPANs[i].id!="");
		if(potCand)
		{
			var foundCALL = findCALL.test(allSPANs[i].id);
			if(foundCALL)
			{
				var thisCALL = allSPANs[i];
				var fndPOS = thisCALL.id.search(findCALL);
				if(fndPOS == 0)
				{
					var restCALL = thisCALL.id.substring(5);
					for(var j = 0; j < replCALL.length; j++)
					{
						if(replCALL[j][0] == restCALL)
						{
							update_el(thisCALL, replCALL[j][1]);
							thisCALL.id = 'fixed'+restCALL; // avoid redoing this tag
						}
					}
				}
			}
		}
	}
}

function fix_mehl()
{
	var i;
	var allSPANs = document.getElementsByTagName("span");
	var findMEHL = /mehl_./
	var findSPCE = /\ /
	var replMEHL = Array();
	var nameMEHL = Array();
	var endsitall = "";
	for(var te = 0; te < toend.length; te++) endsitall += chr(toend[te]);
	for(i = 0; i < mehl.length; i++)
	{
		var rc = mehl[i];
		var c = Array();
		for(var j=0; j<rc.length; j++) c[j] = un_rot13(rc[j]);
		var tocontent = "";
		var contentto = "";
		for(var tc = 0; tc < totag.length; tc++) tocontent += chr(totag[tc]);
		for(var ct = 0; ct < tagto.length; ct++) contentto += c[ct + 1] + chr(tagto[ct] * 2);
		var spandc = contentto.substr(0,contentto.length-1);
		tocontent += contentto + chr(62);
		replMEHL[i] = Array(tocontent, spandc);
		nameMEHL[i] = c[0];
	}
	for(i = 0; i < allSPANs.length; i++)
	{
		var potCand = (allSPANs[i].id!="");
		if(potCand)
		{
			var foundMEHL = findMEHL.test(allSPANs[i].id);
			if(foundMEHL)
			{
				var thisMEHL = allSPANs[i];
				var fndPOS = thisMEHL.id.search(findMEHL);
				if(fndPOS == 0)
				{
					var restMEHL = thisMEHL.id.substring(5);
					for(var j = 0; j < nameMEHL.length; j++)
					{
						if(nameMEHL[j] == restMEHL)
						{
							var val = thisMEHL.innerHMTL == "" ? replMEHL[j][1] : thisMEHL.innerHTML;
							var lnk = replMEHL[j][0] + val + endsitall;
							update_el(thisMEHL, lnk);
							thisMEHL.id = 'fixed'+restMEHL; // avoid redoing this tag
						}
					}
				}
			}
		}
	}
}



var defceltxt = '&#160;';
var ACKbutton = '<p align="center"><input type="button" class="field" value="Best&auml;tigen" onclick="AckMessage()"></p>';
function AckMessage() {
	var mc = document.getElementById("PAGE_MESSAGE"); 
	if (mc) { 
		mc.innerHTML = ""; 
		mc.setAttribute("class", "MessagesOff");
	}
}

function SetMessage(msg) 
{ 
	if(W3CDOM)
	{
		var mc = document.getElementById("PAGE_MESSAGE"); 
		if (mc) 
		{ 
			mc.innerHTML = ACKbutton;
			mc.innerHTML += msg; 
			mc.setAttribute("class", "MessagesSee");
			var ep = findPos(mc); 
			window.scrollTo(ep[0], ep[1]); 
		} 
	} else alert(msg); // desperate measure - probably TODO/FIXME for production site!!
}

function AddMessage(msg)
{
	if(W3CDOM)
	{
		var mc = document.getElementById("PAGE_MESSAGE"); 
		if (mc) 
		{ 
			if(mc.innerHTML == "") mc.innerHTML = ACKbutton;
			else mc.innerHTML += '<br/>' + "\n";
			mc.innerHTML += msg; 
			mc.setAttribute("class", "MessagesSee");
			var ep = findPos(mc); 
			window.scrollTo(ep[0], ep[1]); 
		} 
	} else alert(msg); // desperate measure - probably TODO/FIXME for production site!!

}

function getel(id, style, warn, odoc)
{
	var handle = null;
	var thedoc = odoc ? odoc : document;
	if(thedoc.getElementById) // DOM [use W3CDOM ?]
	{
		var el = thedoc.getElementById(id); 
		if(el)
		{
			if(style==1) handle = el.style;
			else handle = el;
		} else if(warn) top.AddMessage("Can not find element '"+id+"'..<br>");
	}
	else
	{
		if(thedoc.layers) // is NS 4 or below
		{
			handle = thedoc.layers[id];
		}
		else
		{
			if(thedoc.all) // is IE
			{
				handle = eval("thedoc.all." + id + (style==1 ? ".style" : ""));
			}
			else
			{
				if(warn) alert("your browser can not handle our JavaScript - please contact us!");
			}
		}
	}
	return handle;
}

function getim(id)
{
	var r = null;
	if(W3CDOM)
	{
		for(i=0; i<document.images.length; i++)
		{
			if(document.images[i].id == id) r = document.images[i];
		}
	}
	return r;
}

function toggle(id, action) 
{
	var handle = getel(id, 1);
	if(handle)
	{
		var cs = handle.visibility;
		if(cs=='hidden')
		{
			if(action == -1 || action == 1)	handle.visibility = 'visible';
		}
		else
		{
			if(action == -1 || action == 0) handle.visibility = 'hidden';
		}
	} else { alert("could not find '"+id+"' to do ["+action+"]"); }

}

function toggleDisplay(id, others)
{
	var ox = 0;
	var handle = getel(id, 1);
	if(handle)
	{
		handle.display = 'block';
		for(ox = 0; ox < others.length; ox++)
		{
			var oh = getel(others[ox], 1);
			if(oh) oh.display = 'none';
		}
	} 
}

function toggle_checkbox(img_handle, cf_id, cb_value)
{
	var f_handle = getel(cf_id, 0);
	if(f_handle)
	{
		var cb_handle = null;
		for(var cfex = 0; cfex < f_handle.elements.length; cfex++) 
		{
			if(f_handle.elements[cfex].value == cb_value) cb_handle = f_handle.elements[cfex];
		}
		if(cb_handle)
		{
			cb_handle.checked = !cb_handle.checked;
			if(img_handle) img_handle.className = (cb_handle.checked ? "CBon" : "CBoff");
			else alert("toggled the checked value to "+cb_handle.checked+" .. but couldn't fix the image for it :-/");
		}
		else
		{
			alert("could not toggle CHECKBOX checked-status for value = '" + cb_value + "' in the " + f_handle.elements.length + " elements I checked. :-(");
		}
	}
	else
	{
		alert("could not get CHECKBOX for FROM with ID = '" + cf_id+ "' :-(");
	}
}

/* --------------------------------------------------------------------------------------------------- */

function getQueryArg(name)
{
	var value = null;
	if (window.location.search != "")
	{
		var allvars = window.location.search.slice(1).split("&");
		var p1 = -1;
		var l4 = name + "=";
		var sl = l4.length;
		for (c1 = 0; c1 < allvars.length; c1++)
		{
			p1 = allvars[c1].indexOf(l4); // set 'NAME'?
			if (p1 != -1) value = allvars[c1].slice(p1+sl);
		}
	} 
	return value;
}

/* --------------------------------------------------------------------------------------------------- */

function fixIMG(id, p2f)
{
	var h = getel(id, 0);
	if(h)
	{
		h.src = p2f;
	}
	else alert("Image '"+id+"' not found to fix path of.");
}


/* --------------------------------------------------------------------------------------------------- */

function movrbFX(me)
{
	var rel = me.getAttribute("rel");
	var bip = '/revamp/IMG/24x/highlight/' + rel + '.png';
	me.src = bip;
}

function moutbFX(me)
{
	var rel = me.getAttribute("rel");
	var bip = '/revamp/IMG/24x/normal/' + rel + '.png';
	me.src = bip;
}

function popDebug(info) 
{ 
	var dd = document.getElementById("SitePageDebug");
	if(dd) dd.innerHTML = info; 
}

var div_backupClass = "";
var img_backupClass = "";
var row_backupClass = "";
var cel_backupClass = "";
var lst_backupClass = "";

function movrdFX(me, add) { div_backupClass = me.className; me.className = "SiteCtrlHvr"+(add?" ":"")+(add?add:""); }
function moutdFX(me) { me.className = div_backupClass; div_backupClass = ""; }

function movriFX(me) { img_backupClass = me.className; me.className = "LinkPicsHvr"; }
function moutiFX(me) { me.className = img_backupClass; img_backupClass = ""; }

function movrrFX(me) { row_backupClass = me.className; me.className = "TableRowHvr"; }
function moutrFX(me) { me.className = row_backupClass; row_backupClass = ""; }

function movrcFX(me) { cel_backupClass = me.className; me.className = "TableCelHvr cellpad"; } /* currently only used with cellpad-cells */
function moutcFX(me) { me.className = cel_backupClass; cel_backupClass = ""; }

function movrlFX(me) { lst_backupClass = me.className; me.className = "ListItemHvr"; }
function moutlFX(me) { me.className = lst_backupClass; lst_backupClass = ""; }

/* --------------------------------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------------------------------- */

