var iptv = {

  formatId: null,

  init: function(id)
  {
    iptv.loadCategories();
    iptv.loadPlayer(id);
    iptv.adjustPlaylistSize();
    $(window).resize(iptv.adjustPlaylistSize);
    iptv.openSettingsDialog();
    window.focus();
  }, // end func init

  loadCategories: function()
  {
    $('#main-menu').load(
      '/iptv.php',
      {
        'procedure':      'getCategories',
        'output':         'ul',
        'output-prefix':  'category-'
      },
      function()
      {
        $('#main-menu ul li').click(iptv.loadCategory);
        iptv.loadCategory(null, $('#main-menu ul li:first').attr('id'));
      }
    );
  }, // end func loadCategories

  loadCategory: function(e, id)
  {
    if (id == null)
      id = this.id;

    $('#main-menu ul li').removeClass('selected');
    $('#main-menu ul li#' + id).addClass('selected');

    $.post(
      '/iptv.php',
      {
        'procedure':        'getCategory',
        'id':               id,
        'id-prefix':        'category-',
        'output':           'json'
      },
      function(data)
      {
        $('#footer').html(data.footer);
      },
      'json'
    );

    $('#playlist-box').load(
      '/iptv.php',
      {
        'procedure':        'getClips',
        'id':               id,
        'id-prefix':        'category-',
        'output':           'html',
        'output-template':  'playlist.php'
      },
      function()
      {
        $('.playlist-item, .playlist-item *').click(iptv.loadClip);
        $('.playlist-item:first img').click();
      }
    );
  }, // end func loadCategory

  loadClip: function(e, id)
  {
    if (id == null) {
      var node = this;
      while (node != null) {
        if (node.tagName != null && node.tagName == 'DIV' && $(node).hasClass('playlist-item'))
          break;
        node = node.parentNode;
      }
      if (!$(node).hasClass('playlist-item') || $(node).hasClass('selected'))
        return;

      id = node.id.substr(5);
//    } else if ($('#clip-' + id).hasClass('selected')) {
//      return;
    }

    $('.playlist-item').removeClass('selected');
    $('#clip-' + id).addClass('selected')[0].scrollIntoView(true);

    if ($('#player-box').attr('player') == 'flash') {
      $.post(
        '/iptv.php',
        {
          'procedure':        'getClipData',
          'id':               id,
          'id-prefix':        'clip-',
          'format':           iptv.formatId,
          'output':           'json'
        },
        function(data)
        {
          $('#footer').html(data.body);
          $f().play(data.url);
        },
        'json'
      );
    } else {
      iptv.loadWMPlayer();
    }
  }, // end func loadClip

  openSettingsDialog: function()
  {
    if ($('#dialog-settings').length)
      return $('#dialog-settings').toggle();

    $.post(
      '/iptv.php',
      {
        'procedure':        'getFormats',
        'output':           'text'
      },
      function(data)
      {
        $('body').append('<div id="dialog-settings">' + data + '</div>');
        $('.format-list input').click(iptv.saveFormat);
        $('#format-' + iptv.formatId).click()[0].checked = true;
      }
    );
  }, // end func openSettingsDialog

  saveFormat: function()
  {
    if ($('#dialog-settings input:checked').val() == undefined)
      return false;

    iptv.loadPlayer($('#dialog-settings input:checked').val());

    //$('#dialog-settings').hide();
  }, // end func saveFormat

  loadPlayer: function(id)
  {
    if (iptv.formatId == id)
      return;

    iptv.formatId = id;

    $.get(
      '/iptv.php',
      {
        'procedure':        'getPlayerType',
        'id':               iptv.formatId,
        'output':           'text'
      },
      function(data)
      {
        switch (data) {
          case 'wmp':
            iptv.loadWMPlayer();
            break;

          default:
            iptv.loadFlashPlayer();
        }
        $('.playlist-item.selected img').click();
      }
    );
  }, // end func loadPlayer

  loadFlashPlayer: function()
  {
    // unload WMP player
    if ($('#player-box').attr('player') == 'flash') {
      iptv.loadClip(null, $('.playlist-item.selected').attr('id').substr(5));
      return;
    }

    $('#player-box').attr('player', 'flash').html('<div id="player-wrapper"></div>');

    flowplayer(
      'player-wrapper',
      {
        src:    '/swf/flowplayer.commercial-3.1.5.swf',
        wmode:  'opaque'
      },
      {
        key: location.host.match(/nettool-mediaviewer\.de$/) ? '#$4bbfc7c292d502b3768' : (location.host.match(/networkeratwork\.de$/) ? '#$cb710b1f3af13dbf51c' : '#$81c5c56d21562b73d7a'),
        canvas: {
          background:         '#000000',
          backgroundGradient: 'none'
        },
        clip:
        {
          autoPlay: true,
          scaling:  'fit'
        },
        plugins:
        {
          controls: {
            autoHide: 'always'
          }
        },
        onLoad: function()
        {
          $('#player-box').attr('player', 'flash');
          iptv.fixSafari();
        }
      }
    );

  }, // end func loadFlashPlayer

  loadWMPlayer: function()
  {
    if ($('#player-box').attr('player') == 'flash') {
      $f().unload();
      $('#player-wrapper_api').remove();
    }
    $('#player-box iframe').remove();
    $('#player-box').attr('player', 'wmp');

    var id = $('.playlist-item.selected').attr('id');

    $.post(
      '/iptv.php',
      {
        'procedure':        'getWMPlayer',
        'id':               id,
        'id-prefix':        'clip-',
        'format':           iptv.formatId,
        'output':           'html',
        'output-template':  'wmp.php'
      },
      function(data)
      {
        $('#player-box').html(data);
        iptv.adjustPlaylistSize();
      }
    );
  }, // end func loadWMPlayer

  adjustPlaylistSize: function()
  {
    if (document.all)
      $('#playlist-box').css('height', $('#body')[0].offsetHeight + 'px');
/*
    $('#wmp-wrapper').css(
      'height',
      $('#body')[0].offsetHeight + 'px'
    ).css(
      'width',
      ($('#body')[0].offsetWidth - $('#playlist-box')[0].offsetWidth) + 'px'
    );
*/
    setTimeout("iptv.fixSafari();", 100);
  }, // end func adjustPlaylistSize

  fixSafari: function()
  {
    var h;

    if ($('#player-wrapper object').length && $('#player-wrapper object')[0].offsetHeight != (h = $('#player-wrapper')[0].offsetHeight))
      $('#player-wrapper object').css('height', h + 'px');
  } // end func fixSafari

} // end class iptv

jQuery(function() {iptv.init(2);});
