
var __MONAT__ = new Array('Jänner','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
var __WOCHENTAG__ = new Array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
var __WOCHENTAG_KURZ__ = new Array('So','Mo','Di','Mi','Do','Fr','Sa');

var __USER_ID__ = 0;
var __USER_NAME__ = "";
var __RECHT_ID__ = 0;

var Saison_aktuell = ;
var Saisonabschnitt_aktuell = '';

/********************\
* Globale Funktionen *
\********************/

var __IE__ = (navigator.userAgent.indexOf("MSIE") > -1);

// Zoomen bei F11
var Zoom = false;
document.onkeyup = function (e)
{ var code = (__IE__ ? event.keyCode : e.which);
  if (code == 122)
  { document.getElementById("Header").style.display = (Zoom ? "" : "none");
    document.getElementById("Navigation").style.display = (Zoom ? "" : "none");
    document.getElementById("Saisonnavi").style.display = (Zoom ? "" : "none");
    document.getElementById("Mannschaftsnavi").style.display = (Zoom ? "" : "none");
    document.getElementById("Content").style.top = (Zoom ? "" : "0px");
    document.getElementById("Content").style.left = (Zoom ? "" : "0px");
    document.body.style.backgroundImage = (Zoom ? "" : "none");
    Zoom = !Zoom;
  }
}

// liefert erstes Vorkommen von x in Array
Array.prototype.contains = function (x)
{ var i;

  for (i=0; i<this.length; i++)
  { if (this[i] == x)
    { return true;
    }
  }
  return false;
}

Math.leading0 = function (x)
{ x = parseInt(x);
  return (x <= 9 ? "0" : "") + x;
}

// Wochentag -> Mo: 1 ... So: 7
Date.prototype.getTag = function ()
{ return (this.getDay() == 0 ? 7 : this.getDay());
}

Date.prototype.setTag = function (d)
{ this.setDate(this.getDate() - this.getTag() + d);
}

Date.prototype.getDatum = function ()
{ return new Date(this.getFullYear(),this.getMonth(),this.getDate());
}

// liefert Kalenderwoche nach ISO 8601
Date.prototype.getWeek = function ()
{ var t = new Date(this.getTime());
  
  t.setTag(1);
  var KW1 = new Date(t.getFullYear(),0,4);
  KW1.setTag(1);
  
  return Math.floor(1.5 + (t.getTime() - KW1.getTime()) / 1000 / 60 / 60 / 24 / 7);
}

// Kalenderjahr nach ISO 8601
Date.prototype.getWeekYear = function ()
{ var t = new Date(this.getTime());
  t.setTag(1);
  
  return t.getFullYear();
}

// liefert die Anzahl der Kalenderwochen
Date.prototype.getWeekCount = function ()
{ var a = new Date(this.getFullYear(),this.getMonth(),1);
  var e = new Date(this.getFullYear(),this.getMonth()+1, 0);
  
  return Math.ceil((a.getTag() + e.getDate() - 1) / 7);
}

// liefert das Datum in String-Form analog der PHP-Funktion 'date'
Date.prototype.dateFormat = function (format)
{ format = format.replace(/d/g,Math.leading0(this.getDate()));
  format = format.replace(/m/g,Math.leading0(this.getMonth()+1));
  format = format.replace(/Y/g,this.getFullYear());
  format = format.replace(/n/g,this.getMonth()+1);
  format = format.replace(/j/g,this.getDate());
  format = format.replace(/H/g,Math.leading0(this.getHours()));
  format = format.replace(/i/g,Math.leading0(this.getMinutes()));
  format = format.replace(/s/g,Math.leading0(this.getSeconds()));
  format = format.replace(/W/g,this.getWeek());
  format = format.replace(/o/g,new Date(this.getFullYear(),this.getMonth(),this.getDate()-this.getTag()+1).getFullYear());  // Kalenderjahr
  format = format.replace(/\bD\b/g,__WOCHENTAG_KURZ__[this.getDay()]);
  format = format.replace(/\bF\b/g,__MONAT__[this.getMonth()]);
  format = format.replace(/\bl\b/g,__WOCHENTAG__[this.getDay()]);
  
  return format;
}

// liefert ein Array mit allen Feiertagen
Date.prototype.getFeiertage = function ()
{ var a = this.getFullYear() % 19;
  var b = this.getFullYear() % 4;
  var c = this.getFullYear() % 7;
  var H1 = Math.floor(this.getFullYear() / 100);
  var H2 = Math.floor(this.getFullYear() / 400);
  var N = 4 + H1 - H2;
  var M = 15 + H1 - H2 - Math.floor(((8 * H1 + 13) / 25));
  var d = (19 * a + M) % 30;
  var e = (2 * b + 4 * c + 6 * d + N) % 7;
  var ostern;
  
  if ((d + e) == 35)
  { ostern = 50;
  }
  else if ((d == 28) && (e == 6) && (a > 10))
  { ostern = 49;
  }
  else
  { ostern = 22 + d + e;
  }
  
  function feiertag (bezeichnung, datum)
  { this.bezeichnung = bezeichnung;
    this.datum = datum;
  }
  
  var feiertage = new Array();
  
  feiertage.push(new feiertag ("Christtag", new Date(this.getFullYear()-1, 11, 25)));
  feiertage.push(new feiertag ("Stephanitag", new Date(this.getFullYear()-1, 11, 26)));
  
  feiertage.push(new feiertag ("Neujahr", new Date(this.getFullYear(), 0, 1)));
  feiertage.push(new feiertag ("Hl. 3 Könige", new Date(this.getFullYear(), 0, 6)));
  feiertage.push(new feiertag ("Ostersonntag", new Date(this.getFullYear(), 2, ostern)));
  feiertage.push(new feiertag ("Ostermontag", new Date(this.getFullYear(), 2, ostern + 1)));
  feiertage.push(new feiertag ("Staatsfeiertag", new Date(this.getFullYear(), 4, 1)));
  feiertage.push(new feiertag ("Christi Himmelfahrt", new Date(this.getFullYear(), 2, ostern + 39)));
  feiertage.push(new feiertag ("Pfingstsonntag", new Date(this.getFullYear(), 2, ostern + 49)));
  feiertage.push(new feiertag ("Pfingstmontag", new Date(this.getFullYear(), 2, ostern + 50)));
  feiertage.push(new feiertag ("Fronleichnam", new Date(this.getFullYear(), 2, ostern + 60)));
  feiertage.push(new feiertag ("Mariä Himmelfahrt", new Date(this.getFullYear(), 7, 15)));
  feiertage.push(new feiertag ("Nationalfeiertag", new Date(this.getFullYear(), 9, 26)));
  feiertage.push(new feiertag ("Allerheiligen", new Date(this.getFullYear(), 10, 1)));
  feiertage.push(new feiertag ("Mariä Empfängnis", new Date(this.getFullYear(), 11, 8)));
  feiertage.push(new feiertag ("Christtag", new Date(this.getFullYear(), 11, 25)));
  feiertage.push(new feiertag ("Stephanitag", new Date(this.getFullYear(), 11, 26)));
  
  feiertage.push(new feiertag ("Neujahr", new Date(this.getFullYear()+1, 0, 1)));
  feiertage.push(new feiertag ("Hl. 3 Könige", new Date(this.getFullYear()+1, 0, 6)));
  
  return feiertage;
}

// liefert den Feiertagsnamen zurück
Date.prototype.isFeiertag = function (feiertage)
{ var i;
  
  for (i=0; i<feiertage.length; i++)
  { if (DateCompare(feiertage[i].datum,this))
    { return feiertage[i].bezeichnung;
    }
  }
  
  return false;
}

// vergleicht 2 Daten (ohne Uhrzeit)
function DateCompare (t1,t2)
{ return ((t1.getFullYear() == t2.getFullYear()) && (t1.getMonth() == t2.getMonth()) && (t1.getDate() == t2.getDate()));
}

// überprüft Datum auf Gültigkeit
function Date_valid (jahr, monat, tag, stunde, minute, sekunde)
{ // kann auch ohne Zeit aufgerufen werden
  stunde = stunde || 0;
  minute = minute || 0;
  sekunde = sekunde || 0;
  
  if (isNaN(jahr) || isNaN(monat) || isNaN(tag) || isNaN(stunde) || isNaN(minute) || isNaN(sekunde))
  { return false;
  }
  
  var t = new Date(jahr, monat-1, tag, stunde, minute, sekunde);
  if ((t.getFullYear() != jahr) || (t.getMonth() + 1 != monat) || (t.getDate() != tag) ||
      (t.getHours() != stunde) || (t.getMinutes() != minute) || (t.getSeconds() != sekunde))
  { return false;
  }

  return true;
}

function jsonToObject (x)
{ var i;
  
  for (i in x)
  { switch (typeof(x[i]))
    { case "boolean":
      case "number": eval("this."+i+" = "+x[i]); break;
      case "string": eval("this."+i+" = '"+x[i]+"'"); break;
      default: eval("this."+i+" = '"+x[i]+"'"); break;
    }
  }
}

String.prototype.jsonToDate = function ()
{ var t = new Date();
  t.setUTCDate(this.substr(0,10).split("-")[2]);
  t.setUTCMonth(this.substr(0,10).split("-")[1]-1);
  t.setUTCFullYear(this.substr(0,10).split("-")[0]);
  t.setUTCHours(this.substr(11,8).split(":")[0]);
  t.setUTCMinutes(this.substr(11,8).split(":")[1]);
  t.setUTCSeconds(this.substr(11,8).split(":")[2]);
  return t;
}

String.prototype.forumText = function ()
{ var s = this;
  s = s.replace(/\[BR\]/g,"<br />");
  s = s.replace(/\[I\](.*?)\[\/I\]/g,"<i>$1</i>");
  s = s.replace(/\[B\](.*?)\[\/B\]/g,"<b>$1</b>");
  s = s.replace(/\[IMG\](.*?)\[\/IMG\]/g,"<img src='$1' alt='' />");
  s = s.replace(/\[URL=(.*?)\](.*?)\[\/URL\]/g,"<a href='$1'>$2</a>");
  while(s.match(/\[QUOTE=(.*?)\:\](.*?)\[\/QUOTE\]/g))
  {  s = s.replace(/\[QUOTE=(.*?)\:\](.*?)\[\/QUOTE\]/g,"<blockquote><p><b>$1:</b><br />$2</p></blockquote>")
  }
  return s;
}

function resized_image (src,width,height)
{ var img = new Image();
  img.style.visibility = "hidden";
  img.src = src;
  
  if (img.complete)
  { img_resize(img,width,height);
    img.style.visibility = "visible";
  }
  else
  { img.onload = function ()
    { // bei Prototype-Erweiterung greift das hier leider nicht
      img_resize(this,width,height);
      img.style.visibility = "visible";
    }
  }
  
  return img;
}

// Prototype-Erweiterung funktioniert hier leider nicht
function img_resize (img,width,height)
{ if (width < 0)
  { img.width = img.width * height / img.height;
    img.height = height;
  }
  else if (height < 0)
  { img.height = img.height * width / img.width;
    img.width = width;
  }
  else
  { img.width = width;
    img.height = height;
  }
}

function T (text,farbe)
{ return document.createTextNode(text);
}

function clear (x)
{ switch (x.nodeName)
  { case "THEAD":
    case "TBODY":
    case "TABLE":
    { while (x.rows.length > 0)
      { x.deleteRow(0);
      }
      break;
    }
    case "SELECT":
    { while (x.options.length > 0)
      { x.options[x.length - 1] = null;
      }
      break;
    }
    default:
    { while (x.childNodes.length > 0)
      { x.removeChild(x.firstChild);
      }
      break;
    }
  }
}

// speichert Variable im Browser
function setValue (name,value)
{ var i;
  var neu = true;
  var werte = window.name.split("&");
  for (i=0; i<werte.length; i++)
  { if (werte[i].indexOf(name + "=") == 0)
    { werte[i] = werte[i].replace(/=(.*)$/,"=" + value);
      neu = false;
    }    
  }
  if (neu)
  { werte.push(name + "=" + value);
  }
  window.name = werte.join("&");
  if (window.name.charAt(0) == "&")
  { window.name = window.name.substring(1);
  }
}

// liest Variable aus Browser
function getValue (name)
{ var i;
  var werte = window.name.split("&");
  for (i=0; i<werte.length; i++)
  { if (werte[i].indexOf(name + "=") == 0)
    { return werte[i].substring(werte[i].indexOf("=") + 1);
    }
  }
  return -1;
}

// Scrollt bei Sprung zu einem Anker soweit dass er nicht mehr vom Header überdeckt wird
function anker_scroll ()
{ window.setTimeout("window.scrollBy(0,-"+(document.getElementById("Header").offsetHeight)+")",100);
}

function sleep (ms)
{ var x = new Date();
  while(new Date()-x < ms);
}

function delay (ms)
{ var resource;
  var response;
  
  if(typeof ActiveXObject == 'undefined')
  { resource = new XMLHttpRequest();
  }
  else
  { // IE
    resource = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  try
  { resource.open('GET',Pfad + 'LIB/delay.php?ms=' + ms,false);
    resource.send(null);
    response = resource.responseText;
  }
  catch(e)
  { alert(e);
  }
  
  return true;
}
