/* - - - - - - - - - - - - - - - - - - - - - - -
 Main erc JavaScript
 Samstag, 4. September 2010 22:59:22
 - - - - - - - - - - - - - - - - - - - - - - - */


//////////////////////////////////////////////////
// Functions
//////////////////////////////////////////////////  

// captchabild neuladen
function regreload() {
var a= Math.floor(Math.random()*1000);
$('#captchareg').attr('src',"system/_captcha_image.php?img=registration&a="+a);
} 

//funktion um update von alten browsern zu fördern
var $buoop = {vs: {i:7,f:3.5,o:9.5,s:4,n:9}, reminder: 24, test: false, newwindow: true}
$buoop.ol = window.onload; 
window.onload=function(){ 
 if ($buoop.ol) $buoop.ol(); 
 var e = document.createElement("script"); 
 e.setAttribute("type", "text/javascript"); 
 e.setAttribute("src", "http://browser-update.org/update.js"); 
 document.body.appendChild(e); 
} 
  
// 2 funktionen um alle checkboxen einer Form zu markieren
function SelectAll(form) {
    for(var x=0;x<form.elements.length;x++) {
        var y=form.elements[x];                            
        if(y.name!='markall' && y.name!='adminselect' && y.name!='pmselect' && y.name!='adminaction' && y.name!='abbort' && y.name!='deletemarked' && y.name!='markdok' && y.name!='pmaction' && y.name!='pmdeleteoutbox') y.checked=form.markall.checked;
    }
}    
function SetSelectAll(form) {
    var allchecked = true;
    for(var x=0;x<form.elements.length;x++) {
        var y=form.elements[x];                            
        if(y.name!='markall' && y.name!='adminselect' && y.name!='pmselect' && y.name!='adminaction' && y.name!='abbort' && y.name!='deletemarked' && y.name!='markdok' && y.name!='pmaction' && y.name!='pmdeleteoutbox')
        {
          if(!y.checked)
            allchecked = false;
        }
    }
    if(allchecked)
      form.markall.checked=true;
    else   
      form.markall.checked=false;
}
                                                    

// periodish aufgerufene Funktion um den pm status abzufragen und
// gegebenenfalls eine meldung auszugeben
function checkpm(){
  $.get("checkpm.php", function(data){
    if(data!='') {
      var windowHeight = document.documentElement.clientHeight;
      jQuery('#message_box').css("top", $(window).scrollTop()+windowHeight-138+"px");
      jQuery('#message_box_inner').html(data);
      jQuery('#message_box').css("display", "block");
      jQuery('#newpmsound').html('<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" width="0" height="0"><param name="src" value="sounds/newpm.wav"><param name="controller" value="false"><param name="autoplay" value="true"><param name="autostart" value="0"><param name="pluginspage" value="http://www.apple.com/quicktime/download/"><!--[if !IE]> <--><object type="audio/wav" data="sounds/newpm.wav" width="0" height="0"><param name="src" value="sounds/newpm.wav"><param name="controller" value="false"><param name="autoplay" value="true"><param name="autostart" value="0"><param name="pluginurl" value="http://www.apple.com/quicktime/download/"><embed src="sounds/newpm.wav" type="audio/wav" width="0" height="0" autostart="true" controller="false" ></embed></object><!--> <![endif]--></object>');
    }
  });
  newtime = window.setTimeout("checkpm();", 20000);
};

//funktion um eine verschlüsselte email auszugeben
function InsertEmailAddress(name,domain,mailto,at) {
    document.write('<a style="text-decoration:underline;" href="' + mailto + name + at + domain + '">' + name + at + domain + '</a>');
}                         
//funktion um eine verschlüsselte email mit einem linknamen auszugeben
function InsertEmailLink(name,domain,mailto,at,name2) {
    document.write('<a style="text-decoration:underline;" href="' + mailto + name + at + domain + '">' +name2 + '</a>');
}
//funktion um eine verschlüsselte email als Icon auszugeben
function InsertEmailIcon(name,domain,mailto,at) {
    document.write('<a title="Email" href="' + mailto + name + at + domain + '"><img src="images/page/icons/email.gif" alt="Email"></a>');
}

//funktion um die auf der seite bei bedarf versteckten "bitte warten"
//nachrichten anzuzeigen (kommt ins on submit von forms und so)
function pleasewait(elementid) {
  document.getElementById(elementid).style.visibility = "visible";
  document.getElementsByTagName('body')[0].style.cursor='wait';
  return true;
}    

//open popup with features
function JS_openBrWindow(URL,windowName,features) {
  window.open(URL,windowName,features);
} 

// benötigt damit buttons wie links wirken
function JS_goToURL(site) {
  parent.location=site;
}  

// führt nach einer bestätigung zu einem link
// benötigt für xfire aufnahme
function JS_confirm(msg, site) {
  if(confirm(msg)) parent.location=site;
}   

//benötigt um smilies einzufügen
function AddCodeFromWindow(thecode,fieldname) {
    code1 = 'opener.document.post.'+fieldname+'.value += thecode + " "';
    code2 = 'opener.post.'+fieldname+'.focus()';
    eval(code1);
    eval(code2);
}

//für bbcode editor:
//merkt sich die markierung in einem textfeld (für bbcode nötig)
function storeCaret(text)
{
  // Only bother if it will be useful.
  if (typeof(text.createTextRange) != 'undefined')
    text.caretPos = document.selection.createRange().duplicate();
}                
   
//für bbcode editor (genutzt von anderen funktionen):
//fügt einen text an die markierte stelle im textarea ein
function AddText(addtext, textarea) {
  // Can a text range be created?
  if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
  {
    var caretPos = textarea.caretPos;

    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? addtext + ' ' : addtext;
    caretPos.select();
  }         
  // Mozilla text range wrap.
  else if (typeof(textarea.selectionStart) != "undefined")
  {
    var begin = textarea.value.substr(0, textarea.selectionStart);
    var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
    var end = textarea.value.substr(textarea.selectionEnd);
    var newCursorPos = textarea.selectionStart;
    var scrollPos = textarea.scrollTop; 

    textarea.value = begin + addtext + end;

    if (textarea.setSelectionRange)
    {
      if (selection.length == 0)
        textarea.setSelectionRange(newCursorPos + addtext.length, newCursorPos + addtext.length);
      else
        textarea.setSelectionRange(newCursorPos, newCursorPos + addtext.length);
      textarea.focus();
    }
    textarea.scrollTop = scrollPos;
  }   
  // Just put them on the end, then.
  else
  {
    textarea.value += addtext;
    textarea.focus(textarea.value.length - 1);
  }
}             
   
//für bbcode editor:
//schreibt die bbcodetags um den markierten text herum
function surroundText(text1, text2, textarea)
{
  // Can a text range be created?
  if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
  {
    var caretPos = textarea.caretPos;

    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' && text1 != '' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
    caretPos.select();
  }
  // Mozilla text range wrap.
  else if (typeof(textarea.selectionStart) != "undefined")
  {
    var begin = textarea.value.substr(0, textarea.selectionStart);
    var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
    var end = textarea.value.substr(textarea.selectionEnd);
    var newCursorPos = textarea.selectionStart;
    var scrollPos = textarea.scrollTop; 

    textarea.value = begin + text1 + selection + text2 + end;

    if (textarea.setSelectionRange)
    {
      if (selection.length == 0)
        textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
      else
        textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
      textarea.focus();
    }
    textarea.scrollTop = scrollPos;
  }   
  // Just put them on the end, then.
  else
  {
    textarea.value += text1 + text2;
    textarea.focus(textarea.value.length - 1);
  }
}     
            
//für bbcode editor:
// fügt den [quote] tag hinzu
function AddQuote(textarea) {    
    quotename = prompt("Bitte den Namen der Person eingeben, die zitiert werden soll: (optional)", "");
    inserttext = prompt("Zitat einfügen:", "");

    if ((inserttext != null)) addtext = "[quote]" + inserttext + "[/quote]";

    
    if ((inserttext != "") && (inserttext != null)) {
        if ((quotename != null) && (quotename != "")) {
            addtext = "[quote=" + quotename + "]" + inserttext + "[/quote]";
        }
        else {
            addtext = "[quote]" + inserttext + "[/quote]";
        }
    }
    else addtext="";
    
    AddText(addtext, textarea);
} 
   
//für bbcode editor:
// fügt [URL] oder [EMAIL] ein
function AddLink(linktype, textarea) {
    linktext = prompt("Bitte einen Linknamen eingeben: (optional)", "");
    var prompttext;
    if (linktype == "url") linkurl = prompt("Bitte URL eingeben:", "http://");
    else linkurl = prompt("Bitte die E-Mail Adresse eingeben:", "");
    
    if ((linkurl != "http://") && (linkurl != "") && (linkurl != null)) {
        if ((linktext != null) && (linktext != "")) {
            addtext = "[" + linktype + "=" + linkurl + "]" + linktext + "[/" + linktype + "]";
        }
        else {
            addtext = "[" + linktype + "]" + linkurl + "[/" + linktype + "]";
        }
    }
    else addtext = "";
    
    AddText(addtext, textarea);
}  
         
//für bbcode editor:
// fügt den [IMG] tag hinzu
function AddImg(textarea) {
    inserttext = prompt("Bitte URL zu dem Bild eingeben:", "http://");
    if ((inserttext != "http://") && (inserttext != "") && (inserttext != null)) addtext = "[img]" + inserttext + "[/img]";
    else addtext="";
    
    AddText(addtext, textarea);
}      
                 
//für bbcode editor:
// fügt den [LIST] tag hinzu
function AddList(textarea) {
    type = prompt("Bitte 1 für eine nummerierte Liste, 'a' für eine alphabetische Liste, oder '' für eine Liste mit Punkten eingeben:", "");
    if ((type == "a") || (type == "1")) {
        list = "[list=" + type + "]\n";
        listend = "[/list=" + type + "]";
    }
    else {
        list = "[list]\n";
        listend = "[/list]";
    }
    entry = "start";
    while ((entry != "") && (entry != null)) {
        entry = prompt("Bitte einen Eintrag für die Liste eingeben.\nNichts eingeben oder 'Abbrechen' klicken, um die Liste abzuschliessen.", "");
        if ((entry != "") && (entry != null))
            list = list + "[*]" + entry + "\n";
    }
    addtext = list + listend;
    
    AddText(addtext, textarea);
}
         
//für bbcode editor:
// fügt den [code] tag hinzu
function AddCode(textarea) {
    inserttext = prompt("Den Code bitte hier eingeben.", "");
    if ((inserttext != null)) addtext = "[code]" + inserttext + "[/code]";
    else addtext="";
    
    AddText(addtext, textarea);
}    
         
//für bbcode editor:
// fügt den [youtube] tag hinzu
function AddYoutube(textarea) {
    inserttext = prompt("Bitte hier die ID des Videos eingeben.\nDiese ist Teil der Adresse der Videoseite.\n\nFür die Adresse:\nhttp://www.youtube.com/watch?v=ou8vRWTSsJo\nWäre dies: ou8vRWTSsJo", "");
    if ((inserttext != null)) addtext = "[youtube]" + inserttext + "[/youtube]";
    else addtext="";
    
    AddText(addtext, textarea);
}   

function sidebars(object)
{
  //shadows header
  object.find("ul").each(function() {
    $(this).find("p:first").FontEffect({
      shadow          :true, // Apply the shadow effect
      shadowColor     :"#000",// The color of the shadow
      shadowOffsetTop :2,     // The top offset position (px)
      shadowOffsetLeft:2,     // The left offset position (px)
      shadowBlur      :1,     // The shadow blur 1=none,2=low,3=high
      shadowOpacity   :0.05   // The opacity of the shadow (0=none,1=all)
    })
  });    

  //hovereffect
  object.find("a").hover(
    function () {
      $(this).clearQueue();
      $(this).animate({marginLeft:'3px'},'fast');
    },
    function () {
      $(this).animate({marginLeft:'0px'},'fast');
    }
  );
}         

// gernral Tooltip Style
$.fn.qtip.styles.generalTTStyle = { // Last part is the name of the tooltip style
  width: {
    min: 20,
    max: 275
  },
  background: 'url(images/page/goldtt.jpg) top left repeat',
  color: '#00237E',
  textAlign: 'center',
  fontSize: '13px',
  title: {
    height: '16px',
    color: '#F0E285',
    fontSize: '16px',
    background: 'url(images/page/bluett.jpg) top left repeat',
    textAlign: 'center',
    fontWeight: 'bold',
    borderBottom: '4px solid #00237E'
  },
  border: {
    width: 4,
    radius: 4,
    color: '#00237E'
  },
  name: 'cream' // Inherit the rest of the attributes from the preset cream style
}

// clock
function leadingZero(x){
   return (x>9)?x:'0'+x;
}                

function fixYear4(x){
   return (x<500)?x+1900:x;
}        

function displayClock() {
  locDate=new Date();
  locDate.setTime(locDate.getTime());
  document.getElementById('datentime').innerHTML=dayNames[locDate.getDay()]+', '+locDate.getDate()+'. '+monthNames[locDate.getMonth()]+' '+fixYear4(locDate.getYear())+' - '+leadingZero(locDate.getHours())+':'+leadingZero(locDate.getMinutes())+':'+leadingZero(locDate.getSeconds());
  setTimeout('displayClock()',1000);
}   

var dayNames=new Array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'); 
var monthNames=new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');



///////////////////////////////////////////////////
// to do if document is loaded
///////////////////////////////////////////////////
$(document).ready(function(){
  displayClock();
  sidebars($("#left"));
  sidebars($("#right"));    
                                         
  // Colorbox für bilder aus dem bbcode
  // , next:"Nächstes", previous:"Vorheriges", current:"{current} von {total}", slideshowStop:"Diashow anhalten", slideshowStart="Diashow starten"
  $('#content a.picture').colorbox({
          onOpen:function(){  $(this).qtip("hide") }, title:' ', transition:'elastic', speed:300, opacity:0.75, maxWidth:"100%", maxHeight:"100%", close:"Schliessen"});

  // Colorbox für galerien (zb. bei den games)
  $('#content a.gamegallery1, #content a.gamegallery2, #content a.gamegallery3').colorbox({
          onOpen:function(){  $(this).qtip("hide") }, title:'Das Bl&auml;ttern ist auf die Bilder dieser Seite beschr&auml;nkt.', transition:'elastic', speed:300, opacity:0.75, maxWidth:"100%", maxHeight:"100%", close:"Schliessen", next:"Nächstes", previous:"Vorheriges", current:"{current} von {total}"});


  // shadows for content title
  $("#contenttitle").FontEffect({                
      shadow          :true, // Apply the shadow effect
      shadowColor     :"#000",// The color of the shadow
      shadowOffsetTop :4,     // The top offset position (px)
      shadowOffsetLeft:4,     // The left offset position (px)
      shadowBlur      :1,     // The shadow blur 1=none,2=low,3=high
      shadowOpacity   :0.03,   // The opacity of the shadow (0=none,1=all)
    gradient        :true, // Apply the gradient effect
    gradientColor   :"#018",    // The color of the gradient
    gradientPosition:20,    // The start position of the gradient (perc.)*
    gradientLength  :50,    // The length of the gradient (perc.)*
    gradientSteps   :20    // the steps of the gradient
  });         

  // shadows for newstitle
  $('#content').find("h2.newstitle").FontEffect({
      shadow          :true, // Apply the shadow effect
      shadowColor     :"#000",// The color of the shadow
      shadowOffsetTop :3,     // The top offset position (px)
      shadowOffsetLeft:3,     // The left offset position (px)
      shadowBlur      :1,     // The shadow blur 1=none,2=low,3=high
      shadowOpacity   :0.03   // The opacity of the shadow (0=none,1=all)
  });       

  // shadows for newstitle
  $('#gametitle').FontEffect({
      shadow          :true, // Apply the shadow effect
      shadowColor     :"#000",// The color of the shadow
      shadowOffsetTop :3,     // The top offset position (px)
      shadowOffsetLeft:3,     // The left offset position (px)
      shadowBlur      :1,     // The shadow blur 1=none,2=low,3=high
      shadowOpacity   :0.03   // The opacity of the shadow (0=none,1=all)
  });     

  // shadows for profiletitle
  $('#content').find("h2.profiletitle, h2.suggestiontitle").FontEffect({
      shadow          :true, // Apply the shadow effect
      shadowColor     :"#000",// The color of the shadow
      shadowOffsetTop :3,     // The top offset position (px)
      shadowOffsetLeft:3,     // The left offset position (px)
      shadowBlur      :1,     // The shadow blur 1=none,2=low,3=high
      shadowOpacity   :0.03   // The opacity of the shadow (0=none,1=all)
  });

  // Tooltip for loginbutton
  $("#loginTT").qtip({
    content: {
      text: 'Für das Login bitte zuerst in den beiden Eingabefeldern über dieser Schaltfläche Benutzername und Passwort eingeben.',
      title: { text: '! Bitte beachten !' }
    },
    show: { delay:0, solo:true, effect: { type:'fade', length:0 } },
    hide: { delay:0 },
    style: {name: 'generalTTStyle', tip: 'rightMiddle'},
    position: {
      adjust: { x: 2, screen: true },
      corner: {
        target: 'leftMiddle',
        tooltip: 'rightMiddle'
      }
    }
  });
  // show title attribute of links on the left sidebar as Tooltips
  $('#left').find("a[title]").qtip({ 
    show: { delay:0, solo:true, effect: { type:'fade', length:0 } },
    hide: { delay:0 },
    style: { name: 'generalTTStyle', tip: 'leftMiddle' },
    position: {
      adjust: { x: 0, screen: true },
      corner: {
        target: 'rightMiddle',
        tooltip: 'leftMiddle'
      }
    }
  });    
  // show title attribute of images on the right sidebar as Tooltips
  // for flags and membericons
  $('#right').find("img[title]").qtip({
    show: { delay:0, solo:true, effect: { type:'fade', length:0 } },
    hide: { delay:0 },
    style: { name: 'generalTTStyle', tip:'bottomRight' },
    position: {
      adjust: { screen: true },
      target: 'mouse',
      corner: {
        tooltip: 'bottomLeft'
      }
    }
  });
  // show title attribute of the content as Tooltips
  $('#content').find("[title]").qtip({
    show: { delay:0, solo:true, effect: { type:'fade', length:0 } },
    hide: { delay:0, effect: { type:'fade', length:0 } },
    style: { name: 'generalTTStyle', tip:'topRight' },
    position: {
      adjust: { x: 10, y: 10, screen: true },
      target: 'mouse',
      corner: {
        tooltip: 'topLeft'
      }
    }
  });

  // dies ist für die benachrichtigungn bei neuen pms
  // durch klick auf das X in der benachrichtigung wird sie versteckt
  $('#close_message').click(function()
  {
    jQuery('#message_box').css("display", "none");
  });
                                                                                                          
  // scrollt die Benachrichtigung, um sie auf dem bildschrim zu halten
  $(window).scroll(function()
  {
    var windowHeight = document.documentElement.clientHeight;
    $('#message_box').animate({top:$(window).scrollTop()+windowHeight-138+"px" },{queue: false, duration: 200});
  });

  checkpm();
  /*tooltipvergrösserung für die kleinen photos in den memberboxen*/
  $('#membertable td.memberpicframe').each(function()
  {
    var picsrc = $(this).find("img.memberpicsamall").attr('src');
    if(picsrc)
    {
      $(this).qtip({
        content: '<img class="memberpicbig" alt="Foto" src="'+picsrc+'">',
        show: { delay:0, solo:true, effect: { type:'fade', length:0 } },
        hide: { delay:0, effect: { type:'fade', length:0 } },
        style: { name: 'generalTTStyle', tip:'topRight' },
        position: {
          adjust: { screen: true },
          target: 'mouse',
          corner: {
            tooltip: 'topLeft'
          }
        }
      });
    }
  });

  // shadows für memberboxen
  $('#membertable').find("a.memberboxshadow").FontEffect({
      shadow          :true, // Apply the shadow effect
      shadowColor     :"#000",// The color of the shadow
      shadowOffsetTop :3,     // The top offset position (px)
      shadowOffsetLeft:3,     // The left offset position (px)
      shadowBlur      :1,     // The shadow blur 1=none,2=low,3=high
      shadowOpacity   :0.04   // The opacity of the shadow (0=none,1=all)
  });
  
  /*bilder mit ajax nachladen, damit die seite schneller aufgebaut wird*/
  $('#content img.postload').each(function()
  {
    var picsrc = $(this).attr('alt');  
    var piclink = $(this).attr('title');
    $.post("loadpics.php", { source: picsrc, link: piclink },
    function(data){
      $('#content img.postload[alt='+picsrc+'][title='+piclink+']').replaceWith(data);
      $('#content .resizedpic').qtip({
        content: 'Anklicken um das Bild zu vergrößern.',
        show: { delay:0, solo:true, effect: { type:'fade', length:0 } },
        hide: { delay:0, effect: { type:'fade', length:0 } },
        style: { name: 'generalTTStyle', tip:'topRight' },
        position: {
          adjust: { screen: true },
          target: 'mouse',
          corner: {
            tooltip: 'topLeft'
          }
        }
      });
    });
  });

});
