  var online = new Object();
  var request = new Object();
  var udalost = new Array();
  var udalost_filter = '';
  var udalost_class = true;
  
  var refresh_time = 60000;
  var refresh_time_rem = 0;
  var xml_url_f = 'http://aktualne.centrum.cz/onlinator/fotbal/online/online_'; 
  var xml_url_h = 'http://aktualne.centrum.cz/onlinator/hokej/online/online_';
  var xml_url = '';
  var xml_id = '0';
  var css_gol = 'gol';
  var cast_hry = '0';
  
  function $ ( obj )
  {
    return document.getElementById(obj);
  }
  
  function rand ( )
  {
    return Math.round(Math.random()*100000);
  }

  request.send = function ( url, callback, data ) 
  {
    var req;	
  
    try {
      req = new ActiveXOBject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (ei) {
        req = null;
      }
    }
      
    if ( !req && typeof XMLHttpRequest != "undefined" )
      req = new XMLHttpRequest();

    req.onreadystatechange = function ( ) 
    {
      if (req.readyState == 4) 
      {
        if (req.status < 400) 
        {
          callback(req);
        } 
      }
    }
    
    try {
      req.open("GET", url, true);
  		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset: utf-8');		
      req.send(data);
      //alert("Content-Type: " + req.getResponseHeader("Content-Type") + "\n");
    } catch (e) {
      cast_hry = 'k';
    }
    	
    return req;
  }
 
   online.timer = function ( _x )
  {
    var width = Math.round( 294 * ( (refresh_time - _x) / refresh_time ) ) + 'px';
    
    $('refresh_timer').style.width = width;
    
    if ( _x != refresh_time )
    {
      _x = parseInt(_x);
      _x += 100;
    }
    else
      _x = 0;
      
    if ( refresh_time_rem == 0 )
    {
      refresh_time_rem = refresh_time;
      request.send(xml_url + xml_id + '.xml?' + rand(), online.update, '');      
    }
    else
      refresh_time_rem -= 100

   
    if ( cast_hry != 'k' )
      setTimeout("online.timer(" + _x + ")", 100);
    else
      $('refresh_timer').style.width = 0;
  }
  
  online.init = function ( )
  {  
    var inputs = document.getElementsByTagName('input');
    var nfound = true;
    
    var divadd = '<div id="refresh_timer" style="font-size: 0; height: 1px; position: relative; top: 12px; background-color: rgb(4, 88, 26);"></div>';
    var divold = $('refresh_online').innerHTML;
    
    for (i = 0; i < inputs.length; i++) 
    {
      var regex = new RegExp("online_id", "i");

      if (regex.test(inputs[i].getAttribute('name'))) 
        nfound = false;
    }
    
    if ( nfound === true )
      return;

    xml_id = $('online_id').value;
    xml_url = ( $('online_sport').value == 'fotbal' ) ? xml_url_f : xml_url_h;
    css_gol = ( $('online_sport').value == 'fotbal' ) ? 'gol' : 'gol-h';
    
    $('refresh_online').innerHTML = divadd + divold;
    $('refresh_timer').style.width = '294px';
    
    online.timer(0)
  }
  
  online.filter = function ( _type )
  {
    switch ( _type )
    {
      case 1:   udalost_filter = 'gol';      break; 
      case 2:   udalost_filter = 'zluta';    break;
      case 3:   udalost_filter = 'cervena';  break;
      case 4:   udalost_filter = 'stridani'; break;
      case 5:   udalost_filter = 'dulezite'; break;
      case 6:   udalost_filter = 'vylouceni';break;
      default:  udalost_filter = '';
    }
    online.display();
  }
  
  online.row = function ( _id, _time, _text, _type )
  {
    var el_p = document.createElement('p');
    var el_strong = document.createElement('strong');
    var el_content = document.createElement('span');
    var el_clear = document.createElement('span');
    
    switch ( _type )
    {
      case 'gol':      el_content.className = css_gol; break;
      case 'zluta':    el_content.className = 'zluta'; break;
      case 'cervena':  el_content.className = 'cervena'; break;
      case 'stridani': el_content.className = 'stridani'; break;
      case 'npenalta':
      case 'dulezite': el_content.className = 'udalost'; break;
      case 'vylouceni':el_content.className = 'vylouceni'; break;
      case 'cas':      el_content.className = 'konec'; break;
    }
        
    el_strong.innerHTML = ( _time ) ? _time : '';
    el_content.innerHTML = _text;
    el_clear.className = 'clear';
    el_p.appendChild(el_strong);
    el_p.appendChild(el_content);
    el_p.appendChild(el_clear);
    el_p.setAttribute('id', 'event_' + _id);
    
    if ( udalost_class )
    {
      el_p.className = 's';
      udalost_class = false;
    }
    else
      udalost_class = true;
      
    return el_p;
  }
  
  online.display = function ( )
  {
    $('minuty').innerHTML = '';
    
    udalost_class = true;
    
    for( var i = j = 0; i < udalost.length; i++ )
    {
      if ( udalost_filter == udalost[i]['typ'] || !udalost_filter )
      {
        var el_p = online.row( udalost[i]['id'], udalost[i]['cas'], udalost[i]['text'], udalost[i]['typ'] ); 
        $('minuty').appendChild(el_p);
        j++;
      }
    }

    if ( !j )
    {
      $('minuty').innerHTML = '';
    }
  }
  
  online.update = function ( _response )
  {
    var root = _response.responseXML.getElementsByTagName('zapas')[0];
    var node_s = root.getElementsByTagName('stav')[0];
    var node_u = root.getElementsByTagName('udalost');

    cast_hry = node_s.getAttribute('casthry').substring(0,1);
    
    $('result').innerHTML = node_s.getAttribute('celkovy') + '<span>' + node_s.getAttribute('polocas') + '</span>';
    $('minuty').innerHTML = '';

    udalost = new Array();
       
    for( var i = 0; i < node_u.length; i++ ) 
    {
      udalost[i] = new Array();
      udalost[i]['id'] = node_u[i].getAttribute('value');
      udalost[i]['cas'] = ( node_u[i].getAttribute('cas') == '0' ) ? '' : node_u[i].getAttribute('cas');
      udalost[i]['typ'] = node_u[i].getAttribute('typ');
      udalost[i]['text'] = node_u[i].firstChild.nodeValue;
    }
    
    online.display();
  }

