/**   
 * Контроллер плееров
 */
var PlayerController = function() {

    /**
     * @var ID активного в данный момент плеера
     */
    var activePlayer    = "";
    
    /**
     * Затычки длϿ плееров
     */
    var playerStubs     = new Array();

    /**
     * Возвращает ϿϿылку на флϿш объект плеера
     *
     * @param string|int playerid
     */
    this.getPlayer = function(playerid) {
        var playerName = "player_" + playerid;
        var player = window[playerName] || document[playerName];
        return player;
    }

    /**
     * СбраϿывает ϿоϿтоϿние контроллера
     */
    this.resetState = function() {
        if (this.getPlayer(activePlayer)) {
            this.setPlayImage(activePlayer);
            this.hidePlayer(activePlayer);
        }
        activePlayer = "";
        playerStubs  = new Array()
    }

    /**
     * ВызываетϿϿ флϿшплеером по окончании загрузки плеера, когда вϿе колбϿки
     * гарантированно добавлены
     *
     * @param string|int playerid
     */
    this.startPlayback = function (playerid) {
        // Стартуем проигрывание
        this.getPlayer(playerid).playHandler();
    }
        
    /**
     * ОϿтанавливает либо Ͽтартует проигрывание определенного плеера
     *
     * @param string|int playerid
     * @param string username
     * @param string filename
     * @param string uploads_url
     */
    this.playPause = function(playerid, username, filename, uploads_url) {
		//alert(playerid+'\n'+username+'\n'+filename+'\n'+uploads_url+'\n');
        if (activePlayer == "") {
            this.showPlayer(playerid, username, filename, uploads_url);
            this.setPauseImage(playerid);
            activePlayer = playerid;

        } else if (activePlayer != playerid) {
            
            if (this.getPlayer(activePlayer).isPlayback()) {
                this.getPlayer(activePlayer).pauseHandler(); 
                this.setPlayImage(activePlayer);
            }
            this.hidePlayer(activePlayer);

            this.showPlayer(playerid, username, filename, uploads_url);
            this.setPauseImage(playerid);
            activePlayer = playerid;

        } else if (activePlayer == playerid) {
            if (this.getPlayer(playerid).isPlayback()) {
                this.getPlayer(playerid).pauseHandler();
                this.setPlayImage(playerid);
            } else {
                this.getPlayer(playerid).playHandler();
                this.setPauseImage(playerid);
            }   
        }
    }

    /**
     * Отображает (делает видимым) блок определенного плеера на Ͽтранице
     *
     * @param string|int playerid
     * @param string username
     * @param string filename
     * @param string uploads_url
     */
    this.showPlayer = function(playerid, username, filename, uploads_url) {
        playerStubs[playerid] = $("flash_player_" + playerid).innerHTML;
        
        $("flash_player_" + playerid).style.marginLeft = "26px";
        $("flash_player_" + playerid).style.height = "4px";
        $("flash_player_" + playerid).style.marginTop = "6px";
        $("flash_player_" + playerid).style.display = "";
		
		//$("displ_bloc_" + playerid).style.display = "none";
        $("player_line_" + playerid).style.display = "none";

        var flashvars = {
          uploads_url:     uploads_url,
          username:        username,
          filename:        filename,
          playerid:        playerid
        };

        var params = {
          src:                  "/images/player.swf?" + Math.floor(Math.random()*1000001),
          quality:              "high",
          pluginspage:          "http://www.macromedia.com/go/getflashplaye",
          align:                "middle",
          play:                 "true",
          loop:                 "true",
          scale:                "showall",
          wmode:                "transparent",
          devicefon:            "false",
          menu:                 "true",
          allowScriptAccess:    "always",
          allowFullScreen:      "false",
          movie:                "/images/player.swf?" + Math.floor(Math.random()*1000001),
          salign:               ""
        };

        var attributes = {
          id:   "player_" + playerid,
          name: "player_" + playerid
        };

        swfobject.embedSWF("/images/player.swf?" + Math.floor(Math.random()*1000001), "player_" + playerid, "160", "6", "9.0.0", "./expressInstall.swf", flashvars, params, attributes);
        swfobject.createCSS("#player_" + playerid, "outline: none"); 
    }

    /**
     * ПрϿчет выбранный плеер и возвращает заглушку на его меϿто. 
     *
     * @param string|int playerid
     */
    this.hidePlayer = function (playerid) {
        $("flash_player_" + playerid).style.display = "none";
        $("flash_player_" + playerid).innerHTML = playerStubs[playerid];
		
		//$("displ_bloc_" + playerid).style.display = "";
        //$("displ_bloc_" + playerid).innerHTML = "";
		
        $("player_line_" + playerid).style.display = "";
    }

    /**
     * МенϿет картинку кнопки на "pause"
     *
     * @param string|int playerid
     */
    this.setPauseImage = function (playerid) {
        $('player_button_' + playerid).src = "/images/pause.gif";
    }

    /**
     * МенϿет картинку кнопки на "play"
     *
     * @param string|int playerid
     */
    this.setPlayImage = function (playerid) {
        $('player_button_' + playerid).src = "/images/play.gif";
    }
}

/**
 * Создаем глобальный объект контроллера плееров
 */
var players = new PlayerController();
