Type.registerNamespace('Muse');
Muse.Video = function(element)
{     
    Muse.Video.initializeBase(this, [element]);
    this._flashControl = null;
    this._clickDelegate = null;
    this._hoverDelegate = null;
    this._video = null;
    this._text = null;
    this._audioOnly=false;
    this._imageFile = null;
}

Muse.Video.prototype =
{
    
    initialize : function()
    {
        var element = this.get_element();

        if (this._clickDelegate === null) 
        {
            this._clickDelegate = Function.createDelegate(this, this._clickHandler);
        }
        Sys.UI.DomEvent.addHandler(element, 'click', this._clickDelegate);
        this.add_click(this._changeVideo);
        
        if (this._hoverDelegate === null) {
            this._hoverDelegate = Function.createDelegate(this, this._hoverHandler);
        }
        Sys.UI.DomEvent.addHandler(element, 'mouseover', this._hoverDelegate);
        Sys.UI.DomEvent.addHandler(element, 'focus', this._hoverDelegate);
    
        Muse.Video.callBaseMethod(this, 'initialize');
    },
    
    dispose : function()
    {
        var element = this.get_element();

        if (this._clickDelegate) {
            Sys.UI.DomEvent.removeHandler(element, 'click', this._clickDelegate);
            delete this._clickDelegate;
        }
        
        if (this._hoverDelegate) {
            Sys.UI.DomEvent.removeHandler(element, 'mouseover', this._hoverDelegate);
            Sys.UI.DomEvent.removeHandler(element, 'focus', this._hoverDelegate);
            delete this._hoverDelegate;
        }
    
        Muse.Video.callBaseMethod(this, 'dispose');
    },
    
    _clickHandler: function(event) {
        var h = this.get_events().getHandler('click');
        if (h) 
        {
            h(this, Sys.EventArgs.Empty);
        }
        return false;
    },
    
    _hoverHandler: function(event) {
        var h = this.get_events().getHandler('hover');
        if (h) 
        {
            h(this, Sys.EventArgs.Empty);
        }
    },
    
    
    add_hover: function(handler) {
        this.get_events().addHandler('hover', handler);
    },
    remove_hover: function(handler) {
        this.get_events().removeHandler('hover', handler);
    },
    
    add_click: function(handler) {
        this.get_events().addHandler('click', handler);
    },
    
    remove_click: function(handler) {
        this.get_events().removeHandler('click', handler);
    },
    
    set_audioOnly : function(value)
    {
    	this._audioOnly = value;
    },
    
    get_audioOnly : function()
    {
    	return this._audioOnly;
    },
    
    switchVideo : function(file) 
    {
	    this._createVideo(file);
	},
	
	set_video : function (file)
	{
	    this._video = file;
	},
	
	get_video : function()
	{
	    return this._video;
	},
	
	set_text : function (value)
	{
	    this._text = value;
	},
	
	get_text : function()
	{
	    return this._text;
	},
	
	set_imageFile : function(value)
	    {
	    	this._imageFile = value;
	    },
	    
	    get_imageFile : function()
	    {
	    	return this._imageFile;
    	},
	
	set_target : function(targetElementName)
	{
	    this._flashControl = $create(Muse.Flash, null, null, null, $get(targetElementName));
	    this._flashControl.set_height('280');
	    this._flashControl.set_width('360');
	    this._flashControl.set_audioOnly(this.get_audioOnly());
	    this._flashControl.set_imageFile(this.get_imageFile());
	},
	
	get_target : function()
	{
	    return this._flashControl.get_element().id;
	},
	
    _changeVideo : function (sender, args)
    {
        sender._flashControl.createVideoElement(sender.get_video());
        return false;
    }
}

Muse.Video.registerClass('Muse.Video', Sys.UI.Control);   

if (typeof (Sys) != 'undefined')
{
    Sys.Application.notifyScriptLoaded();
}