﻿// JScript File
Type.registerNamespace("manathanWeb.Movie");

manathanWeb.Movie.VolumeBar = function(target, movie, movieId) {
    this.target = target;
    this.bars = null;
    this.movie = movie;
    this.movieId = ((movieId) ? movieId : "mwQuicktimeMovie");
    
    // VolumeChanged is a delegate for the event that the volume is changed
    this.VolumeChanged = null;
}

manathanWeb.Movie.VolumeBar.prototype = {
    _SetVol: function(volume, index) {
        if (volume > 100)
            volume = 100;
        if (!this.bars ||
            this.bars.length < 1)
            return;
        try {
            var i;
            for (i=0;i<=index;i++) 
                $get(this.bars[i]).className = 'bar active';
            for (i = index+1; i < this.bars.length; i++) 
                $get(this.bars[i]).className = 'bar inactive';
            this.movie.SetVolume(volume);
        } catch (e) {
            alert("manathanWeb.Movie.VolumeBar._SetVol(volume) error - " + e.message);
        }
    },
    
    OnVolumeChanged: function() {
        this._SetVol(this.movie.GetVolume());
    },
    
//    AddQtEvent: function(eventName, target) {
//        /// <summary>Adds a quicktime event to the object</summary>
//        /// <param name="eventName">The event name to register</param>
//        /// <param name="target">The target delegate to call</param>
//        var obj = document.getElementById(this.movieId);
//        if ( !obj )
//            obj = document.getElementById(this.movieId + "_embedded");
//        if ( obj )
//            $addHandler(obj, eventName, target);
//    },

    SetVolume: function(eventElement) {
        if (!eventElement)
            return;
        try {
            var i;
            var index = new Number(eventElement.target.attributes['index'].value);
            var volume = eventElement.target.attributes['volume'].value;
            if (volume.indexOf('%') > -1)
                volume = volume.substring(0, volume.length -1);
            this._SetVol(volume, index);
            // call the delegate
            if (this.VolumeChanged)
                this.VolumeChanged(new Number(volume));
        } catch (e) {
            alert("manathanWeb.Movie.VolumeBar.SetVolume(eventElement) error - " + e.message);
        }
    },
    
    AppendAttribute: function(parent, name, value) {
        var attr = document.createAttribute(name);
        attr.nodeValue = value;
        parent.setAttributeNode(attr);
    },
    
    Init: function() {
        if (!this.target) {
            alert('manathanWeb.Movie.VolumeBar.Init() error - VolumeBar not specified!');
            return;
        }
        try {
            this.bars = new Array();
            var i;
            var count = this.target.getElementsByTagName('div').length;
            var parentHeight = this.target.style.height;
            
            // Add QT Event Listener
//            var onVolumeChangedDelegate = Function.createDelegate(this, this.OnVolumeChanged);
//            this.AddQtEvent('qt_volumechange', onVolumeChangedDelegate);
            
            for(i=0;i<count;i++) {
                var elem = this.target.getElementsByTagName('div')[i];
                if (!elem ||
                    elem.className != "bar")
                    continue;
                var volume = elem.style.height;
                this.AppendAttribute(elem, "index", i);
                this.AppendAttribute(elem, "volume", volume);
                this.bars.push(elem.id);
                var delegate = Function.createDelegate(this, this.SetVolume);
                $addHandler(elem, "click", delegate);
            }
        } catch (e) {
            alert("manathanWeb.Movie.VolumeBar.Init() error - " + e.message);
        }
    }
}

manathanWeb.Movie.VolumeBar.registerClass('manathanWeb.Movie.VolumeBar');
