/*
#
# --------------------------------------------------------------------------------
#
#  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);
}

// 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 ){
        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";
        }
    }
}