var grDisplayContentDiv;
var grDisplayTextDiv;
var grDisplayGlowDiv;
var grDisplayCounter = 0;
var grDisplayPos     = 0;
var grDisplayWidth   = 550;
var grDisplayLength  = 0;
var grDisplayStop    = 0;
var grDisplayTimer   = 0;
var grDisplayURL     = "";
var grDisplayMode    = "";
var grDisplayPulseTimer   = 0;
var urlhandle;
var grDisplayRound   = 1;
var grDisplayAnimation;

function grDisplayInit()
  {
  grDisplayContentDiv = dojo.byId("grDisplayContent");
  grDisplayTextDiv    = dojo.byId("grDisplayText");
  
  grDisplayNext();
  //grDisplayClock();
  }

function grDisplayClick()
  {
  if (grDisplayURL)
    {
    document.location.href=grDisplayURL;
    }
  }

function grDisplayClock()
  {
  var jetzt = new Date();
  var hours = jetzt.getHours();
  var minutes = jetzt.getMinutes();
  var seconds = jetzt.getSeconds();
  
  if (hours < 10) hours = '0' + hours;
  if (minutes < 10) minutes = '0' + minutes;
  if (seconds < 10) seconds = '0' + seconds;

  var text = hours + ':' + minutes + ':' + seconds;
  var chars  = text.split("");

  grDisplayTextDiv.innerHTML = '';
  
  var signcount = 0;
  for (var i in chars)
    {
    if(chars[i] == ":")
      position = -468;
    else if(chars[i] == ".")
      position = -480;
    else if ((chars[i] >= "0") && (chars[i] <= "9"))
      position = (chars[i].charCodeAt() - 47) * -12;    
    else    
      position = (chars[i].charCodeAt() - 54) * -12;
    //alert(chars[i].charCodeAt());
    
    grDisplayTextDiv.innerHTML += '<div class="grDisplayChar" style="background-position: ' + position + 'px 0px;">&nbsp;</div>';    
    //grDisplayGlowDiv.innerHTML += '<div class="grDisplayChar grDisplay' + parts[2] + '" style="background-position: ' + position + 'px 0px;">&nbsp;</div>';    
    
    signcount++;
    }  

  grDisplayContentDiv.style.left = '100px';    
  grDisplayTimer = window.setTimeout("grDisplayClock()", 1000);        
  }

function grDisplayNext()
  {
  if (grDisplayPulseTimer)
    window.clearTimeout(grDisplayPulseTimer);

  if (typeof grDisplayElements[grDisplayCounter] === 'undefined') 
    {
    grDisplayCounter = 0;
    grDisplayRound++;
    }
    
  var element = grDisplayElements[grDisplayCounter];
        
  if (element)
    {
    grDisplayTextDiv.innerHTML = "";    
    var parts = grDisplayElements[grDisplayCounter].split(";;");
    
    if (parts[0] == 'Pause')
      window.setTimeout("grDisplayNext()", (parts[1] * 1000));
    else if ((parts[4] > 0) && (parts[4] != grDisplayRound))
      window.setTimeout("grDisplayNext()", 500);
    else
      {
      var chars  = parts[0].toUpperCase().split("");
      grDisplayStop = parts[1];
  
      var signcount = 0;
      for (var i in chars)
        {
        if (chars[i] == ' ')
          position = 0;
        else if(chars[i] == "-")
          position = -222;
        else if(chars[i] == "+")
          position = -228;
        else if(chars[i] == ":")
          position = -234;
        else if(chars[i] == ".")
          position = -240;
        else if(chars[i] == "!")
          position = -246;
        else if(chars[i] == "?")
          position = -252;
        else if(chars[i] == '"')
          position = -258;
        else if(chars[i] == ",")
          position = -264;
        else if(chars[i] == "(")
          position = -270;
        else if(chars[i] == ")")
          position = -276;
        else if(chars[i] == "@")
          position = -282;
        else if(chars[i] == "%")
          position = -288;
        else if(chars[i] == "*")
          position = -294;
        else if(chars[i] == "#")
          position = -300;
        else if(chars[i] == "ß")
          position = -306;
        else if(chars[i] == "/")
          position = -312;
        else if ((chars[i] >= "0") && (chars[i] <= "9"))
          position = (chars[i].charCodeAt() - 47) * -6;    
        else    
          position = (chars[i].charCodeAt() - 54) * -6;
        //alert(chars[i].charCodeAt());
        
        grDisplayTextDiv.innerHTML += '<div class="grDisplayChar grDisplay' + parts[2] + '" style="background-position: ' + position + 'px 0px;"></div>';    
        
        signcount++;
        }
  
      grDisplayURL = parts[3];
  
      if (parts[5] == 'flash')
        grDisplayMode = 'flash';
      else if (parts[5] == 'pulse')
        grDisplayMode = 'pulse';
            
      dojo.connect(grDisplayContentDiv,'onmouseover','grDisplayPause');    
      dojo.connect(grDisplayContentDiv,'onmouseout','grDisplayHide');    
      
      if (grDisplayURL.length > 3)
        urlhandle = dojo.connect(grDisplayContentDiv,'onclick','grDisplayClick');    
      else
        dojo.disconnect(urlhandle);
        
      grDisplayLength = signcount * 6;
      grDisplayPos = grDisplayWidth;
      grDisplayContentDiv.style.left = grDisplayPos + 'px';
      grDisplayContentDiv.style.opacity = '1';
      //console.dir(grDisplayContentDiv);
      
      //console.dir(grDisplayTextDiv);
      grDisplayGo();
      }
    }
  
  grDisplayCounter++;
  }

function grDisplayPause()
  {
  if (grDisplayTimer)
    window.clearTimeout(grDisplayTimer);

  grDisplayAnimation.stop();

  grDisplayContentDiv.style.opacity = '1';
  grDisplayAnimation = dojo.anim(grDisplayContentDiv, {left: 94}, 1000);
  }

function grDisplayHide()
  {
  dojo.anim(grDisplayContentDiv, {opacity: 0}, 2000);
  grDisplayTimer = window.setTimeout("grDisplayNext()", 2100);   
  }

function grDisplayGo(fade)
  {
  if (fade==1)
    {
    grDisplayHide();
    }
  else if (grDisplayStop > 0)
    {
    var time = 5000;
    var stop = 94;
    grDisplayAnimation = dojo.anim(grDisplayContentDiv, {left: stop}, time, dojo.fx.easing.bounceOut);        
    grDisplayTimer = window.setTimeout("grDisplayGo(1)", (grDisplayStop*1000+time)); 
    }
  else
    {
    var time = grDisplayLength * 30;
    var stop = (-1 * grDisplayLength);
    grDisplayAnimation = dojo.anim(grDisplayContentDiv, {left: stop}, time, dojo.fx.easing.linear);        
    grDisplayTimer = window.setTimeout("grDisplayNext()", time); 
    }
  }
  
dojo.addOnLoad(grDisplayInit);    