﻿function VLCPopup(containerID, htmlVLC) {
    var container = document.getElementById(containerID);
    var closeItem = null;
    var closing = false;

    var vlcUri;
    var vlcName;
    var setContentTimeoutID = 0;

    function isPlayerVisible() {
        if (container) {
            return container.style.display != 'none';
        }
        return false;
    }

    if (htmlVLC) {
        htmlVLC.addEvent("stateChange", stateChabged);
    }
    function stateChabged() {
        var state = htmlVLC.getState();
        if (state == "standby" || state == "erreur") {
            setPlayerVisible(false);
        }
    }

    this.isVisible = function() {
        return isPlayerVisible();
    }

    function setPlayerVisible(value) {
        if (container && (value == true || value == false) && value != isPlayerVisible()) {
            container.style.display = value ? 'block' : 'none';
        }
    }

    this.setVisible = function(value) {
        setPlayerVisible(value)
    }

    this.setContent = function(uri, name, show) {
        if (setContentTimeoutID > 0) {
            window.clearTimeout(setContentTimeoutID);
            setContentTimeoutID = 0;
        }
        closing = false;
        this.setVisible(show);
        vlcUri = uri;
        vlcName = name;
        setContentTimeoutID = window.setTimeout(setContentTimeout, 100);
    }

    function setContentTimeout() {
        setContentTimeoutID = 0;
        if (htmlVLC) {
            htmlVLC.setContent(vlcUri, vlcName);
        }
    }

    function closePlayer() {
        closing = true;
        if (htmlVLC) {
            htmlVLC.close();
            var state = htmlVLC.getState();
            if (state == "standby" || state == "erreur") {
                setPlayerVisible(false);
            }
        }
    }

    this.close = function() {
        closePlayer();
    }

    this.setCloseItem = function(id) {
        closeItem = document.getElementById(id);
        if (closeItem) {
            HookEvent(closeItem, "click", closePlayerEvent);
        }
        function closePlayerEvent() {
            //window.setTimeout(closePlayer, 100);
            closePlayer();
        }
    }


    function HookEvent(element, eventName, callback) {
        if (typeof (element) == "string")
            element = document.getElementById(element);
        if (element == null)
            return;
        if (element.addEventListener) {
            element.addEventListener(eventName, callback, false);
        }
        else if (element.attachEvent)
            element.attachEvent("on" + eventName, callback);
    }


}