/*
#
# --------------------------------------------------------------------------------
#
#  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.1 2005/02/10 14:34:48 bechold Exp $
#
# --------------------------------------------------------------------------------
# $HASH$:00000000000000000000000000000000
*/


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 ( !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();
}

