/*
#
# --------------------------------------------------------------------------------
#
#  fCMS2 Content Management System  - (http://www.fidion.de)
#
#  Copyright (C) 2002 fidion GmbH, Würzburg.  (W) Steffen Einsle, Dipl.Inf.(FH)
#  All rights reserved. This Software is subject to license issues.
#
#  Common JavaScript Base
#
#  $Id: js.js,v 1.8 2006/02/01 12:31:37 bechold Exp $
#
# --------------------------------------------------------------------------------
# $HASH$:00000000000000000000000000000000
*/


/**
@ creator Anton Funk
erstellt ein MD5Passwort und checkt nach passwortfeldern
wo dieses eingegeben und wiederholt worden ist
formularfeldernamen sollten ca. so aussehen :
<input type="password" name="passwortfeld">
<input type="password" name="passwortfeld_reenter">
**/


function checkedvalue ( field ) {

	if (field.type == "checkbox") {
		if (field.checked  == false )
		field.value = "false";
	}


}

function createMD5PasswordAndCheckFields ( form , newfield ) {
	// form = id des Formulars
	// newfield = name des neuen feldes
	var passarr = Array ();
	var passarr_reenter = Array ();
	var counter = 0 ;
	var counter2 = 0 ;
	var md5password;

	if (document.all || document.getElementById ) {
		var object = document.forms[form].elements;

		for (i = 0 ; i < object.length; i++) {


			if (object[i].type == "password") {
				o = object[i].name;

				tmp_ergebnis = o.search(/_reenter.+/); // reenter felder ?

				if (tmp_ergebnis == -1 )  { // kein reenter feld
					passarr [counter] = object[i];
					counter++;
				} else { // reenter feld
					passarr_reenter [counter2] = object[i];
					counter2++;
				}


			} // end if password
		} // end for

		for (i=0; i< passarr.length; i++ ) {

			passarr_name  = proc_clear_form_names(passarr[i].name);
			for (j=0; j<passarr_reenter.length; j++) {
				passarr_reenter_name =  proc_clear_form_names(passarr_reenter[j].name);

				if (passarr_name+"_reenter" == passarr_reenter_name) {
					// zwei übereinstimmungen gefunden !
					if (passarr[i].value == "" || passarr_reenter[j].value=="") {
						/** kann ausprogrammiert werden **/
						return false;
						break;
					} else if (passarr[i].value != passarr_reenter[j].value ) {
						/** kann ausprogrammiert werden **/
						return false;
						break;
					} else {
						md5password = MD5(passarr[i].value);
						/*alert (md5password); */
						setFormElement ('hidden' , md5password , newfield , newfield , form); // neues feld setzen
						return true;
					}
				}
			} // end j for

		} // end i for
	}
	return true;
}




/** form name säubern ... für prozessketten **/
function proc_clear_form_names ( name ) {
	var newname;
	name = name.toLowerCase();
	newname = name.replace("*","");
	newname = newname.replace("!","");
	return newname;
}
/**********************************************/


// Formularfelder nach der ID disablen (verbunden mit OnClick)
// By Anton Funk
function disableFieldbyId (id,value) {

	if (document.getElementById(id))
	if (document.getElementById(id).disabled == false )
	{
		document.getElementById(id).disabled =true;
		if (value != '')  document.getElementById(id).value = value;
	}
}

/** Alle buttons im Formular mit der ID [theform] deaktivieren (value ist optional) **/
function disableAllButtons ( theform , value ) {
	// Alle Buttons im formular mit der id [theform] disablen
	var tempobj = theform.elements;
	/*alert (tempobj.length); */
	for (i = 0; i < tempobj.length; i++) {


		if (tempobj[i].type.toLowerCase() == "submit" || tempobj[i].type.toLowerCase() == "reset" || tempobj[i].type.toLowerCase() == "button" ) {
			tempobj[i].disabled = true;
			if (value != "")
			tempobj[i].value   = value ;
		}
	}
}


function setFormElement (type , value , name , id , appendTo) {
	var newEl = Array();
	newEl = document.createElement('input');
	newEl.type = type;
	newEl.id = id;
	newEl.value = value;
	newEl.name = name;
	document.getElementById(appendTo).appendChild(newEl);
}

function createElem (type , value , name , id , frm) {
	var newEl = Array();
	newEl = document.createElement('input');
	newEl.type = type;
	newEl.id = id;
	newEl.value = value;
	newEl.name = name;
	frm.appendChild(newEl);
}

function opbasket(f) {
	var j; var S='win';
	for(j=0;j<10;j++) S += String.fromCharCode(97+Math.floor(26*Math.random()));
	opener.name=S; f.target=S; f.submit();
	opener.focus(); window.setTimeout("window.focus();",10000);
	return(false);
}


var to = "";              // timeout-handler
var vlist = new Array();  // current menu

// MenuDivs: Layer aufpoppen lassen
function cmsMenu( level, mdiv, lpix, expire ) {
	var ppos;
	if ( to ) window.clearTimeout(to);      // timeout loeschen

	if ( vlist[level]!=mdiv ) for(var i=level; i<=vlist.length; i++)
	if ( vlist[i]) vlist[i] = cms_setDiv(vlist[i]);

	if ( mdiv ) {
		if ( lpix ) ppos = cms_getImagePos( lpix ); // position ermitteln
		else        ppos = [ 0, 0];  // sonst array generiren
		vlist[level] = cms_setDiv(mdiv,1,ppos[0],ppos[1]);
	}
	if ( expire )
	to=window.setTimeout("cmsMenu(0)",1000*expire);
	return(false);
}

// MenuDivs: Layer positioniern und ein- oder ausschalten
function cms_setDiv( name, show, xpos, ypos ) {
	var el_ = null, vis = null;
	if ( !name ) return("");
	if ( document.getElementById ) {
		el_ = document.getElementById(name);
		if ( el_ ) el_ = el_.style;
		vis = ( show ? "visible" : "hidden" );
	} else if ( document.all ) {
		el_ = document.all[name];
		vis = ( show ? "visible" : "hidden" );
	} else if ( document.layers ) {
		el_ = document.layers[name];
		vis = ( show ? "SHOW"    : "HIDE"   );
	}
	if ( !el_ ) return(false);
	if ( xpos || ypos ) {
		if ( adjust.length ) { xpos += adjust[0]; ypos += adjust[1]; }
		el_.top=ypos; el_.left=xpos;
	}
	el_.visibility = vis;
	return( show ? name : "" ); // rückgabewert
}


// MenuDivs: x/y Position des Positions-Pixels ermitteln
function cms_getImagePos( pimg ) {
	var xpos = ypos = 0;
	var el_ = document[pimg];

	if ( document.getElementById ) { // if ( IE4 )
		if ( !el_ ) return( [0,0] );
		// MAC-Erweiterung fuer IE   20020229 dm
		//      if ((navigator.userAgent.indexOf("Mac") > -1) && ( navigator.userAgent.indexOf("IE") > -1 )) {
		//         xpos = el_.offsetLeft + el_.offsetWidth + 1;
		//         ypos = el_.offsetTop  - el_.offsetHeight + 18;
		//      } else {
		xpos = el_.offsetLeft + el_.offsetWidth;
		ypos = el_.offsetTop;
		while( (el_ = el_.offsetParent) != null ) {
			xpos += el_.offsetLeft;
			ypos += el_.offsetTop;
		}
		//      }
	} else if ( document.layers ) {
		for( var i=0; !el_ && i<document.layers.length; i++)
		if ( (el_=document.layers[i].document[pimg]) ) {
			xpos = document.layers[i].x + 2;
			ypos = document.layers[i].y;
		}
		xpos += el_.x;
		ypos += el_.y;
	} else if ( document.all ) {
		if ( !el_ ) return( [0,0] );
		xpos = el_.offsetLeft + el_.offsetWidth;
		ypos = el_.offsetTop;
	} else window.alert("Huh! What browser are you using ?");
	// Werte in Array zurückliefern
	return ([xpos,ypos]);
}

function old_notframe( url ) {

	var frameurls = [ '/frametest/',
	'/chat/',
	'/ratgeber/finanzen/'
	];

	url = url.replace(/^http:\/\/[^\/]+/,''); // host wegschneiden
	url = url.replace(/\?.*/,''); // parameter wegschneiden
	for(i=0; i<frameurls.length; i++)
	if ( url.substr(0,frameurls[i].length)==frameurls[i] ) return(0);
	return(1);
}

var frm;
// Login: Challenge-Response-Authentifikation ausfuehren
function cmslogin(f) {
	str = f.elements['username'].value+":"+MD5(f.elements['password'].value)+":"+f.elements['challenge'].value;
	if ( f.elements['username'].value.length && f.elements['password'].value.length ){
		r = MD5(str);
		xmldoc = "/_/tools/quicklogin.html?username="+f.elements['username'].value+"&response="+r+"&challenge="+f.elements['challenge'].value;
		frm = f;
		loadXMLDoc(xmldoc);
		//f.elements['response'].value = response;
		//f.elements['password'].value = "";
		//if ( document.cookie.indexOf('fCMS')>-1 ) f.submit();
		//else window.alert('Für diese Funktion müssen Sie Cookies \nauf Ihrem Rechner zulassen!');
	}
}

function cmsloginold(f) {
    str = f.elements['username'].value+":"+MD5(f.elements['password'].value)+":"+f.elements['challenge'].value;
    if ( f.elements['username'].value.length && f.elements['password'].value.length ){
        f.elements['response'].value = MD5(str);
        f.elements['password'].value = "";
        if ( document.cookie.indexOf('fCMS')>-1 ) f.submit();
        else window.alert('Für diese Funktion müssen Sie Cookies \nauf Ihrem Rechner zulassen!');
    }
}

var warr = [];
// neues Fenster oeffnen, nur wenn noch nicht geoeffnet
function cmswin( name, url, w, h ) {
	if ( warr.length && warr[name] ) mw=warr[name];
	else mw=window.open(url,name,'width='+w+',height='+h+',scrollbars=yes,resizable=yes,dependent=yes');
	if ( mw && !mw.closed ) mw.focus(0);
	warr[name]=mw;
}


// checkbox und radiobutton: Funktion fuer Textlinks
function tlink( name,id ) {
	for( var f=0; f<document.forms.length; f++ )
	for( var i=0; i<document.forms[f].elements.length; i++) {
		var e = document.forms[f].elements[i];
		if ( e.name && e.name.substr(0,name.length)==name )
		switch( e.type ) {
			case 'checkbox' : e.click(); // e.checked^=1;
			break;
			case 'radio'    : if ( e.value=="OPT-"+id ) e.click();
			if ( e.value==id ) e.click();
			break;
		}
	}
	return(false);
}


// Sitemap: Funktion um einzelnen Knoten zu toggeln
function toggle( vn, i ) {
	var opt = document.forms[0].elements[vn].value;
	var opl = opt.length ? opt.split(",") : new Array();
	var opo = new Array();
	for( var j=0; j<opl.length; j++) if ( opl[j]!=i ) opo[opo.length]=opl[j];
	if ( opo.length==opl.length ) opo[opo.length]=i;
	opt = opo.join(",");
	document.forms[0].elements[vn].value=opt;
	document.forms[0].submit();
	return(false);
}

// Sitemap: Neue URL im Hauptfenster laden
function opgoto( url ) {
	window.opener.location.href=url;
	return(false);
}

// CMS: Cache für aktuelle Seite deaktivieren
function unlock() {
	var url = document.location.href;
	url = url.replace(/#.*/,'');
	url = url + (url.indexOf('?')>-1 ? "&" : "?") + '_UNLOCK=9da76f9786df5ef6';
	document.location.href=url;
}



// einige Macromedia Funktionen
function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
		if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
		for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function printwin() {
	var url = document.location.href;
	url = url.replace(/#.*/,'');
	url = url + (url.indexOf('?')>-1 ? "&" : "?") + '_FRAME=33&_FORMAT=PRINT';
	var pw = window.open(url,'PRINTWIN','width=640,height=480,scrollbars=1');
	// auskommentiert von fido, 26.05.05 - beisst sich mit printfoot.tpl
	// while ( ! pw.document );
	// while ( ! pw.document.body );
	// pw.document.body.onload=pw.print;
	// pw.setTimeout('window.close()',30000);
}

// Positionsmodifikator für cmsMenu
var adjust = [ 0, -2 ];  // menu-divs ggf. 2 pixel nach oben verschieben


function cmshelp(sub) {
	cmswin('hilfe','/_/tools/hilfe.html?'+sub,250,100);
	return(false);
}

function notframe( url ) {

	var frameurls = [ '/szene/terminesaar/',
	'/chat/',
	'/solarchiv/',
	'/gesund/med_katalog/',
	'/szimnetz/sz-archiv/',
	'/zugang/service/',
	'/together/chat/mainchat/'];

	url = url.replace(/^http:\/\/[^\/]+/,''); // host wegschneiden
	url = url.replace(/\?.*/,''); // parameter wegschneiden

	for(i=0; i<frameurls.length; i++)
	if ( url.substr(0,frameurls[i].length)==frameurls[i] ) return(0);
	return(1);
}

function get_form(f) {
	if ((typeof f)=="object") return(f);
	if ( !document.forms || !document.forms[f] ) return(false);
	return(document.forms[f]);
}

function get_element(f,i) {
	var frm=get_form(f);
	if ( !frm || !frm.elements || !frm.elements[i] ) return(false);
	return(frm.elements[i]);
}

function get_var(f,i) {
	var elm = get_element(f,i);
	if ( elm ) {
		var typ = elm.length ? elm[0].type : elm.type;
		switch( typ ) {
			case "checkbox" : return(get_cb(elm)); break;
			case "radio"    : return(get_rdo(elm)); break;
			case "select"   : return(get_sel(elm)); break;
			default         : return(elm.value); break;
		}
	}
	return(false);
}

function set_var(f,i,j) {
	var elm = get_element(f,i);
	if ( elm ) {
		var typ = elm.length ? elm[0].type : elm.type;
		switch( typ ) {
			case "checkbox" : return(set_cb(elm,j)); break;
			case "radio"    : return(set_rdo(elm,j)); break;
			case "select"   : return(set_sel(elm,j)); break;
			default         : elm.value=j; return(true); break;
		}
	}
	return(false);
}

function get_cb( elm ) { return( elm.checked ? elm.value : "" ); }
function get_rdo( elm ) { for(var k=0; k<elm.length; k++) if ( elm[k].checked ) return( elm[k].value ); return(false); }
function get_sel( elm ) { for(var k=0; k<elm.options.length; k++) if ( elm.options[k].selected ) return(elm.options[k].value); return(false); }
function set_cb( elm, j ) { if ( j ) elm.value=j; elm.checked = ( j!="" ); }
function set_rdo( elm, j ) { for(var k=0; k<elm.length; k++) elm[k].checked = (elm[k].value==j); }
function set_sel( elm, j ) { for(var k=0; k<elm.options.length; k++) elm.options[k].selected = (elm.options[k].value==j); }

function vsubmit(f,i,j) {
	set_var(f,i,j);
	document.forms[f].submit();
}

function menu_hide_forms()
{
	for (var a=0; a<document.forms.length; a++)
	{
		for (var b=0; b<document.forms[a].elements.length; b++)
		{
			if (document.forms[a].elements[b].type=="select-one") document.forms[a].elements[b].style.visibility="hidden";
		}
	}
}

function menu_show_forms()
{
	for (var a=0; a<document.forms.length; a++)
	{
		for (var b=0; b<document.forms[a].elements.length; b++)
		{
			document.forms[a].elements[b].style.visibility="visible";
		}
	}
}

var req;

function loadXMLDoc(url)
{
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
		// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	}
}

function processReqChange()
{
	// only if req shows "complete"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			// ...processing statements go here...
			response  = req.responseXML.documentElement;
			if ( response ) {
				method    = response.getElementsByTagName('method')[0].firstChild.data;
				data      = response.getElementsByTagName('data')[0].firstChild.data;
				eval(method + '(data)');
			} else {
				alert("Fehler bei der Anmeldung");
			}
		} else {
			alert("There was a problem retrieving the data:\n" + req.statusText);
		}
	}
}

function updatelogin(data, redirect) {
	var box = document.getElementById('dynloginarea');
	document.location.href="/knuddl/registrierung/klub/";
	if (box) {
		box.innerHTML = data;
	}
}