function ucfirst( str )
{
    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

// Alle markieren / Markierungen aufheben
function switchCheckboxes(formname, status)
{
  var x = document.forms[formname].elements
  for (var i=0; i<x.length; i++)
  {
    x[i].checked = status;
  }
}

function calculate(secs, num1, num2) {
  s = ((Math.floor(secs/num1))%num2).toString();
  if (s.length < 2) s = "0" + s;
  return s;
}

function formatTime(msec, name)
{
  sec = Math.floor(msec/1000);

  sDay = calculate(sec, 86400, 100000);
  sHour = calculate(sec, 3600, 24);
  sMinute = calculate(sec, 60, 60);
  sSec = calculate(sec, 1, 60);

  if (sDay != '00') time = sDay+'d&nbsp;'+sHour+'h';
  else if(sHour != '00') time = sHour+'h&nbsp;'+sMinute+'m';
  else time = sMinute+'m&nbsp;'+sSec+'s';

  if (msec > 0)
  {
    $(name).innerHTML = time;
  }
  else
  {
    $(name).innerHTML = '-';
  }
}

function countdown2(msec, name)
{
  formatTime(msec, name);
  if (msec>0)
  {
    setTimeout("countdown2(" + (msec-1000) + ", '" + name + "')", 1000);
  }
  else location.reload(true);
}

function toggleDisplay(name)
{
  var sDisplay = $(name).style.display;
  if(sDisplay == 'none')
  {
    $(name).style.display = 'inline';
  }
  else
  {
    $(name).style.display = 'none';
  }
}

function setDisplay(name, state)
{
  $(name).style.display = state;
}

function toggleVisibility(name)
{
  var sVisibility = $(name).style.visibility;
  if(sVisibility == 'hidden')
  {
    $(name).style.visibility = 'visible';
  }
  else
  {
    $(name).style.visibility = 'hidden';
  }
}


function setVisibility(name, state)
{
  $(name).style.visibility = state;
}

function multiply(x, y, id) 
{
  if (!$(id)) return false;
  if (!isInt(x)) return false;
  if (!isInt(y)) return false;
  $(id).innerHTML = this.formatNumber(x*y);
  
  return true;
}

function isInt(x) 
{
  var y = parseInt(x);
  if (isNaN(y)) return false;
  return (x == y && x.toString() == y.toString());
}

function formatNumber(val)
{
  val = String(val);
  var pos;
  var r = "";
  var dot = val.length;

  for( pos=dot-3; pos>=1; pos-=3) r = "." + val.substr(pos,3) + r;

  r =  val.substring(0, pos+3) + r;

  return r;
}

var ServerTime = (function() {	  
  var dt, $target;

  function start(serverTime, target) {
    var serverTime = new Date(serverTime);
    if (isNaN(serverTime)) {
      throw "cannot parse serverTime";
    }

    dt = new Date() - serverTime;

    $target = (typeof(target) == "string" ? $(target) : target);
    if (!$target) {
      throw "no valid target";
    }

    display();
  }

  function schedule() {
    var serverTime = new Date(new Date() - dt);

    var timeout = 1000 * (60 - serverTime.getSeconds());
    window.setTimeout(function() { display(); }, timeout);
  }
  
  function simpleFormat(hours, minutes) {
    var hs = "00" + hours;
    var ms = "00" + minutes;
    return hs.substring(hs.length - 2) + ":" + ms.substring(ms.length - 2);
  }

  function display() {
    var serverTime = new Date(new Date() - dt);

    $target.innerHTML = simpleFormat(serverTime.getHours(), serverTime.getMinutes());

    schedule();
  }
  
  return {
    start: start
  };
})();