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; } });