<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="__UP_title__"
            directory_title="NN/LM MCR Gadget"
            description="National Networks of Libraries of Medicine MidContinental Region feeds and search the MCR site."
            author="Sharon Dennis"
            author_email="sdennis@lib.med.utah.edu"
            author_affiliation="University of Utah"
            author_location="Salt Lake City, UT"
            screenshot="/ig/modules/feeds_tabs.png"
            thumbnail="/ig/modules/feeds_tabs-thm.png"
            height="250"
            scrolling="true"
            singleton="false">
  <Require feature="dynamic-height"/>
  <Require feature="setprefs"/>
  <Require feature="tabs"/>
  <Require feature="analytics"/>
</ModulePrefs>
<UserPref name="title" display_name="Gadget Title" default_value="NN/LM MidContinental Region"/>
<UserPref name="tabFontSize" display_name="Tab Font Size" default_value="0.7em"/>
<UserPref name="showFeedDesc" display_name="Feed Descriptions" datatype="bool" default_value="true"/>
<UserPref name="feed1"
  display_name="Feed 1: URL"
  datatype="string"
  default_value="http://nnlm.gov/mcr/news_blog/wp-rss2.php"/>
<UserPref name="feedTitle1" display_name="Feed 1: Title" datatype="string" default_value="MCR News"/>
<UserPref name="feed2"
  display_name="Feed 2: URL"
  datatype="string"
  default_value="http://nnlm.gov/mcr/bhic/?feed=rss"/>
<UserPref name="feedTitle2" display_name="Feed 2: Title" datatype="string" default_value="BHIC"/>
<UserPref name="feed3"
  display_name="Feed 3: URL"
  datatype="string"
  default_value="http://www.google.com/calendar/feeds/rml4%40RML4.UTAH.EDU/public/basic"/>
<UserPref name="feedTitle3" display_name="Feed 3: Title" datatype="string" default_value="MCR Events"/>
<UserPref name="feed4"
  display_name="Feed 4: URL"
  datatype="string"
  default_value="http://googleblog.blogspot.com/atom.xml"/>
<UserPref name="feedTitle4" display_name="Feed 4: Title" datatype="string"  default_value="Google Blog"/>
<UserPref name="entries" display_name="# of Entries" datatype="enum" default_value="3">
  <EnumValue value="3"/>
  <EnumValue value="4"/>
  <EnumValue value="5"/>
  <EnumValue value="6"/>
  <EnumValue value="7"/>
  <EnumValue value="8"/>
  <EnumValue value="9"/>
  <EnumValue value="10"/>
  <EnumValue value="11"/>
  <EnumValue value="12"/>
</UserPref>
<UserPref name="summaries" display_name="Summaries" datatype="enum" default_value="-1">
  <EnumValue value="-1" display_value="none"/>
  <EnumValue value="100" display_value="short"/>
  <EnumValue value="200" display_value="medium"/>
  <EnumValue value="300" display_value="long"/>
  <EnumValue value="400" display_value="longer"/>
  <EnumValue value="0" display_value="show all"/>
</UserPref>
<UserPref name="renderHtml" display_name="Render HTML" datatype="bool" default_value="true"/>
<UserPref name="showTimestamp" display_name="Show Timestamp" datatype="bool" default_value="true"/>
<UserPref name="selectedTab" datatype="hidden"/>
<Content type="html"><![CDATA[
  <style type="text/css">
  .tablib_table {
    font-size: __UP_tabFontSize__;
  }
  .tablib_selected, .tablib_unselected {
    width: 23%;
  }

  .statusLabel {
    font-size: 0.75em;
    font-style: italic;
    padding-top: 10px;
    text-align: center;
  }
  .feedHeader {
    padding-top: 5px;
    font-size: 0.7em;
  }
  .feedHeader .feedTitle {
    font-weight: bold;
    font-size: 1.1em;
  }
  .feedHeader .feedAuthor {
    font-weight: normal;
    font-size: 0.8em;
    color: #676767;
  }

  .feedList {
    font-size: 0.7em;
    margin: 0px;
    padding: 0px 0px 5px 0px;
    border-bottom: 1px solid #aaaaaa;
  }
  .feedList li {
    margin-top: 5px;
    padding: 3px 3px 0px 3px;
    border-top: 1px solid #aaaaaa;
  }
  .feedList li div.entryTitle a {
    font-weight: bold;
  }
  .feedList li div.entryTimestamp {
    font-size: 0.95em;
    font-style: italic;
    color: #676767;
  }

  .docBody {
    padding-top: 5px;
    font-size: 0.7em;
  }
  </style>


<script>
  // Global variables
  var prefs = new _IG_Prefs(__MODULE_ID__);
  var tabs = new _IG_Tabs(__MODULE_ID__);

function searchBox(searchID) {

      var searchDiv = _gel(searchID);
  	
      searchDiv.innerHTML='<form id="searchbox_004741153947100950771:rkuzfphjygk" action="http://google.com/cse" target="_blank"><br /><label for="q"><b>Search the <a href="http://nnlm.gov/mcr" target="_blank">MCR website</a>:</b></label><br /> <input type="hidden" name="cx" value="004741153947100950771:rkuzfphjygk" /><br /><input id="q" name="q" type="text" size="31" maxlength="255" /><br /><br /><input type="submit" name="sa" value="Google Search" /><input type="hidden" name="hq" value="site:nnlm.gov/mcr"  /><input id="cof" type="hidden" name="cof" value="FORID:0" /></form>'

      var googleSearchBox = document.getElementById("searchbox_004741153947100950771:rkuzfphjygk"); searchbox.action = "/mcr/search/index.html"; document.getElementById("cof").value = "FORID:11";
  						
};


function chooseState()
{

   
   var stateStuff = new Array(6);
   stateStuff[0] = "Please choose a state.";

   stateStuff[1] = "<a href='http://nnlm.gov/mcr/states/colorado.html#A1' target='_blank'>Introduction</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A2' target='_blank'>Health Information</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A3' target='_blank'>Community Health</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A4' target='_blank'>Rural Health</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A5' target='_blank'>Teens and Children</a><a href='http://nnlm.gov/mcr/states/colorado.html#A6' target='_blank'>Seniors</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A7' target='_blank'>Minority and Underserved</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A8' target='_blank'>Informacion en Espa&#241;ol</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A9' target='_blank'>Insurance and Licensing</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A10' target='_blank'>Grant Information</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A11' target='_blank'>Demographics</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A12' target='_blank'>Colorado Libraries</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A13' target='_blank'>Colorado Staff Contact Information</a><br /><a href='http://nnlm.gov/mcr/states/colorado.html#A14' target='_blank'>MCR Project Information</a>";

   stateStuff[2] = "<a href='http://nnlm.gov/mcr/states/kansas.html#A1' target='_blank'>Introduction</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A2' target='_blank'>Health Information</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A3' target='_blank'>Community Health</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A4' target='_blank'>Rural Health</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A5' target='_blank'>Teens and Children</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A6' target='_blank'>Seniors</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A7' target='_blank'>Minority and Underserved</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A8' target='_blank'>Informacion en Espa&#241;ol</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A9' target='_blank'>Insurance and Licensing</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A10' target='_blank'>Grant Information</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A11' target='_blank'>Demographics</a><br /><a href='#A12' target='_blank'>Kansas Libraries</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A13' target='_blank'>Kansas Staff Contact Information</a><br /><a href='http://nnlm.gov/mcr/states/kansas.html#A14' target='_blank'>MCR Project Information</a>";

   stateStuff[3] = "<a href='http://nnlm.gov/mcr/states/missouri.html#A1' target='_blank'>Introduction</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A2' target='_blank'>Health Resources</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A3' target='_blank'>Community Health</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A4' target='_blank'>Rural Health</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A5' target='_blank'>Teens and Children</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A6' target='_blank'>Seniors</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A7' target='_blank'>Minority and Underserved</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A8' target='_blank'>Informacion en Espa&#241;ol</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A9' target='_blank'>Insurance and Licensing</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A10' target='_blank'>Grant Information</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A11' target='_blank'>Demographics</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A12' target='_blank'>Missouri  Libraries</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A13' target='_blank'>MCR Staff Contact Information</a><br /><a href='http://nnlm.gov/mcr/states/missouri.html#A14' target='_blank'>MCR Project Information</a>";

   stateStuff[4] = "<a href='http://nnlm.gov/mcr/states/nebraska.html#A1' target='_blank'>Introduction</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A2' target='_blank'>Health Information</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A3' target='_blank'>Community Health</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A4' target='_blank'>RuralHealth</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A5' target='_blank'>Teens and Children</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A6' target='_blank'>Seniors</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A7' target='_blank'>Minority and Underserved</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A8' target='_blank'>Informacion en Espa&#241;ol</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A9' target='_blank'>Insurance and Licensing</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A10' target='_blank'>Grant Information</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A11' target='_blank'>Demographics</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A12' target='_blank'>Nebraska Libraries</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A13' target='_blank'>MCR Staff Contact Information</a><br /><a href='http://nnlm.gov/mcr/states/nebraska.html#A14' target='_blank'>MCR Project Goals</a>";

   stateStuff[5] = "<a href='http://nnlm.gov/mcr/states/utah.html#A1' target='_blank'>Introduction</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A2' target='_blank'>MedlinePlus Go Local Utah: Where Health Information Connects</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A3' target='_blank'>Health Information</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A4' target='_blank'>Community Health</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A5' target='_blank'>Rural Health</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A6' target='_blank'>Teens and Children</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A7' target='_blank'>Seniors</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A8' target='_blank'>Minority and Under served</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A9' target='_blank'>Information en Espa&#241;ol</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A10' target='_blank'>Insurance and Licensing</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A11' target='_blank'>Grant Information</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A12' target='_blank'>Utah Statistics and Demographics</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A13' target='_blank'>State and Local Public Health Data Sets: Phpartners.gov</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A14' target='_blank'>Utah Libraries</a><br /><a href='http://nnlm.gov/mcr/states/utah.html#A15' target='_blank'>Utah Staff Contact Information</a>";

   stateStuff[6] = "<a href='http://nnlm.gov/mcr/states/wyoming.html#A1' target='_blank'>Introduction</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A2' target='_blank'>Health Resources</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A3' target='_blank'>Community Health</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A4' target='_blank'>Rural Health</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A5' target='_blank'>Teens and Children</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A6' target='_blank'>Seniors</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A7' target='_blank'>Minority and Underserved</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A8' target='_blank'>Informacion en Espa&#241;ol</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A9' target='_blank'>Insurance and Licensing</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A10' target='_blank'>Grant Information</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A11' target='_blank'>Demographics</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A12' target='_blank'>Wyoming Libraries</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A13' target='_blank'>Wyoming Staff Contact Information</a><br /><a href='http://nnlm.gov/mcr/states/wyoming.html#A14' target='_blank'>Wyoming Project</a>";


  var Index = document.getElementById("stateMenu").selectedIndex;
  
  
  var newPara = document.createElement("p");
  
  var bodyRef = document.getElementById("docBody");
  bodyRef.removeChild(bodyRef.lastChild);
  bodyRef.appendChild(newPara);
  
  
  newPara.innerHTML = stateStuff[Index];

};

function stateBox(stateID) {
      
      var states = _gel(stateID);

      var stateHTML = '<div id="docBody" class="docBody"><b>MCR State Resources</b><br /><p>Choose Your State:  <select id="stateMenu" onchange="chooseState()"></p><option value="&nbsp;"></option><option value="CO">Colorado</option><option value="KS">Kansas</option><option value="MO">Missouri</option><option value="NE">Nebraska</option><option value="UT">Utah</option><option value="WY">Wyoming</option></select><br /><br /><p id="newPara">&nbsp;</p></div>';

      states.innerHTML = stateHTML;
            
}

  /**
   * Initialize tabs when page loads.
   * Create tab for each userpref only if userpref is not empty.
   */
  function init() {
    var f1 = _trim(prefs.getString("feed1"));
    var f2 = _trim(prefs.getString("feed2"));
    var f3 = _trim(prefs.getString("feed3"));
    var f4 = _trim(prefs.getString("feed4"));
    var ft1 = _trim(prefs.getString("feedTitle1"));
    var ft2 = _trim(prefs.getString("feedTitle2"));
    var ft3 = _trim(prefs.getString("feedTitle3"));
    var ft4 = _trim(prefs.getString("feedTitle4"));

    if (f1 != "") {
      summaries = "100";
      showTimestamp = true;
      entries = "3";
      tabs.addDynamicTab(((ft1 == "") ? "Feed 1" : ft1), _IG_Callback(callbackTab, f1, summaries, showTimestamp, entries));
    }
    if (f2 != "") {
      summaries = "-1";
      showTimestamp = true;
      entries = "5";
      tabs.addDynamicTab(((ft2 == "") ? "Feed 2" : ft2), _IG_Callback(callbackTab, f2, summaries, showTimestamp, entries));
    }
    if (f3 != "") {
      summaries = "0";
      showTimestamp = false;
      entries = "5";
      tabs.addDynamicTab(((ft3 == "") ? "Feed 3" : ft3), _IG_Callback(callbackTab, f3, summaries, showTimestamp, entries));
    }
    //if (f4 != "") {
    //  tabs.addDynamicTab(((ft4 == "") ? "Feed 4" : ft4), searchBox);
    //}

    if (f4 != "") {
      tabs.addTab("MCR Search", { 
     contentContainer: _gel("content_div"),
     callback: searchBox, 
     tooltip: "Search the MCR site" });
    }
    tabs.addTab("States", { 
     
     callback: stateBox, 
     tooltip: "State resources" });


  };

  

  /**
   * Fetches an Atom or RSS feed and generates content inside the
   * selected tab's content container.  This function is called whenever
   * a tab is selected.
   */
  function callbackTab(tabId, feedUrl, summaries, showTimestamp, entries) {
    var showFeedDesc = prefs.getBool("showFeedDesc");
    //var summaries = prefs.getInt("summaries");
    //var entries = prefs.getInt("entries");
    var renderHtml = prefs.getBool("renderHtml");
    //var showTimestamp = prefs.getBool("showTimestamp");
    var container = _gel(tabId);

    // Display loading message before fetching feed.
    container.innerHTML = '<div class="statusLabel">Loading...</div>';

    // Fetch feed and return it as a JSON object.
    // Callback function is defined within local scope.
    _IG_FetchFeedAsJSON(
      feedUrl,
      function(feed) {
        if (typeof feed == "undefined" || typeof feed.Entry == "undefined") {
          container.innerHTML = '<div class="statusLabel">Invalid feed URL:<br>' + feedUrl + '</div>';
        } else {
          // Fetch feed successful.  Generate HTML content from returned JSON object.
          // Create feed header containing title and description.
          var html = new Array();
          html.push('<div class="feedHeader">');
          html.push('<div class="feedTitle">');
          html.push((feed.Link != "") ? '<a target="_top" href="' + _hesc(feed.Link) + '">' + _hesc(feed.Title) + '</a>' : _hesc(feed.Title));
          html.push((feed.Author != "") ? '<span class="feedAuthor"> by ' + _hesc(feed.Author) + '</span>' : "");
          html.push('</div>');
          if (showFeedDesc) {
            html.push('<div class="feedDesc">' + _hesc(feed.Description) +  '</div>');
          }
          html.push('</div>');

          // Iterate through each feed entry and generate list of content.
          html.push('<ul class="feedList">');
          for (var n = 0; n < feed.Entry.length; n++) {
            var entry = feed.Entry[n];
            html.push('<li>');
            html.push('<a target="_blank" href="' + entry.Link + '"><b>' + _hesc(entry.Title) + '</b></a>');
            if (typeof entry.Summary != "undefined" && entry.Summary != "") {
              
              var summary = document.createElement("div");
              summary.innerHTML = (summaries == 0) ? entry.Summary : entry.Summary.substr(0, summaries) + '...';
              html.push('<div class="entrySummary">');
              html.push((renderHtml ? summary.innerHTML : _hesc(summary.innerHTML)));
              html.push('</div>');
            }
            if (!isNaN(entry.Date) && showTimestamp) {
              html.push('<div class="entryTimestamp">[' + new Date(entry.Date * 1000).toLocaleString() + ']</div>');
            }
            html.push('</li>');
          }
          html.push('</ul>');
          container.innerHTML = html.join("");
        }

        // Resize iframe height to fit content.
        _IG_AdjustIFrameHeight();
      },
      entries,
      (summaries > -1)
    );
  }

  // Set onload event handler to call init()
  _IG_RegisterOnloadHandler(init);
  _IG_Analytics("UA-676947-9", "/feeds_tabs");
  </script>
]]>
</Content>
</Module>
