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

var W3CDOM = (document.getElementById && document.images && document.createElement);
var isBrokenBrowser = (window.ActiveXObject) ? true : false; // read: any InternetExploder
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);
	if(h.elements)
		h.elements[n].value = ev;
	else
		alert("OUPS!\n"+h.innerHTML);
	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)
	{
		//alert("PLform:\n"+PLform.innerHTML);
		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');

		// HiB has no languages, so we use it as skin
		//if(lang)  atxt += mod_form(PLform,  'lang',  lang); else del_form(PLform, 'lang');
		del_form(PLform, 'lang');
		if(lang)  atxt += mod_form(PLform,  'skin',  lang); else del_form(PLform, 'skin');

		if(topic) atxt += mod_form(PLform, 'topic', topic); else if(node) del_form(PLform, 'topic');
		PLform.method = "GET";
		PLform.submit();
	}
	else alert("can NOT goto '"+urlgoto+"' because there's no FORM to use");
}

function reqPage(page)   { req_page(page, null, null, null);  }
function reqNode(node, skin)   { req_page(null, node, skin, 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 reqSkin(skin)
{
	var ureqTopic = getQueryArg('topic');
	var ureqNode = getQueryArg('node');
	if(ureqTopic) req_page(null, null, skin, ureqTopic);
	else req_page(null, ureqNode, skin, null); 
}

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_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); //cc - 13);
		} else r += ci;
	}
	return r;
}

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 mehl = Array(); 
mehl[mehl.length] = Array("jro", "jroznfgre", "ubefrf-va-onynapr", "pbz"); // web
mehl[mehl.length] = Array("onmv", "Oneonen", "ubefrf-va-onynapr", "pbz"); // bazi
mehl[mehl.length] = Array("hc", "Hyevxr.Cnhyhf", "ubefrf-va-onynapr", "pbz"); // up

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

function fix_mehl(ma)
{
	// webmaster, baziDE/EU, coder, zucht, sale
	//alert("Fixing "+ma.length+" potential emails.");
	for(var i = 0; i < ma.length; i++)
	{
		var rc = ma[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 spanen = "mehl_" + c[0];
		var spanel = getel(spanen);
		var spanes = contentto.substr( 0, contentto.length - 1); 
		if(spanel)
		{
			//alert("found an element for addr #"+(i+1));
			if(spanel.innerHTML != '') spanes = spanel.innerHTML;
			tocontent += contentto + chr(62) + spanes;
			for(var et = 0; et < toend.length; et++) tocontent += chr(toend[et]);
			update_text(spanen, tocontent);
		}
		/*
		else
		{
			var f = (top.AddMessage) ? top.AddMessage : (AddMessage) ? AddMessage : alert;
			f('dynamic linkage failed for ePost');
		}
		*/
	}
}

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("No Page-MSG-Container!!\n"+msg);
	} 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 = '/IMG/24x/highlight/' + rel + '.png'; // /revamp/
	me.src = bip;
}

function moutbFX(me)
{
	var rel = me.getAttribute("rel");
	var bip = '/IMG/24x/normal/' + rel + '.png'; // /revamp/
	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 = ""; }

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

function fix_section_dimensions()
{
	/*
	var el_content = getel('PAGE_CONTENT', 0);
	var el_current = getel('PAGE_SECTION_CURRENT', 0);
	if(el_content && el_current)
	{
		el_current.style.height = (el_content.offsetHeight + 128) + "px";
	}
	*/
}

function fix_logo()
{
	if(isBrokenBrowser) 
	{
		var lel = getel('HIBLOGO');
		if(lel) lel.style.margin = '-20px 0px 0px 0px'; // fix the position 
		// 20091005 : 
		// W3C : lel.style.margin = '-58px 0px 0px 0px'
		//  IE : lel.style.margin = '-20px 0px 0px 0px'
	}
}

/* --------------------------------------------------------------------------------------------------- */
function test_width()
{
	var div_c = getel('PAGE_CONTAINER');
	var div_l = getel('PAGE_SECTION_CURRENT');
	var div_r = getel('PAGE_CONTENT');
	if( div_c && div_l && div_r )
	{
		var pos_c = findPos(div_c);
		var pos_r = findPos(div_r);
		var pos_l = findPos(div_l);
		var infos = 'Test-Width:'+"<br/>";
		//+ div_c.clientWidth + "x" + div_c.clientHeight
		infos += 'C: ' + pos_c[0] + ":" + pos_c[1] + " - " + div_c.clientWidth + " x " + div_c.clientHeight + "<br/>";
		infos += 'L: ' + pos_l[0] + ":" + pos_l[1] + " - " + div_l.clientWidth + " x " + div_l.clientHeight + "<br/>";
		infos += 'R: ' + pos_r[0] + ":" + pos_r[1] + " - " + div_r.clientWidth + " x " + div_r.clientHeight + "<br/>";
		infos += '==>  WIDTH '+div_c.clientWidth+' = '+div_l.clientWidth+' + '+div_r.clientWidth+' (='+(div_l.clientWidth+div_r.clientWidth)+')<br/>';
		//infos += '==> HEIGHT '+div_c.clientHeight+' = '+div_l.clientHeight+' + '+div_r.clientHeight+' (='+(div_l.clientHeight+div_r.clientHeight)+')<br/>';
		AddMessage(infos);
	}
}
/* --------------------------------------------------------------------------------------------------- */

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


