com.espn.player.PopPlayerCard = Class.create(); com.espn.player.PopPlayerCard.list = []; com.espn.player.PopPlayerCard.ajaxRequest = null; com.espn.player.PopPlayerCard.cache = new Object(); com.espn.player.PopPlayerCard.PLAYER_LINK_IDENTIFIER = 'PopPlayerCard'; com.espn.player.PopPlayerCard.TAB_OVERVIEW = 0; com.espn.player.PopPlayerCard.TABS = [com.espn.player.PopPlayerCard.TAB_OVERVIEW]; com.espn.player.PopPlayerCard.STATUS_HIDDEN = 0; com.espn.player.PopPlayerCard.STATUS_SHOWN = 1; com.espn.player.PopPlayerCard.PNG_HACK_URL = "http://games-ak.espn.go.com/s/ffllm/05/images/pnghack.png"; com.espn.player.PopPlayerCard.formatPNGTag = function(properties) { var id = (properties.id) ? ' id="' + properties.id + '"' : ''; if (document.all) { return ''; } else { return ''; } }; com.espn.player.PopPlayerCard.formatPNGTag2 = function(properties) { var id = (properties.id) ? ' id="' + properties.id + '"' : ''; if (document.all) { return 'style="background-image: none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=fixed src=\'' + properties.src + '\');"'; } else { return 'style ="background: url('+ properties.src+ ')' + properties.params + ';"'; } }; com.espn.player.PopPlayerCard.checkCache = function(playerId, tabId) { return (com.espn.player.PopPlayerCard.cache[playerId] && com.espn.player.PopPlayerCard.cache[playerId][tabId]); }; com.espn.player.PopPlayerCard.prototype = { tabId: com.espn.player.PopPlayerCard.TABS[0], leagueId: -1, teamId: -1, playerId: -1, tournamentId: -1, preTournament: false, lang:null, status: com.espn.player.PopPlayerCard.STATUS_HIDDEN, arrow: null, parentDiv: null, contentDiv: null, sourceEvent: null, sourceElement: null, position: null, height: 500, width: 519, padding: 0, borderSize: 0, initialize: function() { var _this = this; this.position = new com.espn.player.PopPlayerCard.Position(this, { y: 0, x: 0 }); this.parentDiv = document.createElement('DIV'); this.parentDiv.id = 'pcMain'; var styles = { display: 'none', position: 'absolute', height: (this.height - (this.padding*2) - (this.borderSize*2)) + 'px', width: (this.width - (this.padding*2) - (this.borderSize*2)) + 'px', zIndex: 10000 }; Element.setStyle(this.parentDiv, styles); // BASIC FORMATTING this.renderTabNav(); this.renderShell(); this.position.render(); this.arrow = new com.espn.player.PopPlayerCard.Arrow(this); com.espn.player.PopPlayerCard.list.push(this); // ADD RULES TO DOM var rules = { '.popplayercard' : function(element){ element.onclick = function(event){ _this.handleClick(event || window.event); } } }; // WORKS IN IE //if (com.espn.env.an != com.espn.env.IE) { Behaviour.register(rules); //} com.espn.player.PopPlayerCard.list.push(this); Behaviour.addLoadEvent(function() { _this._onload() }); }, handleClick: function(event) { if (event && Event.element(event)) { var previousSourceElement = this.sourceElement; this.sourceEvent = event; this.sourceElement = Event.element(event); // SAFARI FIX if (!this.sourceElement.getAttribute) { this.sourceElement = this.sourceElement.parentNode; } if (!this.sourceElement.getAttribute) { return; } this.leagueId = this.sourceElement.getAttribute('league_id'); this.teamId = this.sourceElement.getAttribute('team_id'); this.gatherSourceElementCoordinates(); var playerId = this.sourceElement.getAttribute('player_id'); var lang = this.sourceElement.getAttribute('lang'); var tournamentId = this.sourceElement.getAttribute('tournament_id'); var preTournament = this.sourceElement.getAttribute('pretournament'); var tabId = this.sourceElement.getAttribute('tab_id'); if (this.status == com.espn.player.PopPlayerCard.STATUS_HIDDEN || previousSourceElement != this.sourceElement) { this.show(playerId, tabId, tournamentId, preTournament); } else { this.hide(); } } }, gatherSourceElementCoordinates: function() { if (this.sourceElement) { var sourceElementDimensions = Element.getDimensions(this.sourceElement); var sourceElementCumOffsets = Position.cumulativeOffset(this.sourceElement); this.sourceElement.x_right = sourceElementCumOffsets[0] + sourceElementDimensions.width; // x of element's right side this.sourceElement.x_left = sourceElementCumOffsets[0]; // x of element's left side this.sourceElement.y_top = sourceElementCumOffsets[1]; // y of element's top side this.sourceElement.y_bottom = sourceElementCumOffsets[1] + sourceElementDimensions.height; // y of element's bottom side } }, hide: function() { this.playerId = -1; this.lang = null; Element.update(this.contentDiv, ""); Element.hide(this.parentDiv); this.arrow.hide(); this.status = com.espn.player.PopPlayerCard.STATUS_HIDDEN; }, show: function(playerId, tabId, tournamentId, preTournament, lang) { var _this = this; if (!(tabId && com.espn.player.PopPlayerCard.TABS[tabId])) tabId = com.espn.player.PopPlayerCard.TABS[0]; if (playerId != null && playerId != -1) { this.playerId = playerId; } if (lang != null) { this.lang = lang; } if (tournamentId != null && tournamentId != -1) { this.tournamentId = tournamentId } if (preTournament != null) { this.preTournament = preTournament } this.tabId = tabId; // HIDE PRIOR TO UPDATE this.arrow.hide(); this.parentDiv.hide(); this.arrow.getOrientation(); this.move() // RENDER THE APPROPRIATE TAB var options = { _success: function() { _this.finalizeShow(); } } this.renderTabChoice(); this.renderContent(options); // WILL PROCEED TO finalizeShow() AFTER COMPLETION OF UPDATE }, finalizeShow: function() { this.arrow.show(); this.parentDiv.show(); this.status = com.espn.player.PopPlayerCard.STATUS_SHOWN; }, changeTab: function(tabId) { this.tabId = tabId; this.renderTabChoice(); this.renderContent(); }, getOffset: function() { return { y: 0, x: this.arrow.width - 12 }; }, move: function() { this.position.set(this.getOffset().x, this.getOffset().y); this.position.render(); }, clear: function() { this.contentDiv.innerHTML = ''; }, renderContent: function(options) { this.renderContentOverview(options); }, getCachedData: function() { if (com.espn.player.PopPlayerCard.cache[this.playerId]) { if (com.espn.player.PopPlayerCard.cache[this.playerId][this.tab]) { return com.espn.player.PopPlayerCard.cache[this.playerId][this.tab]; } } return null; }, setCachedData: function(data) { if (!com.espn.player.PopPlayerCard.cache[this.playerId]) { com.espn.player.PopPlayerCard.cache[this.playerId] = new Object(); } com.espn.player.PopPlayerCard.cache[this.playerId][this.tab] = data; }, renderContentOverview: function(options) { var _this = this; var adToInsert; if (com.espn.player.useAdServer == true && digAdData && digAdData['PresentedByLogo']) adToInsert = digGetAd('PresentedByLogo', true); var _success = function(transport, object) { _this.setCachedData(transport.responseText); if (options && options._success) { options._success(); } if (com.espn.player.useAdServer == true && adToInsert && $('adInsertion_PresentedByLogo')) { Element.update('adInsertion_PresentedByLogo', adToInsert); } // COMMENTED UNTIL PRODUCTION READY //var hbx_cagory_suffix = '/playerCardPopup/tabs'; //var hbx_pagename = 'overview'; //var hbx_category = '/football/ffl' + hbx_cagory_suffix + ';/fantasy/football/ffl' + hbx_cagory_suffix + ';*'; //_hbPageView(hbx_pagename, hbx_category); }; /*var cachedData = this.getCachedData(); if (cachedData) { Element.update(this.contentDiv, cachedData); this.finalizeShow(); if (com.espn.player.useAdServer == true && adToInsert && $('adInsertion_PresentedByLogo')) { Element.update('adInsertion_PresentedByLogo', adToInsert); } } else {*/ var url = '/golf/format/leaderboard/popup/playerCardHTML'; var pars = 'playerId=' + this.playerId + '&tournamentId=' + this.tournamentId + '&lang=' + this.lang; var target = this.contentDiv; new Ajax.Updater(target, url, {method: 'get', parameters: pars, onComplete: _success}); //} }, renderTabInactive: function(tabId) { }, renderTabActive: function(tabId) { }, renderTabChoice: function() { var _this = this; $A(com.espn.player.PopPlayerCard.TABS).each(function(tabId) { if (_this.tabId != tabId) { _this.renderTabInactive(tabId); } else { _this.renderTabActive(tabId); } } ); }, renderTabNav: function() { var tabsDiv = document.createElement('DIV'); tabsDiv.id = 'pcTabs'; tabsDiv.innerHTML = '
'+ '' + '' + '' + '' + ''+ '' + '' + '' + ''+ ''+ '
'+ com.espn.player.PopPlayerCard.formatPNGTag({ height: 26, width: 14, border: 0, src: 'http://assets.espn.go.com/i/golf/leaderboard/playerPopupGrey/left_BLK_tab.png' })+''+ '
' + '    Scorecard' + '
'+ '
' + com.espn.player.PopPlayerCard.formatPNGTag({ height: 26, width: 99, border: 0, src: 'http://assets.espn.go.com/i/golf/leaderboard/playerPopupGrey/BLK_tab_bg.png' })+'
'+ com.espn.player.PopPlayerCard.formatPNGTag({ height: 26, width: 14, border: 0, src: 'http://assets.espn.go.com/i/golf/leaderboard/playerPopupGrey/right_BLK_tab.png' })+'
' this.parentDiv.appendChild(tabsDiv); }, renderShell: function() { var bodyDiv = document.createElement('DIV'); var styles = { width: this.width + 'px', position: 'absolute', top: '26px', zIndex: '1' }; Element.setStyle(bodyDiv, styles); var iframeBackboard = (com.espn.env.an != com.espn.env.IE) ? '' : ''; bodyDiv.innerHTML = com.espn.player.PopPlayerCard.formatPNGTag({ width: 519, height: 19, border: 0, src: 'http://assets.espn.go.com/i/golf/leaderboard/playerPopupGrey/rt_popup_top.png' }) + '
' + '' + iframeBackboard + '
' + com.espn.player.PopPlayerCard.formatPNGTag({ height: 488, width: 519, border: 0, src: 'http://assets.espn.go.com/i/golf/leaderboard/playerPopupGrey/rt_popup_middle.png' }) + '
' + '
' + '' + '
' + '
' + '' + //'
' + '' + '
' + '
' + '
' + '' + '
' + '' + '
' + com.espn.player.PopPlayerCard.formatPNGTag({ width: 519, height: 15, border: 0, src: 'http://assets.espn.go.com/i/golf/leaderboard/playerPopupGrey/rt_popup_btm.png' }) + '' + '' + '' + ''; this.parentDiv.appendChild(bodyDiv); }, _onload: function() { document.body.appendChild(this.parentDiv); this.contentDiv = $('pcContent'); this.bindEventListeners(); this.arrow._onload(this.arrow); }, bindEventListeners: function() { var _this = this; /***** if (com.espn.env.an == com.espn.env.IE) { var els = document.getElementsByName(com.espn.player.PopPlayerCard.PLAYER_LINK_IDENTIFIER); var linkOnClick = function(event) { _this.handleClick(event); }; for(var n=0;n 0) { x_orientation = com.espn.player.PopPlayerCard.ORIENTATION_LEFT; } else if ((this.popplayercard.sourceElement.x_left - (document.documentElement.scrollLeft || document.body.scrollLeft)) > widthNeeded) { x_orientation = com.espn.player.PopPlayerCard.ORIENTATION_RIGHT; } else { x_orientation = com.espn.player.PopPlayerCard.ORIENTATION_CENTER; } if ((this.popplayercard.sourceElement.y_top - (document.documentElement.scrollTop || document.body.scrollTop)) > heightNeeded) { y_orientation = com.espn.player.PopPlayerCard.ORIENTATION_DOWN; } else if (availableHeight - (this.popplayercard.sourceElement.y_bottom - (document.documentElement.scrollTop || document.body.scrollTop)) - heightNeeded > 0) { y_orientation = com.espn.player.PopPlayerCard.ORIENTATION_UP; } else { y_orientation = com.espn.player.PopPlayerCard.ORIENTATION_CENTER; } this.orientation.x = x_orientation; this.orientation.y = y_orientation; }, render: function() { var y_orientation = (this.orientation.y != com.espn.player.PopPlayerCard.ORIENTATION_CENTER) ? this.orientation.y : com.espn.player.PopPlayerCard.ORIENTATION_DOWN; this.image.src = 'http://assets.espn.go.com/i/golf/leaderboard/playerPopupGrey/popup_arrow_' + this.orientation.x + y_orientation + '.png'; Element.update(this.parentDiv, com.espn.player.PopPlayerCard.formatPNGTag({ width: this.width, height: this.height, border: 0, src: this.image.src })); } } com.espn.player.PopPlayerCard.Position = Class.create(); // ORIENTATIONS REFER TO THE DIRECTION THE ARROW IS POINTING -- TYPICALLY IT POINTS DOWN AND TO THE LEFT. com.espn.player.PopPlayerCard.ORIENTATION_DOWN = 0; com.espn.player.PopPlayerCard.ORIENTATION_UP = 1; com.espn.player.PopPlayerCard.ORIENTATION_LEFT = 0; com.espn.player.PopPlayerCard.ORIENTATION_RIGHT = 1; com.espn.player.PopPlayerCard.ORIENTATION_CENTER = 2; // USED IN INSTANCES WHERE THERE ISN'T ROOM ON EITHER SIDE OF THE ELEMENT, SO CENTER THE CARD com.espn.player.PopPlayerCard.Position.prototype = { component: null, y: 0, x: 0, hasOrientation: false, initialize: function(component, properties) { this.component = component; for(prop in properties) { var value = properties[prop]; this[prop] = value; } }, getCoordinates: function() { var x = 0; var y = 0; var arrow = (this.component.arrow) ? this.component.arrow : this.component; var popplayercard = (this.component.popplayercard) ? this.component.popplayercard : this.component; var isArrow = (arrow == this.component); switch(arrow.orientation.x) { case com.espn.player.PopPlayerCard.ORIENTATION_LEFT: x = popplayercard.sourceElement.x_right; break; case com.espn.player.PopPlayerCard.ORIENTATION_RIGHT: x = popplayercard.sourceElement.x_left; break; case com.espn.player.PopPlayerCard.ORIENTATION_CENTER: x = Event.pointerX(popplayercard.sourceEvent); break; } switch(arrow.orientation.y) { case com.espn.player.PopPlayerCard.ORIENTATION_DOWN: y = popplayercard.sourceElement.y_top; break; case com.espn.player.PopPlayerCard.ORIENTATION_UP: y = popplayercard.sourceElement.y_bottom; break; case com.espn.player.PopPlayerCard.ORIENTATION_CENTER: y = (!isArrow) ? Event.pointerY(popplayercard.sourceEvent) : popplayercard.sourceElement.y_top; break; } return { x: x, y: y }; }, set: function(x_offset, y_offset) { var coordinates = this.getCoordinates(); var arrow = (this.component.arrow) ? this.component.arrow : this.component; var orientation = arrow.orientation; var isArrow = (arrow == this.component); if (orientation.y == com.espn.player.PopPlayerCard.ORIENTATION_DOWN || (orientation.y == com.espn.player.PopPlayerCard.ORIENTATION_CENTER && isArrow)) { this.y = coordinates.y - y_offset - this.component.height; } else if (orientation.y == com.espn.player.PopPlayerCard.ORIENTATION_UP) { this.y = coordinates.y + y_offset; } else { // ORIENTATION_CENTER this.y = coordinates.y - (this.component.height/2); } if (orientation.x == com.espn.player.PopPlayerCard.ORIENTATION_LEFT) { this.x = coordinates.x + x_offset; } else if (orientation.x == com.espn.player.PopPlayerCard.ORIENTATION_RIGHT) { this.x = coordinates.x - x_offset - this.component.width; } else { // ORIENTATION_CENTER this.x = 0 //this.x = coordinates.x - (this.component.width/2); } }, render: function() { Element.setStyle(this.component.parentDiv, { top: this.y +'px', left: this.x +'px' }); } } com.espn.player.PopPlayerCard.instance = new com.espn.player.PopPlayerCard(); /***** END POP PLAYER CARD *****/