﻿// JScript 文件

var pointX;
//var oVolumeSlider;
//var oProgressSlider;
//var oVolumeContainer;
//var oProgressContainer;
var oDrag;
var oStep;
var minX,maxX;
var bIsVolumn;
var $Player;
var progressContainerId;
var progressSliderId;
var progressContainerX;

function Player(mediaId)
{
    if(!$Player)
    {
        this.volumeX = 0;
        this.prgressX = 0;

        this.mediaPlay = $get(mediaId);
        mediaPlayerId = mediaId;
        this.interval= 1000;
        
        this.volumeContainer = null;
        this.volumeSlider = null;
        this.progressContainer = null;
        this.progressSlider = null;
        this.mute= null;
       this.playControl = null; 
        this.time = null;
        this.mediaPlay.attachEvent('playStateChange', SetProgress);
        $Player = this;
    }
}

Player.prototype.SetInterval = function(value)
{
    if(this.interval!= value)
        this.interval = value;
}

Player.prototype.InitVolume = function(containerId,sliderId)
{
//    oProgressContainer = containerId;
//    oProgressSlider= sliderId;
    this.volumeContainer = $get(containerId);
    this.volumeSlider = $get(sliderId);
    
    var oElement = document.createElement("<div id='volStep'></div>");
    oElement.style.width = (parseInt(this.volumeContainer.style.width)/2)+"px";
    oElement.style.height = this.volumeContainer.currentStyle.height;
    this.volumeContainer.appendChild(oElement);
    oElement.className = 'progressBg1';

    
    this.volumeSlider.style.position = 'absolute';
    var x = this.volumeContainer.offsetLeft;
    var parent =this.volumeContainer;
    while(parent =parent.offsetParent)
    {
        x = x+parent.offsetLeft;
    }
    this.volumeSlider.style.left = (x+parseInt(this.volumeContainer.style.width)/2)+'px';
    
//    var top = this.volumeContainer.offsetTop -parseInt((this.volumeSlider.offsetHeight-this.volumeContainer.offsetHeight)/2);
    
//    this.volumeSlider.top = top+'px';
    this.volumeSlider.onmousedown = function() {bIsVolumn=true;};
    this.volumeSlider.attachEvent('onmousedown',OnProgressSliderDown);

}
Player.prototype.InitMute = function(muteId)
{
    this.mute = $get(muteId);
    this.mute.attachEvent('onclick',SetMute);
}

Player.prototype.InitTime = function(oElementId,type)
{
    this.time = $get(oElementId);
    setInterval(function(){SetTimeText(type);},1000);
}

Player.prototype.InitPlayControl = function(oElementId)
{
    this.playControl = $get(oElementId);
    this.mediaPlay.attachEvent('playStateChange', PlayerStatus_OnChange);
}


Player.prototype.InitProgress = function(containerId,sliderId)
{
//    oVolumeContainer = containerId;
//    oProgressSlider = sliderId;
    this.progressContainer = $get(containerId);
    this.progressSlider = $get(sliderId);
    progressContainerId = containerId;
    progressSliderId = sliderId;
    
    var oElement = document.createElement("<div id='proStep'></div>");
    oElement.style.width = '3px';
    oElement.style.height = this.progressContainer.currentStyle.height;
    this.progressContainer.appendChild(oElement);
    oElement.className = 'progressBg1';

    
    this.progressSlider.style.position = 'absolute';
//    this.progressSlider.style.left = this.progressContainer.offsetLeft+'px';
    var x = this.progressContainer.offsetLeft;
    var parent =this.progressContainer;
    while(parent =parent.offsetParent)
    {
        x = x+parent.offsetLeft;
    }
    this.progressSlider.style.left = x+'px';
//    var top = this.progressContainer.offsetTop -parseInt((this.progressSlider.offsetHeight-this.progressContainer.offsetHeight)/2);
    
    this.progressSlider.attachEvent('onmousedown',OnProgressSliderDown);
    this.progressSlider.onmousedown = function(){bIsVolumn=false;};
}

Player.prototype.Pause = function()
{
    this.mediaPlay.controls.pause();
}
Player.prototype.Play = function()
{
    this.mediaPlay.controls.play();
}
//Player.prototype.OnPageResize = function()
function OnPageResize()
{
    var x = $Player.progressContainer.offsetLeft;
    var parent =$Player.progressContainer;
    while(parent =parent.offsetParent)
    {
        x = x+parent.offsetLeft;
    }
    progressContainerX =  x;
    
    if($Player.mediaPlay.Controls.CurrentPosition)
    {
        var i = parseInt($Player.mediaPlay.Controls.CurrentPosition/$Player.mediaPlay.CurrentMedia.Duration*100);
        $Player.progressSlider.style.left = (x +parseInt($Player.progressContainer.style.width)*i/100)+'px';
    }
    else
    {
        $Player.progressSlider.style.left = progressContainerX +'px';
    }
    
    x = $Player.volumeContainer.offsetLeft;
    parent =$Player.volumeContainer;
    while(parent =parent.offsetParent)
    {
        x = x+parent.offsetLeft;
    }
    $Player.volumeSlider.style.left = (x+parseInt($Player.volumeContainer.style.width)/2)+'px';
}

function PlayerStatus_OnChange(newstate)
{
    if(newstate == 3)
    {
        if($Player.playControl)
       { 
            if ($Player.playControl.src.indexOf("images/audition/")<0) {            
                $Player.playControl.src = 'images/pause.gif';
            }
            else
            {
                $Player.playControl.src = 'images/audition/box_pause.gif';
            }
            $Player.playControl.title = '暂停';
       } 
    }
    else
    {
        if($Player.playControl)
       { 
            if ($Player.playControl.src.indexOf("images/audition/")<0)
            {
                $Player.playControl.src = 'images/play.gif';
            }
            else
            {
                $Player.playControl.src = 'images/audition/audition_play.gif';
            }
            $Player.playControl.title = '播放';
       } 
    }
}
function SetMute()
{
    if($Player.mediaPlay.settings.mute==false)
    {
        $Player.mediaPlay.settings.mute = true;
        $Player.mute.src = 'images/voiceless.gif';
       $Player.mute.title = '静音'; 
    }
    else
    {
        $Player.mediaPlay.settings.mute = false;
        $Player.mute.src = 'images/vol.gif';
       $Player.mute.title = '音量'; 
    }
}

function SetProgress()
{
        var oContainer = $get(progressContainerId);
        var oSlider = $get(progressSliderId);
        var oSetp = $get(progressContainerId).children[1];
    if($Player.mediaPlay.PlayState == 2 || $Player.mediaPlay.PlayState == 3)
    {
//        alert($get("MediaPlay").Controls.CurrentPosition);
//        alert($Player.mediaPlay.Controls.CurrentPosition);
//        alert($Player.interval);
        var i = parseInt($Player.mediaPlay.Controls.CurrentPosition/$Player.mediaPlay.CurrentMedia.Duration*100);
        oSetp.style.width = (parseInt(oContainer.style.width)*i/100)+'px';
        
        var parent =oContainer;
        if(!progressContainerX)
        {
            progressContainerX = oContainer.offsetLeft;
            while(parent =parent.offsetParent)
            {
                progressContainerX = progressContainerX+parent.offsetLeft;
            }
        }
        
        
        oSlider.style.left = (progressContainerX + parseInt(oContainer.style.width)*i/100)+'px';
        setTimeout(SetProgress,1000);
    }
    else
    {
        if(progressContainerX)
            oSlider.style.left = progressContainerX+'px';
        oSetp.style.width ='0px'
    }
}

function SetTimeText(type)
{
    if('all'== type)
    {
        if($Player.mediaPlay.currentMedia)
            $Player.time.innerText = $Player.mediaPlay.controls.currentPositionString+'/'+ $Player.mediaPlay.currentMedia.durationString;
    }
    else
    {
        $Player.time.innerText = $Player.mediaPlay.controls.currentPositionString;
    }
}

function OnProgressSliderDown()
{
    var e = window.event;
    oDrag = window.event.srcElement;
    pointX = e.clientX-parseInt(window.event.srcElement.style.left);
    oStep = oDrag.parentElement.children[1];
    
    var parent = oDrag.parentElement;
    var x =parent.offsetLeft;
    var width = parent.offsetWidth
    while(parent =parent.offsetParent)
    {
        x = x+parent.offsetLeft;
    }
    minX = x;
    maxX = x + width;
    
    document.attachEvent("onmousemove",OnMouseMove);
    document.attachEvent("onmouseup",OnMouseUp);
}

function OnMouseMove(e)
{
    if(e==null)e=window.event;
    if( e.button == 1)
    {
        var i = e.clientX-pointX;
        if(i>minX&&i<maxX)
        {
            oDrag.style.left = (e.clientX-pointX)+"px";
            oStep.style.width = (parseInt(oDrag.style.left)-minX)+'px';
        }
    }
}
function OnMouseUp()
{
    if(bIsVolumn)
    {
        var i = parseInt(parseInt(oStep.style.width)/parseInt(oDrag.parentElement.style.width)*100);
        $Player.mediaPlay.settings.volume = i;
    }
    else
    {
    
    }
    document.detachEvent("onmousemove",OnMouseMove);
    document.detachEvent("onmouseup",OnMouseUp);
}


