﻿//###########################################################################################################
// Generelle Javascript Funktionen
//###########################################################################################################

//Events registrieren
addEvent(window,'resize',function(){setTimeout("resizeLayout()",500)});	
addEvent(window,'scroll',function(){setTimeout("resizeLayout()",500)});	

//Layout an Browserfenstergrösse anpassen
function resizeLayout()
{
  //Overlay an Grösse anpassen
  $('body .overlay').css('width',document.body.offsetWidth + 'px');
  $('body .overlay').css('height',document.getElementById('divLayout').offsetHeight + 'px');
  
  //Alle Detail-Dialoge mittig ausrichten
  $('.detail-dialog').each(function()
  { 
	positionDetailsDialog($(this).attr('id'));
  });  
  
  //Temp. Elemente anzeigen wenn Debug aktiv und der Bildschirm genug breit ist
  showDebugTempElements();
}



//***********************************************************************************************************
// Form Handling
//***********************************************************************************************************
//Gedrückte Tasten überwachen
if (document.attachEvent)
	document.attachEvent("onkeydown",keyDownEvents);
else if (document.addEventListener)
	document.addEventListener("keydown",keyDownEvents,false);

//Wenn die Seite in einem Frame/iframe geladen wird, ausbrechen
if (window.location != window.parent.location)
{
  window.parent.location  = window.location;
}

//Gedrückte Tasten an Funktionen zuordnen
function keyDownEvents(e)
{
  if (window.event)
    var keynum = window.event.keyCode;
  else if (e.which)
    var keynum = e.which;

  //ENTER Taste, Funktion ausführen die im "btnSubmit" definiert ist
  if (keynum == 13)
  {
	if (document.getElementById('btnSubmit'))
	{
	  if (document.getElementById('btnSubmit').disabled == false)
	  {
		var onclick = String(document.getElementById('btnSubmit').onclick);
		onclick = onclick.replace('function onclick(event) {','');
		onclick = onclick.replace('function onclick()','');
		onclick = onclick.replace('function anonymous()','');
		onclick = onclick.replace('function (event)','');
		onclick = onclick.replace('}','');
		onclick = onclick.replace('{','');
		eval(onclick);
      }
	}
  }
  
  //ESC Taste, Dialog schliessen
  if (keynum == 27)
  {
	if (document.getElementById('frmDialogForm'))
	  hideDetailsDialog('');
	if (document.getElementById('divHauptkategorieName'))
	  hideKategorieNav();
  }
}



//***********************************************************************************************************
// Debug
//***********************************************************************************************************
//Temp. Elemente anzeigen wenn Debug aktiv und der Bildschirm genug breit ist
function showDebugTempElements()
{
  var debug = getCookie('Debug');
  if (debug == 1)
  {
    if (document.body.offsetWidth > 1880)
	{
	  $('#divTemp').show();
	  $('#ifrmTemp').show();
	}
    else
	{
	  $('#divTemp').hide();
	  $('#ifrmTemp').hide();
	}
  }
}



//***********************************************************************************************************
// Dialog Funktionen
//***********************************************************************************************************
//Dialog und Blackscreen ausblenden
function hideDetailsDialog(dialogName)
{
  //dialogName Variable für spätere Verwendungszwecke falls es mal ein Thema wird dass mehrere Dialoge gleichzeitig existieren
  if (dialogName == '')
    dialogName = 'divDialog';
    
  //Dialog entfernen
  $('#' + dialogName).remove();
  
  //Overlay entfernen
  if (dialogName == 'divDialog')
	$('body .overlay').remove();
  else
  {
	$('#divDialog').fadeToggle(500);
	positionDetailsDialog('divDialog');
  }
}

//Dialog und Blackscreen anzeigen
function showDetailsDialog(dialogName,dialogForm,dialogBreite)
{  
  if (dialogName == '')
    dialogName = 'divDialog';
	
  if (dialogForm == '')
    dialogForm = 'frmDialogForm';

  if (dialogBreite == '')
    dialogBreite = 800;

  //Falls Dialog noch vorhanden zuerst entfernen
  if (document.getElementById(dialogName))
	$('#' + dialogName).remove();
    
  //Details Form dynamisch erstellen
  attachNode('body','div',dialogName,'standard',0,0);
    
  //Dialog anpassen
  $('#' + dialogName).attr('class','detail-dialog');
  $('#' + dialogName).css('width',dialogBreite);
  $('#' + dialogName).css('left',(document.body.offsetWidth-dialogBreite)/2);
  
  //Form innerhalb des Dialogs erstellen
  attachNode(dialogName,'form',dialogForm,'standard',0,0);
  $('#' + dialogForm).attr('onsubmit','return false');
  $('#' + dialogForm).attr('action','');
  $('#' + dialogForm).css('display','block');

  //Schliessen Grafik einbinden
  $('#' + dialogName).append('<img id="imgClose_' + dialogName + '" src="/images/dialog/dialog-close.png" alt="" class="image-close" />');
  document.getElementById('imgClose_' + dialogName).onclick = new Function("hideDetailsDialog('" + dialogName + "')");
  $('#element').attr('src','');
  $('#imgClose_' + dialogName).show();
  
  //Anzeigen
  $('#' + dialogName).show();
  
  //Mittig positionieren
  window.setTimeout("positionDetailsDialog('" + dialogName + "')",1000);
  
  //Overlay hinzufügen oder divDialog ausblenden
  if (dialogName == 'divDialog')
	addOverlay(dialogName);
  else
    $('#divDialog').fadeToggle(500);
}

//Detail Dialog mittig auf dem Bildschirm plazieren
function positionDetailsDialog(dialogName)
{
  if (dialogName == '')
    dialogName = 'divDialog';

  if (document.getElementById(dialogName))
  {
	var dialogWidth = document.getElementById(dialogName).offsetWidth;
	var dialogHeight = document.getElementById(dialogName).offsetHeight;
	
	//Scroll Höhe berücksichtigen
	var scrollTop = document.documentElement.scrollTop;
	if (scrollTop == 0)
	  scrollTop = document.body.scrollTop;
  
	//Andere Browser
	document.getElementById(dialogName).style.left = Math.round((document.body.offsetWidth-dialogWidth)/2) + 'px';
	document.getElementById(dialogName).style.top = Math.round((document.body.offsetHeight-dialogHeight)/2)+scrollTop + 'px';

	//Dialog anzeigen
	document.getElementById(dialogName).style.visibility = 'visible';
  }
}

//Overlay einblenden
function addOverlay(dialogName)
{
  //Wenn kein Dialog-Name übergeben wurde den Blackscreen auf den Body anwenden
  $('body').append('<div class="overlay"></div>');
  $('body .overlay').css('width',document.body.offsetWidth + 'px');
  $('body .overlay').css('height',document.getElementById('divLayout').offsetHeight + 'px');
  $('body .overlay').fadeIn(100);
}

//Detail Dialog sperren
function lockDetailDialog(dialogName)
{  
  if (dialogName == '')
    dialogName = 'divDialog';

  $('#' + dialogName).append('<div class="dialog-overlay"></div>');
  $('#' + dialogName + ' .dialog-overlay').css('width',$('#' + dialogName).outerWidth()-10);
  $('#' + dialogName + ' .dialog-overlay').css('height',$('#' + dialogName).outerHeight()-10);
  $('#' + dialogName + ' .dialog-overlay').show();
  $('#' + dialogName + ' .image-close').css('display','none');
}

//Detail Dialog entsperren
function unlockDetailDialog(dialogName)
{ 
  if (dialogName == '')
    dialogName = 'divDialog';

  $('#' + dialogName + ' .dialog-overlay').remove();
  $('#' + dialogName + ' .image-close').css('display','block');
}



//***********************************************************************************************************
// Loader, Progress und Benachrichtigung
//***********************************************************************************************************
//Upload Progress anzeigen
function showUploadProgress(formID,site,div)
{
  //Dialog sperren
  lockDetailDialog('');
	
  //Notification anzeigen
  showNotifier(0,'<img src="/images/icons/ajax-loader.gif" alt="" />Wird hochgeladen...');
  
  //Formular abschicken
  setTimeout("document.forms['" + formID + "'].submit()",1000);
}

//Benachrichtigung anzeigen
function showNotifier(hideTimeout,text)
{
  //Falls Notifier noch vorhanden zuerst entfernen
  if (document.getElementById('divNotifier'))
    removeNode('divNotifier');
	
  //Notifier DIV dynamisch erstellen
  attachNode('body','div','divNotifier','standard',0,0);
  document.getElementById('divNotifier').style.display = 'block';
  
  //Notifier Text hinzufügen
  $("#divNotifier").html(text);
  
  //Notifier einblenden
  $("#divNotifier").animate(
  { 
	bottom: '10px',
	opacity: 1.0
  },1200);
  
  //Notifier automatisch wieder ausblenden
  if (hideTimeout != 0)
  {
	$("#divNotifier").delay(hideTimeout).animate(
	{ 
	  bottom: '-100px',
	  opacity: 0
	},2700);
  }
}

//Benachrichtigung anzeigen
function showBrowserInfoLeiste(hideTimeout,text)
{
  //Falls Notifier noch vorhanden zuerst entfernen
  if (document.getElementById('divBrowserInfoLeiste'))
    removeNode('divBrowserInfoLeiste');
	
  //Notifier DIV dynamisch erstellen
  attachNode('body','div','divBrowserInfoLeiste','standard',0,0);
  document.getElementById('divBrowserInfoLeiste').style.display = 'block';
  
  //Notifier Text hinzufügen
  $("#divBrowserInfoLeiste").html(text);
  
  //Notifier einblenden
  $("#divBrowserInfoLeiste").animate(
  { 
	top: '0px',
	opacity: 1.0
  },100);
  
  //Notifier automatisch wieder ausblenden
  if (hideTimeout != 0)
  {
	$("#divBrowserInfoLeiste").delay(hideTimeout).animate(
	{ 
	  top: '-50px',
	  opacity: 0
	},2400);
  }
}



//***********************************************************************************************************
// Tab Handling
//***********************************************************************************************************
//Tab wechseln einleiten
function switchTab(tabID,url)
{
  if (document.getElementById('hdnSubmitURL').value != '' && document.getElementById('hdnRequiredFields'))
  {
	document.getElementById('hdnNextTabID').value = tabID;
	document.getElementById('hdnNextTabURL').value = url;
	
	//Durch alle TinyMCE Instanzen gehen, Content übernehmen und Instanz entfernen
	$('textarea.tinymce').each(function()
	{
	  $(this).attr('id').val = tinyMCE.get($(this).attr('id')).getContent();
	  tinyMCE.get($(this).attr('id')).remove();
	})
	
	if (document.getElementById('divTabSubmit'))
      submitForm(document.getElementById('hdnFormID').value,saveHTTPContent,document.getElementById('hdnSubmitURL').value,'divTabSubmit');
	else
      submitForm(document.getElementById('hdnFormID').value,saveHTTPContent,document.getElementById('hdnSubmitURL').value,'divTemp');
  }
  else
    showTab(tabID,url)
}

//Tab wechseln
function showTab(tab,url)
{  
  var formID = document.getElementById('hdnFormID').value;
  
  //Dialog Form Eigenschaften zurücksetzen
  if (document.getElementById(formID))
  {
	document.getElementById(formID).name = '';
	document.getElementById(formID).method = '';
	document.getElementById(formID).encoding = 'text/plain';
	document.getElementById(formID).action = '';
	document.getElementById(formID).target = '';
  }

  //Aktuellen aktive Tab auf normal zurücksetzen
  var tabstrip = document.getElementById('lstTabs');
  var tabs = tabstrip.getElementsByTagName("li");
  for (i=0; i<tabs.length; i++)
  {
	if (tabs[i].className == 'active')
	{
	  tabs[i].className = '';
	  var tabID = tabs[i].id.replace('tab','');
	}
  }

  //Angeklickten Tab auf aktiv setzen
  document.getElementById('tab' + tab).className = 'active';

  //Inhalt laden
  document.getElementById('hdnSubmitURL').value = url;
  getHTTPContent(url,'divTabContent','');
}



//***********************************************************************************************************
// Mini-Tab Handling
//***********************************************************************************************************
//Tab wechseln
function switchMiniTab(tabID,spracheAbk)
{ 
  $('#' + tabID + ' .strip li').removeClass('active');
  $('#' + tabID + ' .content li').hide();
  $('#' + tabID + ' .strip li.' + spracheAbk).addClass('active');
  $('#' + tabID + ' .content li.' + spracheAbk).show();

  if (document.getElementById('hdnFocusElementID').value != '')
    document.getElementById(document.getElementById('hdnFocusElementID').value + spracheAbk).focus();
}



//***********************************************************************************************************
// Home Kategorie Navigation
//***********************************************************************************************************
function showKategorieNav(nav)
{	
  //Alle Kategorie-Icon Platzhalter entfernen und richtige Kategorie-Icons laden
  $(nav).find('.placeholder').each(function()
  { 
    $(this).attr('src',$(this).attr('orginal'));
	$(this).removeClass('placeholder');
  });
  
  //Klick Event auf divLayout plazieren um Kategorie-Overlay mit einem Klick ausserhalb wegblenden zu können
  $(nav).children('.kategorien').fadeIn(500,function()
  {
    $('#divLayout').bind({ click: function(){ hideKategorieNav(); }});
  });
  
  $('#divHauptkategorieNavigation .kategorie-overlay').fadeIn(500); 
  $('#divHauptkategorieName').html($(nav).children('.hauptkategorie-name').html());
  $('#divHauptkategorieName').fadeIn(500); 
  $('#divKategorieAuswahlInfo').fadeIn(500); 
  $('#imgKategorieAuswahlClose').show(); 
}

function hideKategorieNav()
{	
  $('#divHauptkategorieNavigation .kategorie-overlay').fadeOut(500); 
  $('#divHauptkategorieName').fadeOut(500).html(''); 
  $('#divKategorieAuswahlInfo').hide(); 
  $('#imgKategorieAuswahlClose').hide(); 
  $('.kategorien').fadeOut(500,function()
  {
    $('#divLayout').unbind('click');
  });
}



//***********************************************************************************************************
// Login
//***********************************************************************************************************
//Login Dialog anzeigen
function login(errorID)
{
  showDetailsDialog('','',550);
  getHTTPContent('/de/_login.asp?ErrorID=' + errorID,'frmDialogForm','');
}

//Login abschicken
function loginSubmit()
{
  submitForm('frmDialogForm',saveHTTPContent,'/de/_login-submit.asp?Aufloesung=' + screen.width + 'x' + screen.height,'divSubmit');
}

//Logout
function logout()
{
  getHTTPContent('/de/_logout.asp','divTemp','');
}



//***********************************************************************************************************
// Mitglied registrieren
//***********************************************************************************************************
//Mitglied registrieren
function registerMitglied()
{
  showDetailsDialog('','','');
  getHTTPContent('/de/mitglied-registrieren/mitglied-registrieren.asp','frmDialogForm','');
}

//Mitglied registrieren Submit
function submitRegisterMitglied()
{
  if (document.getElementById('cbxAGB').checked == true)
	submitForm('frmDialogForm',saveHTTPContent,'/de/mitglied-registrieren/mitglied-registrieren-submit.asp','divSubmit');
  else
    $('#lblcbxAGB').addClass('text-rot');
}



//***********************************************************************************************************
// Diverses
//***********************************************************************************************************
//Login Status anzeigen
function showLoginStatus()
{
  getHTTPContent('/de/_login-status.asp?Aufloesung=' + screen.width + 'x' + screen.height,'divLoginStatus','');
}

//Mein Profil editieren
function editProfil()
{
  showDetailsDialog('','','');
  getHTTPContent('/de/profil/profil.asp','frmDialogForm','');
}

//Land wechseln
function switchLand(landAbk)
{
  getHTTPContent('/de/_change-land.asp?Land=' + landAbk,'divTemp','');
}

//Tour starten
function getTour()
{
  //Notifier anzeigen
  showNotifier(4000,'<img src="/admin/images/icons/accept.png" alt="" />Kommt bald, bitte gedulde Dich noch ein wenig.');
}

//Admin öffnen
function openAdmin()
{
  window.location.href = '/admin';
}

//Eingabe überprüfen
function checkInputValue(element,url,param)
{
  //Aktueller Wert zur URL hinzufügen
  var inputValue = element.value;
  url = url + '?Value=' + inputValue
  
  //Zusätzliche Parameter
  param = param.replace(',','&');
  if (param != '')
     url += '&' + param;
  
  //Tooltipp hinzufügen
  $(element).parent('p').children('.form-tooltipp').remove();
  $(element).parent('p').append('<span class="form-tooltipp"><img src="/images/icons/ajax-loader.gif" /></span>');

  //URL aufrufen
  $.ajax({
	url: url,
	context: document.body,
	success: function(data)
	{
	  $(element).parent('p').children('.form-tooltipp').html(data);
	}
  });	
}

//Änderung im Forumlar überwachen
function observeFormChanges(formID)
{
  if (formID == '')
    formID = 'frmDialogForm';
	
  $('#' + formID + ' input, #' + formID + ' select, #' + formID + ' textarea').live('change',function(e)
  { 
    document.getElementById('hdnFormChanged').value = 'true';
  });
}

//Passwort Felder aktivieren/deaktivieren
function enableChangePassword()
{
  if (document.getElementById('cbxChangePassword').checked == true)
  {
	document.getElementById('tbxPasswort1').disabled = false;
	document.getElementById('tbxPasswort2').disabled = false;
	document.getElementById('tbxPasswort1').focus();
  }
  else
  {
	document.getElementById('tbxPasswort1').disabled = true;
	document.getElementById('tbxPasswort2').disabled = true;
	document.getElementById('tbxPasswort1').value = '';
	document.getElementById('tbxPasswort2').value = '';
  }
}
