var WebcastPopup = new JS.Class({
    extend: {
        FLASH_SOURCE:       '',
        BACKGROUND_COLOR:   '#000000',
        
        crawl: function() {
            var links = _$('.webcast-link').el, data = _$('.webcast-link .url').el;
            links.forEach(function(link, i) {
                data[i].parentNode.removeChild(data[i]);
                var config = this.parse(data[i].innerHTML);
                config.caption = YAHOO.lang.trim(link.innerHTML);
                new this(link, config);
            }, this);
        },
        
        parse: function(string) {
            var data = string.split('||');
            return {url: data[0], width: Number(data[1]), height: Number(data[2])};
        }
    },
    
    initialize: function(trigger, data) {
        this._data = data;
        YAHOO.util.Event.on(trigger, 'click', this.method('showWebcast'));
    },
    
    showWebcast: function() {
        var bg = _$('#overlayBackground'), content = _$('#overlayContent');
        bg.addClass('spinner').show().setStyle('opacity', 0);
        content.addClass('content').setContent('');
        content.setStyle('top', (YAHOO.util.Dom.getDocumentScrollTop(document) + 50) + 'px');
        bg.animate({opacity: {from: 0, to: 0.85}}, 0.75, YAHOO.util.Easing.easeOut, {
            after: function() {
                bg.removeClass('spinner');
                var so = this.getSWFObject();
                so.write(content.el[0]);
                content.create('div', {id: 'overlayCloseButton'}, function(el) {
                    this.append(el);
                    _$(el).setContent('Close').on('click', hideOverlay);
                });
                content.show().animate({opacity: {from: 0, to: 1}}, 0.75, YAHOO.util.Easing.easeOut, {});
            }.bind(this)
        });
    },
    
    getSWFObject: function() {
        var source = this.klass.FLASH_SOURCE;
        var width = this._data.width, height = this._data.height;
        so = new SWFObject(source, 'small-videoplayer', width, height, 9, this.klass.BACKGROUND_COLOR);
        so.addParam("allowfullscreen", "true");
        so.addParam("allowScriptAccess", "always");
        so.addParam("wmode", "transparent");
        so.addVariable("videoPath", this._data.url);
        so.addVariable("caption", this._data.caption);
        return so;
    }
});
