<?xml version="1.0" encoding="UTF-8"?>
<Module>
  <ModulePrefs author_email="info@openlylocal.com" author_link="http://OpenlyLocal.com" title="UK Council info :: OpenlyLocal" scrolling="true" description="Get info on what your council is doing from OpenlyLocal.com :: making Local Government more transparent" singleton="false" directory_title="UK Council info :: OpenlyLocal" height="250" author="CountCulture" author_affiliation="OpenlyLocal.com">
    <Require feature="settitle"/>
    <Require feature="tabs"/>
    <Require feature="setprefs"/>
    <Require feature="com.google.gadgets.analytics"/>
    <Require feature="opensocial-0.9"/>
    <Preload href="http://openlylocal.com/councils/__UP_council__.json"/>
  </ModulePrefs>
  <UserPref required="true" display_name="Council" name="council" datatype="enum">
    <EnumValue display_value="Aberdeen City Council" value="37"/>
    <EnumValue display_value="Allerdale Borough Council" value="38"/>
    <EnumValue display_value="Argyll &amp; Bute Council" value="39"/>
    <EnumValue display_value="Basildon District Council" value="40"/>
    <EnumValue display_value="Bedford Borough Council" value="144"/>
    <EnumValue display_value="Belfast City Council" value="41"/>
    <EnumValue display_value="Birmingham City Council" value="167"/>
    <EnumValue display_value="Blaby District Council" value="42"/>
    <EnumValue display_value="Blackburn with Darwen Borough Council" value="112"/>
    <EnumValue display_value="Bolton Metropolitan Borough Council" value="113"/>
    <EnumValue display_value="Bracknell Forest Council" value="43"/>
    <EnumValue display_value="Breckland District Council" value="44"/>
    <EnumValue display_value="Brighton and Hove City Council" value="45"/>
    <EnumValue display_value="Bristol City Council" value="149"/>
    <EnumValue display_value="Bromsgrove District Council" value="46"/>
    <EnumValue display_value="Buckinghamshire County Council" value="47"/>
    <EnumValue display_value="Cambridge City Council" value="214"/>
    <EnumValue display_value="Canterbury City Council" value="48"/>
    <EnumValue display_value="Cardiff Council" value="215"/>
    <EnumValue display_value="Carlisle City Council" value="114"/>
    <EnumValue display_value="Central Bedfordshire Council" value="145"/>
    <EnumValue display_value="Cheltenham Borough Council" value="152"/>
    <EnumValue display_value="Cherwell District Council" value="49"/>
    <EnumValue display_value="Cheshire East" value="146"/>
    <EnumValue display_value="Cheshire West and Chester" value="147"/>
    <EnumValue display_value="Chorley Borough Council" value="51"/>
    <EnumValue display_value="City of Glasgow" value="277"/>
    <EnumValue display_value="City of Westminster" value="36"/>
    <EnumValue display_value="City of York" value="111"/>
    <EnumValue display_value="Conwy County Borough Council" value="52"/>
    <EnumValue display_value="Cornwall Council" value="53"/>
    <EnumValue display_value="Council of the Isles of Scilly" value="67"/>
    <EnumValue display_value="Coventry City Council" value="116"/>
    <EnumValue display_value="Dartford Borough Council" value="54"/>
    <EnumValue display_value="Derby City Council" value="117"/>
    <EnumValue display_value="Dudley Metropolitan Borough" value="118"/>
    <EnumValue display_value="Durham County Council" value="168"/>
    <EnumValue display_value="Eastleigh Borough Council" value="55"/>
    <EnumValue display_value="East Lindsey District Council" value="56"/>
    <EnumValue display_value="East Riding of Yorkshire Council" value="261"/>
    <EnumValue display_value="East Staffordshire Borough Council" value="120"/>
    <EnumValue display_value="East Sussex County Council" value="262"/>
    <EnumValue display_value="Eden District Council" value="263"/>
    <EnumValue display_value="Elmbridge Borough Council" value="265"/>
    <EnumValue display_value="Epping Forest District Council" value="57"/>
    <EnumValue display_value="Erewash Borough" value="58"/>
    <EnumValue display_value="Exeter City" value="59"/>
    <EnumValue display_value="Gloucester City Council" value="61"/>
    <EnumValue display_value="Gloucestershire County Council" value="278"/>
    <EnumValue display_value="Gosport Borough Council" value="279"/>
    <EnumValue display_value="Gravesham Borough Council" value="62"/>
    <EnumValue display_value="Halton Borough Council" value="63"/>
    <EnumValue display_value="Hampshire County Council" value="284"/>
    <EnumValue display_value="Herefordshire Council" value="64"/>
    <EnumValue display_value="Hertsmere Borough Council" value="65"/>
    <EnumValue display_value="High Peak Borough" value="291"/>
    <EnumValue display_value="Hull City Council" value="294"/>
    <EnumValue display_value="Huntingdonshire District Council" value="66"/>
    <EnumValue display_value="Isle of Wight Council" value="298"/>
    <EnumValue display_value="Kent County Council" value="68"/>
    <EnumValue display_value="Knowsley Metropolitan Borough" value="69"/>
    <EnumValue display_value="Lancashire County Council" value="301"/>
    <EnumValue display_value="Lancaster City Council" value="70"/>
    <EnumValue display_value="Leeds City Council" value="71"/>
    <EnumValue display_value="Leicester City Council" value="303"/>
    <EnumValue display_value="Leicestershire County Council" value="72"/>
    <EnumValue display_value="Lichfield District Council" value="156"/>
    <EnumValue display_value="Lincoln City Council" value="306"/>
    <EnumValue display_value="Liverpool City Council" value="73"/>
    <EnumValue display_value="London Borough of Barking &amp; Dagenham" value="19"/>
    <EnumValue display_value="London Borough of Barnet" value="20"/>
    <EnumValue display_value="London Borough of Bexley" value="5"/>
    <EnumValue display_value="London Borough of Brent" value="21"/>
    <EnumValue display_value="London Borough of Bromley" value="22"/>
    <EnumValue display_value="London Borough of Camden" value="23"/>
    <EnumValue display_value="London Borough of Croydon" value="25"/>
    <EnumValue display_value="London Borough of Ealing" value="26"/>
    <EnumValue display_value="London Borough of Enfield" value="6"/>
    <EnumValue display_value="London Borough of Greenwich" value="28"/>
    <EnumValue display_value="London Borough of Hackney" value="7"/>
    <EnumValue display_value="London Borough of Hammersmith &amp; Fulham" value="29"/>
    <EnumValue display_value="London Borough of Haringey" value="8"/>
    <EnumValue display_value="London Borough of Harrow" value="9"/>
    <EnumValue display_value="London Borough of Havering" value="30"/>
    <EnumValue display_value="London Borough of Hillingdon" value="31"/>
    <EnumValue display_value="London Borough of Hounslow" value="10"/>
    <EnumValue display_value="London Borough of Islington" value="32"/>
    <EnumValue display_value="London Borough of Lambeth" value="12"/>
    <EnumValue display_value="London Borough of Lewisham" value="34"/>
    <EnumValue display_value="London Borough of Merton" value="1"/>
    <EnumValue display_value="London Borough of Newham" value="13"/>
    <EnumValue display_value="London Borough of Redbridge" value="14"/>
    <EnumValue display_value="London Borough of Richmond upon Thames" value="35"/>
    <EnumValue display_value="London Borough of Southwark" value="15"/>
    <EnumValue display_value="London Borough of Sutton" value="4"/>
    <EnumValue display_value="London Borough of Tower Hamlets" value="16"/>
    <EnumValue display_value="London Borough of Waltham Forest" value="17"/>
    <EnumValue display_value="London Borough of Wandsworth" value="2"/>
    <EnumValue display_value="Luton Borough Council" value="123"/>
    <EnumValue display_value="Maidstone Borough Council" value="74"/>
    <EnumValue display_value="Malvern Hills District Council" value="75"/>
    <EnumValue display_value="Manchester City Council" value="157"/>
    <EnumValue display_value="Merthyr Tydfil Council" value="76"/>
    <EnumValue display_value="Mid Suffolk District Council" value="124"/>
    <EnumValue display_value="Monmouthshire Council" value="158"/>
    <EnumValue display_value="Newcastle upon Tyne City Council" value="77"/>
    <EnumValue display_value="Norfolk County Council" value="328"/>
    <EnumValue display_value="Northamptonshire County Council" value="126"/>
    <EnumValue display_value="North Kesteven District Council" value="79"/>
    <EnumValue display_value="Northumberland County Council" value="329"/>
    <EnumValue display_value="North West Leicestershire" value="341"/>
    <EnumValue display_value="Oxford City Council" value="350"/>
    <EnumValue display_value="Oxfordshire County Council" value="81"/>
    <EnumValue display_value="Pembrokeshire Council" value="82"/>
    <EnumValue display_value="Peterborough City  Council" value="83"/>
    <EnumValue display_value="Plymouth City Council" value="84"/>
    <EnumValue display_value="Portsmouth City Council" value="353"/>
    <EnumValue display_value="Preston City Council" value="85"/>
    <EnumValue display_value="Redditch Borough Council" value="86"/>
    <EnumValue display_value="Reigate and Banstead Borough Council" value="357"/>
    <EnumValue display_value="Rotherham Metropolitan Borough Council" value="87"/>
    <EnumValue display_value="Royal Borough of Kensington &amp; Chelsea" value="33"/>
    <EnumValue display_value="Royal Borough of Kingston upon Thames" value="11"/>
    <EnumValue display_value="Ryedale District Council" value="368"/>
    <EnumValue display_value="Salford City Council" value="369"/>
    <EnumValue display_value="Scarborough Borough Council" value="88"/>
    <EnumValue display_value="Sefton Metropolitan Borough Council" value="89"/>
    <EnumValue display_value="Sevenoaks District Council" value="130"/>
    <EnumValue display_value="Shepway District Council" value="373"/>
    <EnumValue display_value="Slough Borough Council" value="90"/>
    <EnumValue display_value="Southampton City Council" value="377"/>
    <EnumValue display_value="South Bucks District Council" value="91"/>
    <EnumValue display_value="South Cambridgeshire" value="92"/>
    <EnumValue display_value="South Gloucestershire District Council" value="93"/>
    <EnumValue display_value="South Kesteven" value="94"/>
    <EnumValue display_value="Staffordshire County Council" value="95"/>
    <EnumValue display_value="St Albans City &amp; District Council" value="98"/>
    <EnumValue display_value="St Helens Borough Council" value="99"/>
    <EnumValue display_value="Stockton-on-Tees Borough Council" value="393"/>
    <EnumValue display_value="Stoke-on-Trent City Council" value="96"/>
    <EnumValue display_value="Stratford-on-Avon" value="97"/>
    <EnumValue display_value="Suffolk County Council" value="397"/>
    <EnumValue display_value="Sunderland City Council" value="134"/>
    <EnumValue display_value="Surrey Heath Borough Council" value="399"/>
    <EnumValue display_value="Swindon Borough Council" value="100"/>
    <EnumValue display_value="Tewkesbury Borough Council" value="101"/>
    <EnumValue display_value="Thanet District Council" value="102"/>
    <EnumValue display_value="Tonbridge and Malling Borough Council" value="410"/>
    <EnumValue display_value="Trafford Council" value="414"/>
    <EnumValue display_value="Vale of White Horse District Council" value="103"/>
    <EnumValue display_value="Wakefield City Metropolitan District Council" value="104"/>
    <EnumValue display_value="Walsall Metropolitan Borough Council" value="139"/>
    <EnumValue display_value="Warrington Council" value="140"/>
    <EnumValue display_value="Watford Borough Council" value="418"/>
    <EnumValue display_value="Wealden District Council" value="105"/>
    <EnumValue display_value="West Lothian Council" value="177"/>
    <EnumValue display_value="Wigan Metropolitan Borough" value="427"/>
    <EnumValue display_value="Wiltshire Council" value="107"/>
    <EnumValue display_value="Wirral Metropolitan Borough" value="108"/>
    <EnumValue display_value="Wolverhampton City Council" value="143"/>
    <EnumValue display_value="Worcester City Council" value="109"/>
    <EnumValue display_value="Wychavon District Council" value="110"/>
    <EnumValue display_value="Wyre Forest District Council" value="437"/>
  </UserPref>
  <UserPref name="selectedTab" datatype="hidden"/>
  <Content type="html">
    <![CDATA[
<style> 
  .collection { font-size: 70%;  padding: 5px; }
  h3 { border-bottom: 1px solid #676767; margin: 0.5em 0 0 0;}
  ul {padding: 10px; margin: 0.5em 0.25em;}
  #footer { padding 5px; background-color: #eee; border-top: 1px solid #676767; margin-top: 1em;}
  a {text-decoration: none; color: #003366;}
  a.official_page {color: #515151; background: transparent url(http://openlylocal.com/images/ext_link.gif) no-repeat scroll left center; padding-left:10px;}
  a:hover {text-decoration: underline; color: black;}
</style>

<script type="text/javascript">
  var prefs = new gadgets.Prefs();
  
  // Initialize tabs.
  var tabs = new gadgets.TabSet(__MODULE_ID__);
  tabs.alignTabs("left");
  
  // Initialize google gadget.
  var ga = new _IG_GA('UA-9440277-2');
  ga.reportPageview('/tools/googleGadgetView');
                  
  function getCouncilData() {
    var councilId = prefs.getString("council");
    var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
    params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
    // This URL returns a JSON-encoded string that represents a JavaScript object
    var url = "http://openlylocal.com/councils/" + councilId + ".json";
    gadgets.io.makeRequest(url, insertCouncilData, params);
  };

  function listItemFor(obj) {
    var li = "<li>";
    li += obj.formatted_date || "";
    li += " <a href='" + (obj.openlylocal_url || obj.url) + "'>";
    li += (obj.title || obj.name || (obj.first_name + " " + obj.last_name));
    li += "</a>" + (obj.party ? " (" + obj.party + ")" : "");
    li += obj.openlylocal_url && obj.url ? (" <a href='" + obj.url + "' class='official_page'>official page</a></li>") : "</li>";
    return li;
  }
  
  function listAll(coll) { 
    if(coll.length && coll.length > 0){
      var listResult = "<ul>";
      for (var i = 0; i < coll.length; i++) {
        var li = coll[i];
        listResult += listItemFor(li);
      }
      listResult += "</ul>";
      return listResult;
    }
    else { return '';}
  }

  function insertCouncilData(obj)
  { 
    var council = obj.data.council;
    var partyBreakdown = [];
    var partyBreakdownObj ={};
    var footer = "</div><div id='footer'>More details and info at <a href='http://openlylocal.com'>OpenlyLocal</a> :: Making local government more transparent</div>";
    gadgets.window.setTitle(council.name + " :: OpenlyLocal");
    
    for (var i = 0; i < council.members.length; i++) {
      var p = council.members[i].party;
      partyBreakdownObj[p] === undefined ? partyBreakdownObj[p] = 1 : partyBreakdownObj[p] +=1;
    }
    // turn in to proper array
    for (var party in partyBreakdownObj) {
      if (partyBreakdownObj.hasOwnProperty(party)) {partyBreakdown.push([partyBreakdownObj[party], party]);}
    }
    partyBreakdown = partyBreakdown.sort(function (a,b) {return b[0] - a[0]}); //sort with largest first
    var memberHtml = "";
    var committeeHtml = "";
    var meetingHtml = "";
    var summaryHtml = "<h2><a href='" + council.openlylocal_url + "'>" + council.name + "</a></h2><div class='contact_details'>" + council.address + ", tel: " + council.telephone + ", <a href='" + council.url + "'>" + council.url + "</a></div>";
    summaryHtml += "<div class='party_breakdown'><strong>" + council.members.length + " councillors</strong> (";

    for (var i = 0; i < partyBreakdown.length; i++) {
      var p = partyBreakdown[i];
      summaryHtml += partyBreakdown[i][0] + " " + partyBreakdown[i][1];
      if(partyBreakdown.length - i > 1) { summaryHtml += ", "; };
    }
    summaryHtml += ")</div>";
    
    var recentActivity = council.recent_activity;
    for (var coll in recentActivity) {
      if (recentActivity.hasOwnProperty(coll)) {
        summaryHtml += "<h3>" + recentActivity[coll].length + " new/updated " + coll + "</h3>" + listAll(recentActivity[coll]);
      }
    }

    for (var i = 0; i < council.members.length; i++) {
      var m = council.members[i];
      memberHtml += listItemFor(m);
    }    
       
    for (var i = 0; i < council.committees.length; i++) {
      var c = council.committees[i];
      committeeHtml += listItemFor(c);
    } 
    
    for (var i = 0; i < council.meetings.length; i++) {
      var m = council.meetings[i];
      meetingHtml += listItemFor(m);
    } 

    document.getElementById('members').innerHTML = listAll(council.members) + footer;
    document.getElementById('committees').innerHTML = listAll(council.committees) + footer;
    document.getElementById('meetings').innerHTML = listAll(council.meetings) + footer;
    document.getElementById('summary').innerHTML = summaryHtml + footer;
    
    tabs.addTab("Summary", {
       contentContainer: document.getElementById("summary")
    });
    tabs.addTab("Members", {
       contentContainer: document.getElementById("members")
    });
    tabs.addTab("Committees", {
       contentContainer: document.getElementById("committees")
    });
    tabs.addTab("Meetings", {
       contentContainer: document.getElementById("meetings")
    });

  }

  // Call the init function on page load
  gadgets.util.registerOnLoadHandler(getCouncilData);
  
</script>

<div id="summary" class="collection">Loading...</div>
<div id="members" class="collection" style="display:none">Loading...</div>
<div id="committees" class="collection" style="display:none">Loading...</div>
<div id="meetings" class="collection" style="display:none">Loading...</div>
]]>
  </Content>
</Module>
