//--------------------------------------------------------------
// file: javascript.js
// Hier sind alle JavaScript funktionen
// die für diese Homepage benötigt werden gesammelt.
//--------------------------------------------------------------



//-------------------------------------------------
// AJAX - lädt den Inhalt 
var issent=false, global_aim, last_main, last_submain, reload_symbol=true, my_history=true, newsletter_div_id;

function reload_last()
{
  if (global_aim == 'main')
    read_file(last_main, 'main');
  if (global_aim == 'submain')
    read_file(last_submain, 'submain');
}

function sub_read_file(file)
{
  read_file(file, 'submain');
}
function read_file(file, aim) 
{
  global_aim = aim;

  if (document.location.href.split("#")[1] != file)
  {
    if (my_history == true)
      document.location.href = "#"+file;
  }
  url = document.location.href;

  if (aim == 'main')
    last_main = file;
  if (aim == 'submain')
    last_submain = file;

  if (reload_symbol == true)
  {  
    if (document.getElementById('submain'))
      document.getElementById('submain').innerHTML = "<br><br><center><b>Seite wird geladen...</b><br><br><img src=\"bilder/loading.gif\"><center>";
    else
      document.getElementById('main').innerHTML = "<br><br><center><b>Seite wird geladen...</b><br><br><img src=\"bilder/loading.gif\"><center>";
  }
  var myAjax1   = new Ajax.Request(file, { onComplete: zeige_main });
  issent        = true

  reload_symbol = true;
  my_history = true;
} 
function zeige_main( originalRequest ) 
{
  document.getElementById(global_aim).innerHTML = code(originalRequest.responseText);
  document.login_form.user.focus();
}


//-------------------------------------------------
// Überprüft nach einer Vorgegebenen Zeit die URL im Browser 
// sollte sich diese ändern wird die Seite dementsprechend geändert.

var url, n=0;
function checkUrl()
{
  //n++;
  if (document.location.href != url)
  {
    url = document.location.href;
    var array = document.location.href.split("#");
    //document.title = n+" LOAD";
    read_file(array[1], "main");
  }
  //document.title = n+" Aichfelder Christenzentrum";
  setTimeout("checkUrl()", 500);
}

//-------------------------------------------------
// Ladesymbol ausschalten

function loadsymbol_off()
{
  reload_symbol = false;
} 

//-------------------------------------------------
// hostory, OFF #file in der Url

function historay_off()
{
  my_history = false;
} 

//-------------------------------------------------
// AJAX - Formular Post
  
function ajax_post(file, form_id, aim) 
{ 
  if (form_id == "login_form" || form_id == "admin_main")
  {
    var str = document.login_form.pass.value;
    document.login_form.pass.value = MD5(str);
  }
  global_aim = (aim)? aim : 'main';

  var myAjax = new Ajax.Request(file, { method: 'post', encoding: 'UTF-8', parameters: Form.serialize($(form_id)), onComplete: zeige_main }); 

  if (document.getElementById('submain'))
    document.getElementById('submain').innerHTML = "<br><br><center><b>Seite wird geladen...</b><br><br><img src=\"bilder/loading.gif\"><center>";
  else
    document.getElementById('main').innerHTML = "<br><br><center><b>Seite wird geladen...</b><br><br><img src=\"bilder/loading.gif\"><center>";
} 

//-------------------------------------------------
// AJAX - Formular Post - Newsletter
  
function newsletter_post(div_id) 
{
  newsletter_div_id = (div_id)? div_id : "newsletter";
  var newsletter_form = (div_id)? document.newsletter_main.mail.value : document.newsletter_form.mail.value;
  var newsletter_name = (div_id)? "newsletter_main" : "newsletter_form";
  if (newsletter_form != " E-mail")
  {
    var file = "module/email/abo_add.php";
    var myAjax = new Ajax.Request(file, { method: 'post', encoding: 'UTF-8', parameters: Form.serialize($(newsletter_name)), onComplete: newsletter_complete }); 
  }
} 
function newsletter_complete(originalRequest) 
{
  document.getElementById(newsletter_div_id).innerHTML = "<br /><h1>Newsletter</h1>Gespeichert!";
  setTimeout("document.getElementById(newsletter_div_id).innerHTML = '';", 4000);
} 

//-------------------------------------------------
// Ruft ein File auf ohne Request

function call_file(file) 
{
  var myAjax1 = new Ajax.Request(file);
} 

//-------------------------------------------------
// Dient als Abfrage für Löschvorgänge

function loeschen_confirm(file, aim) 
{
  global_aim = (aim)? aim : 'main';

  if (confirm("Wirklich löschen?") == true)	
    var myAjax = new Ajax.Request(file, { onComplete: zeige_main });
}

//-------------------------------------------------
// PopUp

function PopUp(name, href, width, height, scrollbar)
{
  var obj = new Object();
  obj.width  = (window.outerWidth)  ? window.outerWidth  : document.body.offsetWidth;
  obj.height = (window.outerHeight) ? window.outerHeight : document.body.offsetHeight;
  var scrollbar = (scrollbar) ? "scrollbars=yes"   : "scrollbars=no";
  var name      = (name)      ? name               : "PopupFenster";
  if (width  < 0) width  = obj.width  * 0.95;
  if (height < 0) height = obj.height * 0.85;
  obj.left   = Math.floor((obj.width  - width)  / 2);
  obj.top    = Math.floor((obj.height - height) / 2);
  obj.width  = width;
  obj.height = height;
  

  var param = "left="+obj.left+",top="+obj.top+",width="+obj.width+",height="+obj.height+",toolbar=no,menubar=no,location=no,"+scrollbar+",resizable=no,dependent=no";
  var SubWindow = window.open(href, name, param);
  //alert(param);
  //SubWindow.moveTo(obj.left,obj.top);
  SubWindow.focus();
}

//-------------------------------------------------
// Diese Funktion kann eine Datei sofort als
// Download zur Verfgung stellen.

function send_file(id)
{
  var href = "include/send_file.php?id="+id;
  window.location.href = href;
}

//-------------------------------------------------
// Codes werden in AJAX Requensts eingebettet und
// mit dieser Funktion abgefangen und es wird dem
// entsprechend reagiert.

function code(str)
{
  laenge = (parseInt(str.length));
  //alert(str.substr(laenge-8, laenge));
  str2 = str.substr(laenge-8, laenge);
  var codierung=false;
  if(str2 == "reload**")               { document.location="index.php";                                                      codierung=true; }
  else if(str2 == "start***")          { document.location.reload(); read_file('loginbereich/log_linker.php?id=27', 'main'); codierung=true; }
  else if(str2 == "loginfor")          { setTimeout("read_file('main/login_form.php', 'main')", 2000);                       codierung=true; }
  else if(str2 == "goadm_i0")          { setTimeout("read_file('admin/admin_inhalt_id0.php', 'main')", 800);                 codierung=true; }
  else if(str2 == "gonachri")          { setTimeout("read_file('loginbereich/log_linker.php?id=11', 'main')", 800);          codierung=true; }
  else if(str2 == "kalender")          { setTimeout("read_file('module/kalender/kalender.php?id=107', 'main')", 800);        codierung=true; }
  else if(str2 == "reldmain")          { setTimeout("read_file('"+last_main+"', 'main')", 800);                              codierung=true; }
  else if(str2 == "reldsbma")          { setTimeout("read_file('"+last_submain+"', 'submain')", 800);                        codierung=true; }
  else if(str2 == "reldlast")          { setTimeout("reload_last()", 800);                                                   codierung=true; }
  else if(str2 == "writeics")          { call_file("/module/kalender/make_ics.php");                                         codierung=true; }
  else if(str2.substr(0,6) == "maxlen"){ read_file('main/linker.php?part='+str2.substr(6, 2), 'main');                       codierung=true; }
  else if(str2.substr(0,2) == "go")    { setTimeout("read_file('main/linker.php?id="+str2.substr(2,8)+"', 'main')", 800);    codierung=true; }
  else if(str2.substr(0,3) == "gal")   { read_file('module/galerie/miniaturansicht.php?folder_id='+str2.substr(3,8), 'submain');codierung=true; }

  if(codierung == true)
  {
    return str.substr(0,laenge-8);
    alert(str2);
  }
  else
    return str;
}

//-------------------------------------------------
// Funktion um JavaScript Funktionen aus Flash aufzurufen

var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the FSCommand messages in a Flash movie.
function fscommand_DoFSCommand(command, args) 
{
  var fscommandObj = (isInternetExplorer) ? document.all.fscommand : document.fscommand;
  if(command=="div_show") 
    div_show(args);	
  if(command=="read_file") 
    read_file(args, 'main');	
}

//-------------------------------------------------
// Ein und Ausklappen von UNtermenüs um Submenü
// Siehe Bsp: Ordnerbaum

function menuetree_open(id)
{
  if(document.getElementById(id))
  {
    document.getElementById(id).style.display = '';
    document.getElementById(id+"_pic").src    = '../img/folder_opend.png';
  }
}
function menuetree_close(id)
{
  if(document.getElementById(id))
  {
    document.getElementById(id).style.display = 'none';
    document.getElementById(id+"_pic").src    = '../img/folder_closed.png';
  }
}

//-------------------------------------------------
// Dokument weiterleitung

function link_to(url) 
{
  window.open(url);
} 

//-------------------------------------------------
// Mouseover Bild anzeigen

// Für jeweilige Datei: document.onmousemove = updateMausPosition;
// aufrufen mit:        picDivShow('bildurl');
// ausblenden mit:      picDivHide();
var picDiv;

function MM_preloadImages() 
{ 
  	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 picDivShow(imgPath, height, width) 
{

  //if(document.getElementsByName("show")[0].checked == true )
  //{
    varPicDiv = document.getElementById('picDiv');
    varPicDiv.style.display = "";
    MM_preloadImages(imgPath);
    varPicDivImg = document.picDivImg;
 	  varPicDivImg.src = imgPath;
 	  varPicDivImg.height = height;
 	  varPicDivImg.width  = width;
	//}
}

function picDivHide() 
{
  varPicDiv = document.getElementById('picDiv');
  varPicDivImg.src = '../images/loading.gif';
  varPicDiv.style.display = "none";
  document.getElementById('picDivHtml').InnerHtml = "Hallo<img src=\"main.asp-Dateien/picload.gif\" id=\"picDivImg\" >";
}


function updateMausPosition(e) 
{
  varPicDiv = document.getElementById('picDiv');
  if(varPicDiv)
  {
    x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
    y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;
    if(x >= 3000000)
    {
      picDivHide();
    }
    if (varPicDiv.style.display != "none")
    {
      varPicDiv.style.left = (x + 30) + "px";
      varPicDiv.style.top  = (y - 100) + "px";
    }
  }
}

document.onmousemove = updateMausPosition;

//----------------------------------------------------------------------------
// Errechnen der Position (in pxl) einer Tabellen Zelle

function getPosition(element)
{
  var elem=element,tagname="",x=0,y=0;
  
/* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */

/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if (tagname=="BODY")
      elem=0;

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

//----------------------------------------------------------------------------
// Ausgeben der Position  (ruft getPosition auf)
var alertPositionDiv, alertPositionDivTxt, div_an;

function alertPosition(elementId, top, left, div, url, iframe, text)
/* gibt eine Meldung mit x und y des zu elementId gehoerenden Elements aus */
{
  MenuHide2(menu_id)
  var a,element,fenster;
  alertPositionDiv    = div;
  alertPositionDivTxt = div+"_txt";

  /* Element-Objekt zur ID ermitteln */
  element=document.getElementById(elementId);
  fenster=document.getElementById(div);

  /* Position bestimmen und melden */
  a=getPosition(element);
  fenster.style.display = "";
  fenster.style.left = a.x+top+"px";
  fenster.style.top  = a.y+left+"px";

  if (url && !iframe && !text)
  {
    document.getElementById(alertPositionDivTxt).innerHTML = "";
	alertPositionAjax(url);
  }
  if (iframe)
    document.getElementById(alertPositionDivTxt).innerHTML = "<iframe src=\""+url+"\" width=\"400px\" height=\"370px\" frameborder=\"0\">";
  if (text)
    document.getElementById(alertPositionDivTxt).innerHTML = text;
  
  var opacity = 0;
  xfade_fenster();
  function xfade_fenster()
  {
    opacity+= 0.12;
    fenster.xOpacity = opacity;
    fenster.style.opacity = fenster.xOpacity;
    fenster.style.MozOpacity = fenster.xOpacity;
	fenster.style.filter = "alpha(opacity=" + (fenster.xOpacity*100) + ")";
    if (opacity < 1)
	  div_an = window.setTimeout(xfade_fenster,60);
    else
      window.clearTimeout(div_an);
  }
}
function close_div(div)
{
  fenster=document.getElementById(div);
  var opacity = 1;
  xfade_fenster();
  function xfade_fenster()
  {
    opacity-= 0.16;
    fenster.xOpacity = opacity;
    fenster.style.opacity = fenster.xOpacity;
    fenster.style.MozOpacity = fenster.xOpacity;
	fenster.style.filter = "alpha(opacity=" + (fenster.xOpacity*100) + ")";
    if (opacity > 0)
	  div_an = window.setTimeout(xfade_fenster,60);
	else
    {
      fenster.style.display = "none";
      window.clearTimeout(div_an);
	}
  }	
}

function xfade_fenster_1(div)
{  
  fenster=document.getElementById(div);
  opacity = 1;
  fenster.xOpacity = opacity;
  fenster.style.opacity = fenster.xOpacity;
  fenster.style.MozOpacity = fenster.xOpacity;
  fenster.style.filter = "alpha(opacity=" + (fenster.xOpacity*100) + ")";
  if (opacity < 1)
   div_an = window.setTimeout(xfade_fenster,60);
  else
    window.clearTimeout(div_an);
}

function alertPositionAjax(url) 
{
  var myAjax = new Ajax.Request(url, { onComplete: alertPositionAjaxResult });
}
function alertPositionAjaxResult( originalRequest ) 
{
  document.getElementById(alertPositionDivTxt).innerHTML = code(originalRequest.responseText);
}

function set_user_right(id, right, safe, url, element_name)
{
  if (safe == "plus")
    var list_id = element_name;
  if (safe == "minus")
  {  
    if (right == 9)
	  var list_id = element_name+"_deny";
    if (right == 1)
	  var list_id = element_name+"_adm";
    if (right == 2)
	  var list_id = element_name+"_wr";
  }
  if (document.getElementById(list_id).selectedIndex >= 0)
  {
    var index   = document.getElementById(list_id).selectedIndex;
    var user_id = document.getElementById(list_id)[index].value;
    alertPosition("ue2_menu", 350, 20, "ajaxdiv", url+"?id="+id+"&"+element_name+"_id="+user_id+"&right="+right+"&safe="+safe);
  }
}
function adm_gruppe_set(id, safe) 
{
  if (safe == "plus")
  {
    if (document.getElementById("user").selectedIndex >= 0)
    {
	  var index   = document.getElementById("user").selectedIndex;
      var user_id = document.getElementById("user")[index].value;
	}
  }
  else
  {
    if (document.getElementById("gruppe").selectedIndex >= 0)
    {
      var index   = document.getElementById("gruppe").selectedIndex;
      var user_id = document.getElementById("gruppe")[index].value;
	}
  }
  
  if (user_id)
  {
    var url = "verwaltung/admin_gruppe_form.php?id="+id+"&user_id="+user_id+"&safe="+safe;
    read_file(url, 'submain');
  }
}




//----------------------------------------------------------------------------
// Dropdown Menü Funktionen
var an, menu_id;
function MenuShow(id, left, top) 
{

  if(menu_id != id) MenuHide2(menu_id);

  window.clearTimeout(an);
  var menuDiv = document.getElementById(id);
  if (menuDiv)
  {  
	var opacity = 0;
	menuDiv.className = "menue_drop_mover";
    top = document.getElementById("menue").offsetHeight;
    a=getmenuPosition(document.getElementById(id+"_menu"));
    menuDiv.style.left = a.x+left+"px";
    if(menu_id != id) xfade_menu();
    //menuDiv.style.top  = a.y+top +"px";
  }
  //if (document.getElementById('ajaxdiv'))
    //document.getElementById('ajaxdiv').style.display='none'
  //alert("Top: "+top+"\nTopneu: "+a.y+top);

  function xfade_menu()
  {
    opacity+= 0.12;
    menuDiv.xOpacity = opacity;
    menuDiv.style.opacity = menuDiv.xOpacity;
    menuDiv.style.MozOpacity = menuDiv.xOpacity;
	menuDiv.style.filter = "alpha(opacity=" + (menuDiv.xOpacity*100) + ")";
    if (opacity < 1)
	  an = window.setTimeout(xfade_menu,60);
    
  }
}
function getmenuPosition(element)
{
  var elem=element,tagname="",x=0,y=0;
  
/* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */

/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if (tagname=="TABLE")
      elem=0;

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

function MenuHide(id) 
{
  menu_id = id;
  if (document.getElementById(id+'_menu'))
    document.getElementById(id+'_menu').className = "menuetxt_mover";

  var menuDiv = document.getElementById(id);
  if (menuDiv)
  {
    window.clearTimeout(an);
    var opacity = 1;
	xfade_menu_off();
  }
  else
    MenuHide2(id);

  function xfade_menu_off()
  {
    opacity-= 0.16;
    menuDiv.xOpacity = opacity;
    menuDiv.style.opacity = menuDiv.xOpacity;
    menuDiv.style.MozOpacity = menuDiv.xOpacity;
	menuDiv.style.filter = "alpha(opacity=" + (menuDiv.xOpacity*100) + ")";
    if (opacity > 0)
  	  an = window.setTimeout(xfade_menu_off,60);  
    else
  	  MenuHide2(id);
  }
  
  
//  an = window.setTimeout("MenuHide2("+id+")", 400);
}
function MenuHide2(id) 
{
  menu_id = 0;
  if (document.getElementById(id+'_menu'))
    document.getElementById(id+'_menu').className = "menuetxt";
  
  if (document.getElementById(id))
    document.getElementById(id).className = "menue_drop";
  //document.getElementById('ajaxdiv').style.display=''

}

//----------------------------------------------------------------------------
// Administration - Auswahl Menü Dropfeld

function adm_drop_zeige_main(url, id) 
{
  if(!id)
  {
    index = document.getElementById("drop_menu").selectedIndex;
    id    = document.getElementById("drop_menu")[index].value;
    read_file(url+"?id="+id, 'submain');
  }
  else
    read_file(url, 'submain');

  if (document.getElementById('ajaxdiv'))
    document.getElementById("ajaxdiv").style.display = "none";

}

//----------------------------------------------------------------------------
// Administration - Auswahl Menü Dropfeld
var vorhanden, benutzerdaten_fehler = 0;
function benutzerdaten_pruefen() 
{ 
  var user  = document.getElementById('user').value;
  var pass  = document.getElementById('pass').value;
  var pass2 = document.getElementById('pass2').value;
  var mail  = document.getElementById('mail').value;

  benutzerdaten_fehler = 0;
  
  if (user!="")
  {
    var file = "include/ajax_anfragen.php?typ=1&user="+user;
    var myAjax  = new Ajax.Request(file, 
    { 
      onComplete:function(originalRequest){ 
        vorhanden=originalRequest.responseText;
        if (vorhanden == 'true')
        {
          alert("Dieser Benutzername wird bereits von einer anderen Person verwendet!\nGeben Sie bitte einen anderen ein.");
          benutzerdaten_falsch('user');
		}
        else
          benutzerdaten_richtig('user', user);
      }  
    });
  }
  else
    benutzerdaten_falsch('user');
  
  if (pass == pass2)
  {
    if (pass!="")
      benutzerdaten_richtig('pass', pass);
    else
      benutzerdaten_falsch('pass');
    if (pass2!="")
      benutzerdaten_richtig('pass2', pass2);
    else
      benutzerdaten_falsch('pass2');
  }
  else
  {	
    alert("Die beiden Passwörter stimmen nicht überein!\nBitte versuchen Sie es erneut.");
	benutzerdaten_falsch('pass');
	benutzerdaten_falsch('pass2');
    document.getElementById('pass').value = "";
    document.getElementById('pass2').value = "";
  }
  if (mail!="")
    benutzerdaten_richtig('mail', mail);
  else
    benutzerdaten_falsch('mail');

  setTimeout("set_anmeldebtn()", 1000);
}
function benutzerdaten_richtig(feld, value)
{
  if(feld == 'pass' || feld == 'pass2')
    value = MD5(value);
  document.getElementById('field_'+feld).innerHTML = (feld == 'pass' || feld == 'pass2')? '********' : value;
  document.getElementById('field_'+feld).innerHTML+= "<input type='hidden' name='"+feld+"' id='"+feld+"' value='"+value+"' />";
  document.getElementById('field_'+feld).style.background = "";
}
function benutzerdaten_falsch(feld)
{
  benutzerdaten_fehler = 1;
  document.getElementById('field_'+feld).style.background = "#FF8364";
}
function set_anmeldebtn()
{
  if (benutzerdaten_fehler == 0)
  {
    document.getElementById('form').action = "javascript:ajax_post('main/anmelden_db.php', 'form');";
    document.getElementById('safe').value  = "Anmelden";    
  }
	
}
//-----------------------------------------------
// Nachrichtendienst Mails Markieren

function check_mail()
{
  var anz = document.getElementById("idall").value;
  var selected_mails = "";
  for (i=1; i<=anz; i++)
    if (document.getElementById("id"+i).checked) selected_mails+= document.getElementById("id"+i).value+"|";

  document.getElementById("selected").value = selected_mails;
}
function check_mail_all(anz)
{
  var attribute = document.getElementById("idall").checked;
  for (i=1; i<=anz; i++)
    document.getElementById("id"+i).checked=attribute;

  check_mail();
}

function del_mail(typ)
{
  var id_mails = document.getElementById("selected").value;
  loeschen_confirm('loginbereich/nachricht_entf.php?ids='+id_mails+'&typ='+typ, 'submain');
}

//-----------------------------------------------
// Div Hide and show

function div_show(id)
{
  document.getElementById(id).style.display='';	
}
function div_hide(id)
{
  document.getElementById(id).style.display='none';	
}

function str_replace(s, r, c) 
{
	if (is_array(s)) {
		for(i=0; i < s.length; i++) {
			c = c.split(s[i]).join(r[i]);
		}
	}
	else {
		c = c.split(s).join(r);
	}
	return c;
}
