| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | /* global $ */
var RTCBrowserType = require("./RTCBrowserType");
var RTC = require('./RTC');
var RTCUIHelper = {
    /**
     * Returns the name of 'video' element depending on the browser that we're
     * currently using.
     * @returns {string} 'video' or 'object' string name of WebRTC video element
     */
    getVideoElementName: function () {
        return RTCBrowserType.isTemasysPluginUsed() ? 'object' : 'video';
    },
    /**
     * Finds video element inside of the given container.
     * @param containerElement HTML element node instance which is supposed to
     *        contain the video element.
     * @returns {HTMLElement} video HTML element instance if found inside of the
     *          container or undefined otherwise.
     */
    findVideoElement: function (containerElement) {
        var videoElemName = RTCUIHelper.getVideoElementName();
        if (!RTCBrowserType.isTemasysPluginUsed()) {
            return $(containerElement).find(videoElemName)[0];
        } else {
            var matching = $(containerElement).find(
                ' ' + videoElemName + '>param[value="video"]');
            if (matching.length < 2) {
                return matching.parent()[0];
            } else {
                // there are 2 video objects from FF
                // object with id which ends with '_default'
                // (like 'remoteVideo_default')
                // doesn't contain video, so we ignore it
                for (var i = 0; i < matching.length; i += 1) {
                    var el = matching[i].parentNode;
                    // check id suffix
                    if (el.id.substr(-8) !== '_default') {
                        return el;
                    }
                }
            }
        }
        return undefined;
    },
    /**
     * Sets 'volume' property of given HTML element displaying RTC audio or
     * video stream.
     * @param streamElement HTML element to which the RTC stream is attached to.
     * @param volume the volume value to be set.
     */
    setVolume: function (streamElement, volume) {
        if (!RTCBrowserType.isIExplorer()) {
            streamElement.volume = volume;
        }
    },
    /**
     * Sets 'autoplay' property of given HTML element displaying RTC audio or
     * video stream.
     * @param streamElement HTML element to which the RTC stream is attached to.
     * @param autoPlay 'true' or 'false'
     */
    setAutoPlay: function (streamElement, autoPlay) {
        if (!RTCBrowserType.isIExplorer()) {
            streamElement.autoplay = true;
        }
    },
    /**
     * Extract video stream id from the video element.
     * @param {Element} element
     * @returns {string} video stream id or empty string
     */
    getVideoId: function (element) {
        var src = RTC.getVideoSrc(element);
        if (!src) {
            return "";
        }
        if (RTCBrowserType.isFirefox()) {
            return src.id;
        }
        return src;
    }
};
module.exports = RTCUIHelper;
 |