whispercast.loader = {
  global: {
    swf_base: '../assets/swf/',
    css_base: '../assets/css/',
    js_base: '../assets/js/',

    background_color: '000000',

    url: {},
    pstandby: {},
    play_on_load: true,
    url_mapper: '',
    restart_delay: 0.5,
    buffer_time: 1,
    video_align_x: 0.5,
    video_align_y: 0.5,
    show_ui: true,
    show_osd: true,
    muted: false,
    volume: 0.75,
    autohide_ui: 1,
    reference_width: 0,
    reference_height: 0,
    log_level: 0,
    sendExit: ''
  },
  local: {
  },

  initialize: function(params) {
    var G = whispercast.loader.global;
    var L = whispercast.loader.local;

    whispercast.loader.current = {};
    for (var i in G) {
      whispercast.loader.current[i] = (L[i] != undefined) ? L[i] : G[i];
    }
    for (var i in L) {
      if (whispercast.loader.current[i] == undefined)
        whispercast.loader.current[i] = L[i];
    }

    if (params)
      for (var i in params) {
        whispercast.loader.current[i] = params[i];
      }
  },

  setup: function() {
    var C = whispercast.loader.current;

    var links_element = document.getElementById('links');
    if (links_element) {
      var links = [];
      if (C.links) {
        for (var i = 0; i < C.links.length; i++) {
          var url = C.links[i];
          links.push('<a href="#" title="Comută pe streamul \''+url.name+'\'" onclick="whispercast.loader.setURL('+i+',undefined);return false;">'+url.name+'</a>');
        }
      }
      links_element.innerHTML = links.join('&nbsp;&middot;&nbsp;');
    }

    if (C.affiliate_id) {
      var path = C.affiliate_id.split('/');

      var source = path[0];
      whispercast.css.addSheet('affiliates/css/'+source+'.css');
      for (var index = 1; index < path.length; index++) {
        source = source+'/'+path[index];
      }
      whispercast.css.addSheet('affiliates/css/'+source+'.css');
    }
  },

  _string: function(o, name, def) {
    return (o[name] != undefined) ? o[name] : def;
  },
  _number: function(o, name, def) {
    if (o[name] == undefined)
      return def;
    if (typeof(o[name]) == 'string')
      return parseFloat(o[name]);
    if (typeof(o[name]) == 'number')
      return o[name];
    return def;
  },
  _boolean: function(o, name, def) {
    if (o[name] == undefined)
      return def;
    if (typeof(o[name]) == 'string') {
      if (o[name] == '0' || o[name] == 'false')
        return false;
      if (o[name] == '1' || o[name] == 'true')
        return true;
    }
    if (typeof(o[name]) == 'number')
      return o[name] != 0;
    if (typeof(o[name]) == 'boolean')
      return o[name];
    return def;
  },

  create: function() {
    var P = whispercast.loader;
    var C = whispercast.loader.current;

    P.instance = new whispercast.Player(C.swf_base, 'player', C.player_width, C.player_height, C.background_color,
      {
        url0: P._string(C.url, 'normal', ''),
        //url_standby0: P._string(C.url, 'standby', ''),
        url_standby0: P._string(C, 'pstandby', ''),
        play_on_load: P._boolean(C, 'play_on_load', true) ? 1 : 0,
        url_mapper: P._string(C, 'url_mapper', ''),
        restart_delay: P._number(C, 'restart_delay', 0.5),
        buffer_time: P._number(C, 'buffer_time', 0.1),
        video_align_x: P._number(C, 'video_align_x', 0.5),
        video_align_y: P._number(C, 'video_align_y', 0.5),
        show_ui: P._boolean(C, 'show_ui', true) ? 1 : 0,
        show_osd: P._boolean(C, 'show_osd', true) ? 1 : 0,
        muted: P._boolean(C, 'muted', false) ? 1 : 0,
        volume: P._number(C, 'volume', 0.75),
        autohide_ui: P._number(C, 'autohide_ui', 1),
        reference_width: P._number(C, 'reference_width', 0),
        reference_height: P._number(C, 'reference_height', 0),
        log_level: P._number(C, 'log_level', 0),
		sendExit: P._string(C, 'sendExit', '')
      }
    );
    P.instance.create();
  },
  destroy: function() {
    var P = whispercast.loader;

    if (P.instance) {
      P.instance.destroy();
      delete P.instance;
    }
  },

  setURL: function(index, play) {
    var P = whispercast.loader;
    var C = whispercast.loader.current;

    if (P.instance) {
      var player = P.instance.getPlayer();
      if (player) {
        player.setURL_(0, C.links[index].normal);
        player.setStandbyURL_(0, C.links[index].standby);
      }
    }
  }
}

