
function Browser()
{
    var ua, i;

    this.isIE    = false;
    this.isNS    = false;
    this.version = null;

    ua = navigator.userAgent;

    if ((i = ua.indexOf('MSIE')) >= 0) {
        this.isIE = true;
        this.version = parseFloat(ua.substr(i + 'MSIE'.length));
        return;
    }

    if ((i = ua.indexOf('Netscape6/')) >= 0) {
        this.isNS = true;
        this.version = parseFloat(ua.substr(i + 'Netscape6/'.length));
        return;
    }

    /* Treat any other "Gecko" browser as NS 6.1. */
    if ((i = ua.indexOf('Gecko')) >= 0) {
        this.isNS = true;
        this.version = 6.1;
        return;
    }
}

window.browser = new Browser();

/*
 * WMP Event object
 */
var WmpEvent = {};
WmpEvent.attachWmpEvent = function (event, eventType, eventHandler) {
    //return false;
    if (window.browser.isIE) {
        document.attachEvent('on' + eventType, eventHandler);
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }

    if (window.browser.isNS) {
        document.addEventListener(eventType, eventHandler, true);
        event.preventDefault();
    }
}

WmpEvent.detachWmpEvent = function (eventType, eventHandler) {
    if (window.browser.isIE) {
        document.detachEvent('on' + eventType, eventHandler);
    } else if (window.browser.isNS) {
        document.removeEventListener(eventType, eventHandler, true);
    }
}

// This object represents a Windows Media Player object
// with ability to bind events on an HTML page to its controls

function MediaPlayer(mediaUrl)
{
    /* URL: "private" property and method */
    var getUrl = function () { return mediaUrl; }

    /* Player type */
    var isActiveX = function () { return null != window.ActiveXObject; }
    var isOpera = function () { return -1 != navigator.userAgent.indexOf('Opera'); }
    var isWmp11 = function () {
        /*
        return null != navigator.mimeTypes &&
               null != navigator.mimeTypes['application/x-ms-wmp'] &&
               null != navigator.mimeTypes['application/x-ms-wmp'].description &&
               navigator.mimeTypes['application/x-ms-wmp'].description == 'np-mswmp' &&
               -1 == navigator.userAgent.indexOf('Opera');
        */
        if (isActiveX()) {
            return false;
        }

        if (!!navigator.plugins) {
            for (var i in navigator.plugins) {
                if ('np-mswmp' == navigator.plugins[i].description) {
                    return true;
                }
            }
        }

        return false;
    }

    /* HTML code for player */
    var getPlayerHtml = function (autostart) {
        var html = '';
        autostart = !!autostart ? 1 : 0;

        if (isWmp11() && !isOpera()) {
            html =  '<object id="wmplayer" type="application/x-ms-wmp" data="' + getUrl() + '" width="0" height="0">';
            html += '<param name="URL" value="' + getUrl() + '" />';
            html += '<param name="uiMode" value="minimal" />';
            html += '<param name="EnablePositionControls" value="true" />';
            html += '<param name="ShowControls" value="1" />';
            html += '<param name="ShowDisplay" value="0" />';
            html += '<param name="ShowStatusBar" value="0" />';
            html += '</object>';
        } else if (isActiveX()) {
            /* no object code needed */
        } else {
            html  = '<embed id="wmplayer" name="wmplayer" type="application/x-mplayer2"';
            html += ' pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" ';
            /*html += ' filename="' + getUrl() + '" ';*/
            html += ' src="' + getUrl() + '" ';
            html += ' EnablePositionControls="1" ';
            html += ' ShowControls="1" ShowDisplay="0" ShowStatusBar="0" AutoStart="' + autostart + '" width="0" height="0" />';
        }

        return html;
    }

    var volume = 0;
    var playing = true;
    var wmpControl = null;
    
    /* initialization */
    var playerContainer = null;
    var initPlayer = function () {
        playerContainer = document.createElement('div');
        playerContainer.style.position = 'absolute';
        playerContainer.style.width  = '1px';
        playerContainer.style.height = '1px';
        playerContainer.setAttribute('id', 'player_container');
        document.body.appendChild(playerContainer);
        playerContainer.innerHTML = getPlayerHtml(true);
        
        if (isActiveX()) {
            wmpControl = new ActiveXObject('WMPlayer.OCX.7');
            wmpControl.URL = getUrl();
        } else if (isWmp11()) {
            wmpControl = document.getElementById('wmplayer');
        } else {
        	wmpControl = document.getElementById('wmplayer');
        }
        
        wmpControl && wmpControl.settings  && (wmpControl.settings.volume = sVolume);
    }
    initPlayer();
    
    var statusbarText = null;
    this.setStatusbarText = function (text) { statusbarText = text; }

    
    var statusbar;
    var volumebar;

    var volumeSlider = null;
    window.volumeSliderInfo = {};

    this.play = function () {
        if (false == playing) {
            playing = true;
            
            if (wmpControl && wmpControl.controls) {
                wmpControl.controls.play();
            } else {
                playerContainer.innerHTML = getPlayerHtml(true);/*  */
            }
        }
    }
    
    this.stop = function () {
        if (true == playing) {
            playing = false;
            
            if (wmpControl && wmpControl.controls) {
                wmpControl.controls.stop();
            } else {
                playerContainer.innerHTML = getPlayerHtml(false);/*  */
            }
        }
    }
    
    this.setVolume = function (vol){
    	wmpControl && wmpControl.settings  && (wmpControl.settings.volume = vol);
    }
    
    this.setUrl = function (newUrl) {
        mediaUrl = newUrl;
        wmpControl && (wmpControl.URL = newUrl);
        
        if (!wmpControl) {
            playerContainer.innerHTML = getPlayerHtml(true);
        }
    }

}
