/* (c) 2008 Ulrich Tönnies */
/*
   Mail-Funktion. Es wird nach Klicken des "Briefumschlags" das installierte
   e-Mail-Programm gestartet (z.B. Outlook-Express) und das Empfänger- und
   Betreff-Feld ausgefüllt wie in der function vorgegeben. Die gewisse Ver-
   schlüsselung dadurch kann gegen einfaches Auslesen von eMail-Kontakten
   und damit gegen SPAM helfen. Als empf_id ist ein tatsächlich vorhandener
   eMail-Kontakt zu übergeben, die Domain wird fest vorgegeben. Subj ist der
   Betreff (optional), Text der vorausgefüllte Text (ebenfalls optional).
*/
function mail_an (empf_id,subj,text)
{
  /*  Sonderzeichen in subj und text:
      \n\r Zeilenumbruch und Wagenrücklauf...
  */

  // escape geht im Zusammenh. mit OE bei Umlauten korrekt, encodeURI aber nicht????

  var domain="lieb"+"frauen"+"schwestern"+".de";
  var s = "mailto:"+empf_id+"@"+domain;
  if (subj != "") {s = s + "?subject="+escape(subj);}
  if (text != "")
    {
    if (subj == "") {var st = "?";} else { var st = "&"; }
    s = s + st + "body="+escape(text);
    }
  location.href=s;
}


function starteinblendung(text)
{
var s = "<span class='einblendung'>Hinweis der Liebfrauenschwestern:</span>"
        + hr("crimson","90%","1px")
        + "<span class='normal' style='text-align:left; font-size:100%; font-weight:bold; color:maroon;'>"
        + text
        + "</span><br>"
        + hr("crimson","90%","1px")
        + "<span class='einblendung' style='font-size:75%; text-decoration:underline;'>Zum Schließen in diesen Rahmen klicken</span>";
document.getElementById("einblendung").innerHTML = s;
setTimeout('document.getElementById("einblendung").style.visibility = "visible";',1000);
}

function endeeinblendung()
{
document.getElementById("einblendung").style.visibility = "hidden";
}

var IE = document.all?true:false;
var randwert = 0;
var home_path = "";
var menu_vis = 0;
/* SHOWMENU
   MENUE-Steuerung. Vorgegebene Menüpunkte werden eingebaut, die aktuell
   angezeigte Seite dabei aber übergangen (in Seitenname - deklariert in der
   Seite -ist der Name der Seite enthalten. Diese Funktion wird über
   den Klickschalter auf der Seite aufgerufen, sie zeigt/versteckt jeweils
   wechselweise das Menü
*/
function showmenu(fs)
{
var curstyle = 'pointer';

if (menu_vis == 1)
  {
  var a = '<a href="javascript:showmenu('+fs+');" style="cursor:'+curstyle+';font-size:100%;text-decoration:none;color:crimson;font-weight:bold;">Navigation zuschalten</a>';
  }
else
  {
  var a = '<a href="javascript:showmenu('+fs+');" style="cursor:'+curstyle+';font-size:100%;text-decoration:none;color:crimson;font-weight:bold;">Navigation  ausschalten</a><br><br>Schriftgröße:&#160;&#160;&#160;';

  var aktsize = new Array ("A","A","A");
  var lcolor="";
  for (i=0;i<3;i++)
    {
    if (i == design_faktor)
      {
      aktsize[i]="&raquo;"+aktsize[i]+"&laquo;";
      lcolor = "darkgray";
      }
    else
      {
      lcolor = "crimson";
      }
    a = a + '<a style="font-size:'+(100-(1-i)*10)+'%;color:'+lcolor+';text-weight:bold;text-decoration:none;" href="javascript:schriftgroesse('+i+');">'+aktsize[i]+'</a>';
    if (i < 2) {a = a + '&#160;&#160;&#160;';}
    }
  a = a + '<br><br>';
  a = a + menustring;
  }
el=document.getElementById("menu");
el.innerHTML = a;
menu_vis = 1 - menu_vis;
}

var design_faktor_auswahl = new Array(1.00,    1.25,    1.40);
var design_faktor = 1;
var fsize = 1;                      // Standardvorwahl 1
var design_faktor_alt = design_faktor;
var startfonthoehe = 320;                   // siehe in emsTweak

/*
   EMSTWEAK

   Einstellen einer einigermaßen zuverlässigen Fontgröße bei allen Browsern
   und unter allen Einstellungen zur Schriftgröße im Browser...
*/
function emsTweak()
{
  if ((document.createElement) && (document.createTextNode))
    {
      if (!document.getElementById("fontTweakElement"))   // nur beim 1. Mal das div erzeugen
        {
          document.write('<div id="fontTweakElement" style="position:absolute; visibility:hidden; font-family:arial,helvetica,sans-serif;">A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br>A<br></div>');
          // in IE und NS gibt das bei "mittel" bzw. 100% Schriftgröße im Browser 320 Pixel bei der Höhe...

          var elem = document.getElementById("fontTweakElement");

          if (elem.clientHeight) { startfonthoehe = elem.clientHeight; }
          else if (elem.offsetHeight) { startfonthoehe = elem.offsetHeight; }
        }
      var sfak = Math.round(design_faktor_auswahl[design_faktor]*320/startfonthoehe*100)+"%";
      document.body.style.fontSize = sfak;
    }
}


/*
   SCHRIFTGROESSE

   Die Seiten können in 3 vorgegebenen Schriftgrößen betrachtet werden. Die Einstellung
   wird über weitere angesurfte Seiten mitgeführt im Parameter fs
*/
function schriftgroesse (fsize)
{
  if ((fsize>=0) && (fsize<3)  && (fsize != design_faktor))
    {
      design_faktor_alt = design_faktor;
      design_faktor = fsize;
      emsTweak(); menu_position(); paramvalue(fsize); showmenu(fsize); showmenu(fsize); // showmenu stellt die Kennzeichnung bei AAA aktuell...
    }
}

function item (id,html)
{ document.getElementById(id).innerHTML = html; }


function menu_position()
{
  var el=document.getElementById("inhalt");
  var i_l = el.offsetLeft;
  var i_t = el.offsetTop;
  el = document.getElementById("menu");
  if (el)
  {
  el.style.left = Math.max(Math.min(160,Math.floor(i_l/4)),0);
  el.style.top = i_t-15;
  }
}

function madonna_position(rand)
{
  var el=document.getElementById("kopf");
  var i_r = el.offsetLeft; // links ist wie rechts...
  var i_t = el.offsetTop;
  var i_w = el.width;
  el = document.getElementById("madonna");
  el.style.right = Math.floor(Math.max(0,Math.min(165,i_r-165)));
  el.style.top = i_t-35;
}

function calc_outdent(b,r)
// padding des inhaltsbereichs (in css): 30 px rechts und links.
{
  if (b > (r+0))     // bild breiter als rand  war mal r+25
    {
      o = r;          // bis auf 25 pixel am Bildrand schieben
    }
  else                // bild schmaler als rand
    {
      o = b+20;       // bild soll noch 10 pixel (rest zum padding) in den inhaltsbereich ragen
    }
  return o;
}

function picfit2 (idx,bwidth,bheight)
{
  var b = "";
  var offset=0;
  var elb = 0;
  var eld = 0;
  b = "bild"+idx;          // picture
  elb = document.getElementById(b);
  if (bwidth==0)  { bwidth = document.images[b].width; }
  if (bheight==0) { bheight = document.images[b].height; }
  b = "div"+b;
  eld = document.getElementById(b);  // containing div
  if (eld.className == "fotolinks")
    {
    offset = -calc_outdent (bwidth,randwert);
    mr = eld.style.marginRight;
    mr = mr.substr(0,mr.length-2);  // "px" hinten abschneiden...
    eld.style.left = offset;
    eld.style.marginRight = (offset+10)+"px";
    }
  else
    {
    offset = calc_outdent (bwidth,randwert);
    mr = eld.style.marginLeft;
    mr = mr.substr(0,mr.length-2);  // "px" hinten abschneiden...
    eld.style.left = offset;
    eld.style.marginLeft = -(offset-10)+"px";
    }
    eld.style.width = bwidth+"px";
    eld.style.height = bheight+"px";
}

/*
   MARGINFIT

   Der mittlere Bereich der Seite (mit den Texten) wird maximal maxw Pixel breit (wegen
   schlechter Lesbarkeit überlanger Zeilen), jedoch mindestens minw Pixel breit...

   Dazu wird ein Rand links und rechts eingestellt.

   Die Elemente der Kopfzeile (Logo, Madonna) werden dann bei breiter werdenden Rändern etwas
   aus dem inneren Bereich herausgeschoben, ebenfalls passiert das mit Bildelementen mit
   dem id "bild<n>", wobei anhand der css-Klasse entschieden wird, ob nach links oder
   nach rechts herausgeschoben wird.
*/
function marginfit()
{
  function elemoffset (el,off)
  {
  el.style.left = off;
  }

var minw  = 900;            // Mindestbreite Inhaltsbereich
var maxw  = 1280;           // Maximalbreite Inhaltsbereich

var m     = 0;              // Prozentualer Anteil eines (!) Randes an Gesamtbreite
var r     = 0;              // Breite eines (!) Randes in Pixeln
var diffw = maxw - minw;
var w     = getWindowWidth(window);
var el    = document.getElementById("seite");

if (w <= minw)            // kleines Browserfenster, keinen Rand benutzen
  {
  m = 0;
  r = 0;
  }
else if (w > maxw)        // Browserfenster breiter als maxw
                          // Dann die Hälfte des Restes als Rand rechts/links verteilen
{
  m = (w - maxw) / 2;
  r = m;
  m = Math.floor (m / w * 100);
}
else                      // Browserfenster breiter als minw und schmaler als maxw
                          // Es wird dann von minw bis maxw zunehmend bis diffw ein Rand eingebaut
  {
  m = 1 - (maxw - w)/diffw;
  /* gibt bei w nahe minw nahe 0, bei w = maxw 1. */
  m = 1+9*m;
  m = Math.log(m)/Math.log(10)*diffw/2;  // logarithmische Funktion, das wird nicht gleichmäßig aufgebaut...
  r = m;
  m = m/w*100;
  }

m = m + "%";
el.style.marginLeft = m;
el.style.marginRight = m;

randwert = r;


if (r > 20)
  {
  var offset = -Math.min (Math.floor (r/3),90);
  /* links stehende */

  menu_position();
  madonna_position(r);

  for (i=0; i<bild_cnt; i++)
    {
    picfit2 (bild_ids[i],0,0);
    }
  }
}

/*
   PARAMVALUE

   Der fs-Parameter für die Schriftgröße wird bei allen Links, bei denen er schon vorhanden
   ist, gemäß eingestelltem design_faktor gesetzt.

*/
function paramvalue(ps)
/* Schriftgröße setzen. Alle a-Tags der Seite mit einem vorhandenen Parameter &fs=...
  werden mit dem neuen Parameter gesetzt (&fs=... muss also vorhanden sein...) */
{
  var urls = Array ();
  urls = document.getElementsByTagName("a");
//  erstmal alle evtl. in der Seite vorhandenen Links
  var i=0;
  var j=0;
  for (i=0; i < urls.length; i++)
    {
      j = urls[i].href.indexOf("&fs=");
      if (j >= 0)  // Parameter schon vorhanden
        {
          turl1 = urls[i].href.substr(0,j);
          turl2 = urls[i].href.substr(j+5);
          urls[i].href = turl1+"&fs="+ps+turl2;
        }
    }
// jetzt noch das menu
  i=0;
  var ms = document.getElementById("menu").innerHTML;
  j = menustring.indexOf("&fs=");
  var k=menustring.substr(j+4,1);
//  alert (k+"  -->  "+ps);
  if (k != ps)
  {
    k=menustring.substr (j,5);
    while (j >=0 )
    {
      turl1 = menustring.substr(0,j);
      turl2 = menustring.substr(j+5);
      menustring = turl1+"&fs="+ps+turl2;
//      alert (menustring);
      j = menustring.indexOf(k);
    }
  }

}

function getWindowWidth(WinObjekt)
{
  return WinObjekt.innerWidth ? WinObjekt.innerWidth : WinObjekt.document.body.clientWidth;
}


function getWindowHeight(WinObjekt)
{
  return WinObjekt.innerHeight ? WinObjekt.innerHeight : WinObjekt.document.body.clientHeight;
}

function my_screenh()
{
  var mh = getWindowHeight(window) - 250;   // ist nur ein halbwegs passender Wert...
  if (mh < 0) mh = 10;
  return mh;
}


var go_url = "";         // zur Zeit
function seturl (s)      // nicht
{ go_url = s; }          // benutzt


function calcjahr(wert)
{
var eins = wert.getYear();
var zwei = eins % 100;
zwei += (zwei < 38) ? 2000 : 1900;
return zwei;
}

function mach_titel (akt_datum,p)
/*  Titel und Fußbereich erzeugen, man macht das hier halt einmal für alle Seiten,
    dann sind auch Änderungen recht simpel einzupflegen...
    Die if-Abfrage: weil man diese Funktion dann auch aufrufen kann, wenn mal das
    eine, mal das andere fehlt, ohne dass dabei ein Fehler auftritt...
    Übergeben wird in s entweder eine Bezeichnung ("Mitteilungen"...) für die Seite, oder auch eine html-Anweisung, z.B.
    wenn man dort ein Bild einbauen will... In p wird der relative Pfad zum Logo übergeben
*/
{
home_path = p;
var t = '<img src="'+home_path+'grafiken/madonna_mit_logo.png" border="0" alt="Logo der Liebfrauenschwestern\nund\nMarienstatue\nin der\nMutterhauskirche" title="Logo der Liebfrauenschwestern\nund\nMarienstatue\nin der\nMutterhauskirche">';

var el = document.getElementById("madonna");
if (el) { el.innerHTML = t;}

    t = '<table>'
      +  '<tr>'
      +    '<td colspan="3">'
      +    '<span>www.</span>'
      +    '<strong>liebfrauenschwestern</strong>'
      +    '<span>.de<br>Homepage der Liebfrauenschwestern Belm&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span onclick="window.location.href=\'index.php?pageid=kontakt.php&fs=1\'" style="cursor:pointer">Impressum/Kontakt</span>'
      +    '</td>'
      +  '</tr>'
      +  '<tr>'
      +    '<td>'
      +    '<span><strong>Siehe, ich bin die Magd des Herrn, mir geschehe nach deinem Wort.</strong> (Lk 1,38)</span>'
      +    '</td>'
      +    '<td>'
      +    '&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'
      +    '</td>'
      +    '<td>'
      +    '</td>'
      +  '</tr>'
      +  '<tr>'
      +    '<td colspan="3">'
      +    '<span>'+akt_datum+'<br></span>'
      +    '<div id="seitenname">'+seitenname+'</div>'
      +    '</td>'
      +  '</tr>'
      + '</table>';

el = document.getElementById("kopf");
if (el) { el.innerHTML = t; }

marginfit();

if (document.getElementById("fuss"))  document.getElementById("fuss").innerHTML = '<center>&copy; '+akt_jahr_copy+' Liebfrauenschwestern Belm</center>';

/*
if (document.getElementById("fuss"))  document.getElementById("fuss").innerHTML = '<center>&copy; 2008 Liebfrauenschwestern Belm</center>';
*/

var parameter = new Array();
parameter = VArgumente();
var psize = 1;
if (parameter['fs']) var psize=parameter['fs'];
if ((psize < 0) || (psize > 2)) {psize=1;}
design_faktor = psize;
paramvalue(design_faktor);
emsTweak();
}

function Argumente()
{
  var arg = new Array();
  var location = window.location.search;
  if (location.length > 0)
  {
    location = location.substr(1, location.length - 1);
    arg = location.split("&");
  }
  else
  {
    arg[0] = false;
  }
  return arg;
}

function VArgumente()
// Argumente auslesen und im Array speichern
{
  var erg = new Array();
  var arg = new Array();

  var location = window.location.search;
  if (location.length > 0)
  {
    location = location.substr(1, location.length - 1);

    var erg = location.split("&");

    for (var i=0; i<erg.length; i++)
    {
      var x = new Array();
      x = erg[i].split("=");
      arg[x[0]] = x[1];
    }
  }
  else
  {
    arg[0] = false;
  }

  return arg;
}

var base64s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

function base64_encode(decStr)  // Dank an Dr. Web...
{
 var i = 0;
 var encOut = '';
 while(decStr.length >= i + 3)
 {
  bits = (decStr.charCodeAt(i++) & 0xff) << 16 |
         (decStr.charCodeAt(i++) & 0xff) <<  8  |
          decStr.charCodeAt(i++) & 0xff;
  encOut += base64s.charAt((bits & 0x00fc0000) >> 18) +
            base64s.charAt((bits & 0x0003f000) >> 12) +
            base64s.charAt((bits & 0x00000fc0) >>  6) +
            base64s.charAt((bits & 0x0000003f));
 }
 if(decStr.length -i > 0 && decStr.length -i < 3)
 {
  var dual = Boolean(decStr.length -i -1);
  bits = ((decStr.charCodeAt(i++) & 0xff) << 16) |
         (dual ? (decStr.charCodeAt(i) & 0xff) <<  8 : 0);
  encOut += base64s.charAt((bits & 0x00fc0000) >> 18) +
            base64s.charAt((bits & 0x0003f000) >> 12) +
            (dual ? base64s.charAt((bits & 0x00000fc0) >> 6) : '=') +
            '=';
 }
 return(encOut);
}

function base64_decode(encStr)  // Dank an Dr. Web...
{
 var decOut = '';
 var i = 0;
 var bits=0;
 var decout="";
 for(i=0; i<encStr.length; i += 4)
 {
  bits = (base64s.indexOf(encStr.charAt(i))    & 0xff) << 18 |
         (base64s.indexOf(encStr.charAt(i +1)) & 0xff) << 12 |
         (base64s.indexOf(encStr.charAt(i +2)) & 0xff) <<  6 |
          base64s.indexOf(encStr.charAt(i +3)) & 0xff;
  decOut += String.fromCharCode((bits & 0xff0000) >> 16, (bits & 0xff00) >> 8, bits & 0xff);
 }
 if(encStr.charCodeAt(i -2) == 61)
 {
  return(decOut.substring(0, decOut.length -2));
 }
 else if(encStr.charCodeAt(i -1) == 61)
 {
  return(decOut.substring(0, decOut.length -1));
 }
 else {return(decOut)};
}

function datum_gueltig (dat)
// erwartet Datumsangabe als String TT.MM.JJJJ
// Prüft, ob das ein gültiges Datum ist
{
var tagtemp = dat.substr(0,2);
var montemp = dat.substr(3,2);
var jahtemp = dat.substr(6,4);
var dtemp = new Date(jahtemp,montemp-1,tagtemp);
var c1 = dtemp.getDate()-tagtemp;
var c2= dtemp.getMonth()+1-montemp;
var c3=dtemp.getYear()-jahtemp;
if ((c1!=0) || (c2!=0) || (c3!=0)) { return false; } else { return true; }
}
