ESPN Fantasy Copy Roster

By Glenn Carr Last update Mar 14, 2008 — Installed 236 times.
// ==UserScript==
// @name           ESPN Fantasy Copy Roster
// @namespace      http://glenncarr.com/greasemonkey/espn
// @description    Copy ESPN Roster to clipboard
// @include        http://games.espn.go.com/flb/*
// $LastChangedRevision: 419 $
// $LastChangedDate: 2008-03-14 00:45:43 -0500 (Fri, 14 Mar 2008) $
// ==/UserScript==
/*

Copies an ESPN roster page to the clipboard.

Example:

Batters
C Jorge Posada, NYY C
1B Carlos Pena, TB 1B
2B B.J. Upton, TB 2B, OF
3B Ryan Braun, Mil 3B
SS Stephen Drew, Ari SS
2B/SS Orlando Hudson, Ari 2B
1B/3B Mike Lowell, Bos 3B
OF Alfonso Soriano, ChC OF
OF Eric Byrnes, Ari OF
OF Torii Hunter, LAA OF
OF Hideki Matsui, NYY OF, DH
OF Rocco Baldelli, TB OF
UTIL Frank Thomas, Tor DH
Bench Yunel Escobar, Atl 2B, 3B, SS
Bench Cameron Maybin, Fla OF

Pitchers
P Scott Kazmir, TB SP
P Yovani Gallardo, Mil SP
P John Maine, NYM SP
P Trevor Hoffman, SD RP
P Todd Jones, Det RP
P Tom Gorzelanny, Pit SP
P Brandon Lyon, Ari RP
P Randy Johnson, Ari SP
P Hideki Okajima, Bos RP
Bench Tom Gordon, Phi RP

*/
(function(){

var menu = document.getElementById( 'ptfiltersmenuleft' );
if ( menu == null )
	return;

var menuButton = document.createElement( 'div' );
menuButton.setAttribute( "class", "playertablefiltersmenucontainer" );
menuButton.innerHTML = '<a href="#">Copy Roster</a>';
var a = menuButton.getElementsByTagName( 'a' )[ 0 ];
a.addEventListener( 'click', function(e) {
	e.preventDefault();
	copyRoster();
}, false );
menu.appendChild( menuButton );

String.prototype.cleanupPlayer = function() {
  return this.replace( /<span[^>]+\s+class="error"[^>]*>[^<]+<\/span>/igm, '' ).replace( /(<)/gi, ' $1').replace(/<\/?[^>]+>|&[^;]+;|^\s+|\s+$/gi, '').replace( /\s+,\s+/gi, ', ' );
}

function copyRoster()
{
	var clipText = new Array();
	for ( var tableId = 0; tableId < 2; tableId++ )
	{
		clipText.push( tableId == 0 ? 'Batters\r\n' : '\r\nPitchers\r\n' );
		var rosterTable = document.getElementById( 'playerTableTable_' + tableId );
		if ( rosterTable == null )
			break;
		//alert( hittersTable.innerHTML );
		for ( var iRow = 2; iRow < rosterTable.rows.length; iRow++ )
		{
			var row = rosterTable.rows[ iRow ];

			var playerName = row.cells[ 1 ].innerHTML.cleanupPlayer();
			if ( /^\s*empty\s*$/i.test( playerName ) )
				continue;

			clipText.push( row.cells[ 0 ].innerHTML.cleanupPlayer() );
			clipText.push( playerName );
			clipText.push( '\r\n' );
		}
	}
	var rosterText = clipText.join( '' );
	if ( copy( rosterText ) )
		alert( 'The following roster has been copied to the clipboard:\r\n\r\n' + rosterText );
}

function copy(text2copy)
{
    if (window.clipboardData)
    {
        return window.clipboardData.setData("Text",text2copy);
    }
    else
    {
        var flashcopier = 'flashcopier';
        if(!document.getElementById(flashcopier))
        {
            var divholder = document.createElement('div');
            divholder.id = flashcopier;
            document.body.appendChild(divholder);
        }
        document.getElementById(flashcopier).innerHTML = '';
        var divinfo = '<embed src="http://yahoofantasybrowsertools.googlecode.com/svn/trunk/_clipboard.swf" FlashVars="clipboard='+escape(text2copy)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
        document.getElementById(flashcopier).innerHTML = divinfo;
    }
    return true;
}

})();