<?xml version="1.0" encoding="UTF-8" ?>
<Module>
 <ModulePrefs 
  title="MLB Batting Stats"
  author="Paul Reiners"
  author_email="mr.saber.metrics+baseballgadget@gmail.com"
  screenshot="http://mrsabermetrics.sourceforge.net/images/MLBBattingScreenShot.PNG"
  description="Displays up-to-date MLB batting stats."
  height="200"
  width="675"
  thumbnail="http://mrsabermetrics.sourceforge.net/images/Babe_Ruth.jpg"
  author_location="Minnesota"
  title_url="http://mrsabermetrics.sourceforge.net/"
  scrolling="true"
  author_photo="http://mrsabermetrics.sourceforge.net/images/reiners.jpg"
  author_aboutme="I'm a computer programmer and musician and live in Minnesota."
  author_link="http://www.automatous-monk.com/"
  author_quote="'I'm not going to buy my kids an encyclopedia.  Let them walk to school like I did.' - Yogi Berra"
 >
  <Require feature="analytics" />
 </ModulePrefs>
 <UserPref name="num_players" display_name="How many players to show?" 
           datatype="enum" default_value="9" required="true">
  <EnumValue value="2" display_value="2"/>
  <EnumValue value="3" display_value="3"/>
  <EnumValue value="4" display_value="4"/>
  <EnumValue value="5" display_value="5"/>
  <EnumValue value="6" display_value="6"/>
  <EnumValue value="7" display_value="7"/>
  <EnumValue value="8" display_value="8"/>
  <EnumValue value="9" display_value="9"/>
  <EnumValue value="10" display_value="10"/>
  <EnumValue value="11" display_value="11"/>
  <EnumValue value="12" display_value="12"/>
  <EnumValue value="13" display_value="13"/>
  <EnumValue value="14" display_value="14"/>
  <EnumValue value="15" display_value="15"/>
 </UserPref>
 <UserPref name="team" 
     display_name="Team"
     datatype="enum"
     required="true"
 >
  <EnumValue value="ARI" display_value="Arizona Diamondbacks"/>
  <EnumValue value="ATL" display_value="Atlanta Braves"/>
  <EnumValue value="BAL" display_value="Baltimore Orioles"/>
  <EnumValue value="BOS" display_value="Boston Red Sox"/>
  <EnumValue value="CHN" display_value="Chicago Cubs"/>
  <EnumValue value="CHA" display_value="Chicago White Sox"/>
  <EnumValue value="CIN" display_value="Cincinnati Reds"/>
  <EnumValue value="CLE" display_value="Cleveland Indians"/>
  <EnumValue value="COL" display_value="Colorado Rockies"/>
  <EnumValue value="DET" display_value="Detroit Tigers"/>
  <EnumValue value="FLO" display_value="Florida Marlins"/>
  <EnumValue value="HOU" display_value="Houston Astros"/>
  <EnumValue value="KCA" display_value="Kansas City Royals"/>
  <EnumValue value="ANA" display_value="Los Angeles Angels"/>
  <EnumValue value="LAN" display_value="Los Angeles Dodgers"/>
  <EnumValue value="MIL" display_value="Milwaukee Brewers"/>
  <EnumValue value="MIN" display_value="Minnesota Twins"/>
  <EnumValue value="NYN" display_value="New York Mets"/>
  <EnumValue value="NYA" display_value="New York Yankees"/>
  <EnumValue value="OAK" display_value="Oakland Athletics"/>
  <EnumValue value="PHI" display_value="Philadelphia Phillies"/>
  <EnumValue value="PIT" display_value="Pittsburgh Pirates"/>
  <EnumValue value="SDN" display_value="San Diego Padres"/>
  <EnumValue value="SFN" display_value="San Francisco Giants"/>
  <EnumValue value="SEA" display_value="Seattle Mariners"/>
  <EnumValue value="SLN" display_value="St. Louis Cardinals"/>
  <EnumValue value="TBA" display_value="Tampa Bay Rays"/>
  <EnumValue value="TEX" display_value="Texas Rangers"/>
  <EnumValue value="TOR" display_value="Toronto Blue Jays"/>
  <EnumValue value="MON" display_value="Washington Nationals"/>
 </UserPref>
 <Content type="html">
<![CDATA[
<script>
    // Track this gadget using Google Analytics.
    _IG_Analytics("UA-4406313-1", "/mlb_batting_stats");
</script>
<div id="statsdiv"></div>
<script>
    function listStats(root) {
        var feed = root.feed;
        var entries = feed.entry || [];
        var html = [''];
        var avgs = [];
        var obps = [];
        var slgs = [];
        var names = [];
            
        // Construct the URL for the Google Chart.             
        var cht = 'bvg';            
        html.push(
            '<img src="http://chart.apis.google.com/chart?cht=' + cht + '&chd=t:');
        for (var i = 0; i < feed.entry.length; ++i) {
            var entry = feed.entry[i];
            var title = entry.title.$t;
            names.push(title);
            var content = entry.content.$t;
            var parts = content.split(',');

            var avg = extractStat(parts[0]);
            avgs.push(avg);
            var obp = extractStat(parts[1]);
            obps.push(obp);
            var slg = extractStat(parts[2]);
            slgs.push(slg);
        }
        
        var numPlayersPref = getStringPref("num_players");

        // Show highest AB players
        var numPlayers = parseInt(numPlayersPref);
        if (numPlayers > names.length) {
            numPlayers = names.length;
        }
        
        for (var i = 0; i < numPlayers; ++i) {
            html.push(avgs[i]);
            if (i < numPlayers - 1) {
                html.push(",");
            }
        }
        html.push("|");
        
        for (var i = 0; i < numPlayers; ++i) {
            html.push(obps[i]);
            if (i < numPlayers - 1) {
                html.push(",");
            }
        }
        html.push("|");
        
        for (var i = 0; i < numPlayers; ++i) {
            html.push(slgs[i]);
            if (i < numPlayers - 1) {
                html.push(",");
            }
        }
        var width = 1000;
        if (numPlayers <= 9) {
            var width = 58 * numPlayers + 124;
        }
        var chs = width + 'x180';
        var chds = '0,0.700';
        html.push(
            "&chs=" + chs + 
                "&chco=c6d9fd,4d89f9,8a31fb&chdl=AVG|OBP|SLG&chds=" + chds);

        var teamAbbrevToName = new Object();
        for (var i = 0; i < teamInfoArray.length; i += 3) {
            teamAbbrevToName[teamInfoArray[i]] = teamInfoArray[i + 2];
        }  
        var teamName = teamAbbrevToName[getStringPref("team")]; 
        var chxt = 'y,x';
        html.push('&chtt=' + teamName + '+Batting&chxt=' + chxt + 
            '&chxl=0:|0.000|0.100|0.200|0.300|0.400|0.500|0.600|0.700|1:');
        
        for (var i = 0; i < numPlayers; ++i) {
            var parts = names[i].split(' ');
            name = parts.join("+");
            html.push('|' + name)
        }
        
        html.push('&chbh=15"/>');
        
        var generatedHTML = html.join("");
    
        // Add the chart to the HTML in the gadget.         
        document.getElementById("statsdiv").innerHTML = generatedHTML;
    }
    
    function extractStat(nameAndStat) {
        var parts = nameAndStat.split(":");
        var stat = parts[1];
        var fStat = parseFloat(stat);
        
        return fStat;
    }
  
    function getStringPref(prefName) {
        var prefs = new _IG_Prefs();
        var stringPref = prefs.getString(prefName);
  
        return stringPref;
    }
  
    var teamInfoArray = 
        new Array('MIN', 'od6', "Minnesota Twins", 'ANA', 'od7', "Los Angeles Angels", 
                  'ARI', 'od4', "Arizona Diamondbacks", 'ATL', 'od5', "Atlanta Braves", 
                  'BAL', 'oda', "Baltimore Orioles", 'BOS', 'odb', "Boston Red Sox", 
                  'CHA', 'od8', "Chicago White Sox", 'CHN', 'od9', "Chicago Cubs", 
                  'CIN', 'ocy', "Cincinnati Reds", 'CLE', 'ocz', "Cleveland Indians", 
                  'COL', 'ocw', "Colorado Rockies", 'DET', 'ocx', "Detroit Tigers",
                  'FLO', 'od2', "Florida Marlins", 'HOU', 'od3', "Houston Astros", 
                  'KCA', 'od0', "Kansas City Royals", 'LAN', 'od1', "Los Angeles Dodgers", 
                  'MIL', 'ocq', "Milwaukee Brewers", 'MON', 'ocr', "Washington Nationals",
                  'NYA', 'oco', "New York Yankees",'NYN', 'ocp', "New York Mets", 
                  'OAK', 'ocu', "Oakland Athletics", 
                  'PHI', 'ocv', "Philadelphia Phillies", 
                  'PIT', 'ocs', "Pittsburgh Pirates", 'SDN', 'oct', "San Diego Padres",
                  'SEA', 'oci', "Seattle Mariners", 'SFN', 'ocj', "San Francisco Giants", 
                  'SLN', 'ocg', "St. Louis Cardinals", 'TBA', 'och', "Tampa Bay Rays", 
                  'TEX', 'ocm', "Texas Rangers", 'TOR', 'ocn', "Toronto Blue Jays");  
</script>
  
<script language="javascript">
    var teamToWkshtID = new Object(  );
    for (var i = 0; i < teamInfoArray.length; i += 3) {
        teamToWkshtID[teamInfoArray[i]] = teamInfoArray[i + 1];
    }  
    var wkshtID = teamToWkshtID[getStringPref("team")];
    
    // Get the batting stats from the Google spreadsheet.
    // Retrieve a JSON feed using the Spreadsheets Data API
    var parmsrc = 
        "http://spreadsheets.google.com/feeds/list/" + 
            "o15075496074116042190.8006901556347913051/" + wkshtID + 
            "/public/basic?alt=json-in-script&callback=listStats";
  
    scriptNode = document.createElement('script');
    scriptNode.src = parmsrc;
    scriptNode.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(scriptNode);
</script>
]]>
 </Content>
</Module>

