diff --git a/0Ao5u1U6KYND7dGN5QngweVJUWE16bTRob0d2a3dCbnc.json b/0Ao5u1U6KYND7dGN5QngweVJUWE16bTRob0d2a3dCbnc.json
new file mode 100644
index 00000000..fc390fce
--- /dev/null
+++ b/0Ao5u1U6KYND7dGN5QngweVJUWE16bTRob0d2a3dCbnc.json
@@ -0,0 +1 @@
+[{"id":"0","placename":"Oakland Zoo","venue":"Oakland Zoo","image":"elephant","noun":"animal","lat":"37.7502645413531","long":"-122.14675065","hexcolor":"#FFE7E7","city":"Oakland","state":"California","year":"2013","photo-url":"","rowNumber":1},{"id":"1","placename":"Winchester Mystery House","venue":"Winchester Mystery House","image":"mansion","noun":"place","lat":"37.3183373","long":"-121.9510439","hexcolor":"#F7CE86","city":"San Jose","state":"California","year":"2012","photo-url":"","rowNumber":2},{"id":"2","placename":"Winchester Mystery House","venue":"Winchester Mystery House","image":"Sarah Winchester","noun":"person","lat":"37.3183373","long":"-121.9510439","hexcolor":"#F78585","city":"San Jose","state":"California","year":"2012","photo-url":"","rowNumber":3},{"id":"3","placename":"Amerian Museum of Natural History","venue":"Amerian Museum of Natural History","image":"mammoth","noun":"animal","lat":"40.7809389","long":"-73.9730135","hexcolor":"#FFE7E7","city":"Washington DC","state":"Washington DC","year":"2011","photo-url":"","rowNumber":4},{"id":"4","placename":"Six Flags Over Georgia","venue":"Six Flags Over Georgia","image":"Viper","noun":"animal, ride","lat":"33.767303","long":"-84.551204","hexcolor":"#F7CE86","city":"Atlanta","state":"Georgia","year":"2000","photo-url":"","rowNumber":5},{"id":"5","placename":"World Trade Center","venue":"","image":"skyline","noun":"place","lat":"40.7143528","long":"-74.0059731","hexcolor":"#F7CE86","city":"New York City","state":"New York","year":"2008","photo-url":"","rowNumber":6},{"id":"6","placename":"The St. Pete Pier","venue":"The St. Pete Pier","image":"pier building","noun":"place","lat":"27.773566","long":"-82.622326","hexcolor":"#F7CE86","city":"St. Petersburg","state":"Florida","year":"1998","photo-url":"","rowNumber":7},{"id":"7","placename":"Miss Katie's Restaurant","venue":"","image":"logo","noun":"graphic","lat":"33.8081608","long":"-84.170196","hexcolor":"#F78585","city":"Stone Mountain","state":"Georgia","year":"1993","photo-url":"","rowNumber":8},{"id":"8","placename":"Rhode Island","venue":"","image":"ship","noun":"thing","lat":"41.8239891","long":"-71.4128343","hexcolor":"#FFE7E7","city":"Providence","state":"Rhode Island","year":"2008","photo-url":"","rowNumber":9},{"id":"9","placename":"River Street, Savannah","venue":"","image":"skyline","noun":"place","lat":"32.0814473472438","long":"-81.0903453826904","hexcolor":"#F78585","city":"Savannah ","state":"Georgia","year":"2004","photo-url":"","rowNumber":10},{"id":"10","placename":"Natchez New Orleans","venue":"","image":"ship","noun":"thing","lat":"29.9510658","long":"-90.0715323","hexcolor":"#FFE7E7","city":"New Orleans","state":"Lousianna","year":"2007","photo-url":"","rowNumber":11},{"id":"11","placename":"Margarittaville","venue":"","image":"drink","noun":"thing","lat":"29.9510658","long":"-90.0715323","hexcolor":"#FFE7E7","city":"New Orleans","state":"Lousianna","year":"2007","photo-url":"","rowNumber":12},{"id":"12","placename":"Woodman's","venue":"Woodman's","image":"clam","noun":"animal","lat":"42.630151","long":"-70.774552","hexcolor":"#F78585","city":"Essex","state":"Massachusetts","year":"2008","photo-url":"","rowNumber":13},{"id":"13","placename":"Summit Pikes Peak","venue":"Summit Pikes Peak","image":"logo","noun":"graphic","lat":"38.840556","long":"-105.044167","hexcolor":"#F78585","city":"Pikes Peak","state":"Colorado","year":"2002","photo-url":"","rowNumber":14},{"id":"14","placename":"Polar Caves Park","venue":"Polar Caves Park","image":"polar bear","noun":"animal","lat":"43.7940757","long":"-71.8508395","hexcolor":"#F78585","city":"Rumney","state":"New Hampshire","year":"2010","photo-url":"","rowNumber":15},{"id":"15","placename":"Rainforest Cafe","venue":"OpryMills","image":"butterfly","noun":"animal","lat":"36.2051067","long":"-86.6938833","hexcolor":"#F7CE86","city":"Nashville","state":"Tennessee","year":"1999","photo-url":"","rowNumber":16},{"id":"16","placename":"National Museum of American History","venue":"National Museum of American History","image":"house","noun":"place","lat":"38.8911993","long":"-77.0300391","hexcolor":"#F78585","city":"Washington DC","state":"Washington DC","year":"2011","photo-url":"","rowNumber":17},{"id":"17","placename":"Boston Celtics","venue":"TD Garden","image":"mascot","noun":"person","lat":"42.3660275025778","long":"-71.0615873336792","hexcolor":"#FFE7E7","city":"Boston","state":"Massachusetts","year":"2010","photo-url":"","rowNumber":18},{"id":"18","placename":"Cafe du Monde","venue":"Cafe Du Monde","image":"coffee and bengiet","noun":"food","lat":"29.9510658","long":"-90.0715323","hexcolor":"#FFE7E7","city":"New Orleans","state":"Lousianna","year":"2012","photo-url":"","rowNumber":19},{"id":"19","placename":"Six Flags Over Georgia","venue":"Six Flags Over Georgia","image":"Wylie Cyotte","noun":"animal","lat":"33.767303","long":"-84.551204","hexcolor":"#FFE7E7","city":"Atlanta","state":"Georgia","year":"2003","photo-url":"","rowNumber":20},{"id":"20","placename":"Mardis Gras","venue":"","image":"masks","noun":"thing","lat":"29.9510658","long":"-90.0715323","hexcolor":"#FFE7E7","city":"New Orleans","state":"Lousianna","year":"2004","photo-url":"","rowNumber":21},{"id":"21","placename":"Buzz Lightyear","venue":"Six Flags Over Georgia","image":"Buzz Lightyear","noun":"person","lat":"28.3702563165193","long":"-81.5497970581055","hexcolor":"#F78585","city":"Walt Disney World","state":"Florida","year":"2001","photo-url":"","rowNumber":22},{"id":"22","placename":"Independence Hall","venue":"Independence Hall","image":"Indepence Hall","noun":"place","lat":"39.952335","long":"-75.163789","hexcolor":"#FFE7E7","city":"Philadelphia","state":"Pennsylvania","year":"2008","photo-url":"","rowNumber":23},{"id":"23","placename":"Golden Gate Bridge","venue":"","image":"Golden Gate Bridge","noun":"thing","lat":"37.809783953011","long":"-122.47740983963","hexcolor":"#FFE7E7","city":"San Francisco","state":"California","year":"2011","photo-url":"","rowNumber":24},{"id":"24","placename":"Pirates of the Caribean","venue":"Magic Kingdom, Walt Disney World","image":"Goofey","noun":"person","lat":"28.3702563165193","long":"-81.5497970581055","hexcolor":"#FFE7E7","city":"Walt Disney World","state":"Florida","year":"2001","photo-url":"","rowNumber":25},{"id":"25","placename":"Boston Skyline","venue":"TD Garden","image":"skyline","noun":"place","lat":"42.3660275025778","long":"-71.0615873336792","hexcolor":"#FFE7E7","city":"Boston","state":"Massachusetts","year":"2009","photo-url":"","rowNumber":26},{"id":"26","placename":"Johnny Bravo","venue":"Six Flags Over Georgia","image":"Johnny Bravo","noun":"person","lat":"33.767303","long":"-84.551204","hexcolor":"#FFE7E7","city":"Atlanta","state":"Georgia","year":"2003","photo-url":"","rowNumber":27},{"id":"27","placename":"Busch Gardens","venue":"Busch Gardens","image":"clydesdale","noun":"animal","lat":"28.033158","long":"-82.420593","hexcolor":"#F78585","city":"Tampa","state":"Florida","year":"2002","photo-url":"","rowNumber":28},{"id":"28","placename":"California Academy of Sciences","venue":"California Academy of Sciences","image":"aligator","noun":"animal","lat":"37.769979","long":"-122.466288","hexcolor":"#FFE7E7","city":"San Francisco","state":"California","year":"2012","photo-url":"","rowNumber":29},{"id":"29","placename":"Santa Monica Pier","venue":"Pacific Park","image":"rollercoaster","noun":"thing","lat":"34.009471","long":"-118.497322","hexcolor":"#F78585","city":"Santa Monica","state":"California","year":"2013","photo-url":"","rowNumber":30},{"id":"30","placename":"Monterey Aquarium","venue":"Monterey Aquarium","image":"animal","noun":"animal","lat":"36.618032","long":"-121.902054","hexcolor":"#FFE7E7","city":"Monterey","state":"California","year":"2013","photo-url":"","rowNumber":31},{"id":"31","placename":"Hearst Castle","venue":"Hearst Castle","image":"architecture","noun":"architecture","lat":"35.685312","long":"-121.16894","hexcolor":"#F78585","city":"San Simeon","state":"California","year":"2013","photo-url":"","rowNumber":32}]
\ No newline at end of file
diff --git a/docs/about.md b/docs/about.md
new file mode 100644
index 00000000..33a2dcd3
--- /dev/null
+++ b/docs/about.md
@@ -0,0 +1,27 @@
+More about Sheetsee's development and the libraries it's built on.
+
+## In the Beginning
+Sheetsee.js began as a part of my [Code for America]() 2012 Fellowship project, [See Penny Work](). The idea and original code was to enable cities to easily publish and maintain themselves their budget data. The original sheetsee.js was built into Wordpress templates so that with the See Penny Work template, you could create pages that you only had to name and they would be populated with maps, charts and tables based on the page name corelating with a project in the spreadsheet.
+
+In early 2013, after the CfA Fellowship, I recieved a grant from Mozilla Open News to pull out the sheetsee.js bits and make it a standalone open source library. That brought us to version 2.
+
+The present version makes the project modular, customizable and with more maping and table features. View the [changelog]() for a timeline of features and states.
+
+## Built ontop of Tabletop.js
+Sheetsee would not exist were it not for [tabletop.js]() a library built in ___ by ___ that handles the messy interactions with the Google Spreadsheets API for you and returns a lovely JSON of your data. Every instance of Sheetsee begins with running tabletop.js.
+
+### Sheetsee.js + Mapbox.js + Leaflet.js + d3.js
+Once you've got the data, the meat of Sheetsee comes into play. You can now decide if you want to map, chart or display your data in a table. Sheetsee's table module, sheetsee-tables, comes with sorting, filtering and pagination. Sheetsee-maps is built ontop of Leaflet.js and Mapbox.js and allows you to customize colors and popups of points, lines, polygons or multipolygons. Finally, Sheetee-charts comes with three basic [d3.js]() charts: bar, circle and line. It is difficult to make a chart that can suit many types of data, but it is easy to choose your own d3 chart and plug it in to sheetsee. Documentation for creating a d3 module is [here]().
+
+## Hacked on Openly
+- Sheetsee.js is open source software with a [BSD license](docs/license.md).
+- Sheetsee.js is built and maintained by [jlord](http://www.github.com/jlord) ([twitter](http://www.twitter.com/jllord)) with support from [contributors]() and a lot of support and knowledge passed on by [Max Ogden]().
+
+## Contact
+- File a [new issue]() for ideas and bug reports.
+- If your issue falls specifically with one of the modules, you can file it on its particular repo:
+ - [sheetsee](http://www.github.com/jlord/sheetsee)
+ - [sheetsee-tables](http://www.github.com/jlord/sheetsee-tables)
+ - [sheetsee-maps](http://www.github.com/jlord/sheetsee-maps)
+ - [sheetsee-charts](http://www.github.com/jlord/sheetsee-charts)
+- [jllord](http://www.twitter.com/jllord) on Twitter.
diff --git a/docs/building.md b/docs/building.md
new file mode 100644
index 00000000..690a8cac
--- /dev/null
+++ b/docs/building.md
@@ -0,0 +1,20 @@
+You can customize your sheetsee build with just the parts you want to use. If you want to just use the full version, you can grab it here in [js/sheetsee.js]().
+
+**To build your sheetsee you'll need [Node.js]() on your computer and a commandline**
+
+## Install sheetsee from NPM
+The sheetsee module contains the basic sorting, organizing data functions and the script for building on the other modules. Create a folder for you new project and `cd` into it. Then install `sheetsee`.
+
+```cd myNewProject```
+```npm install sheetsee```
+
+Once you've decided which modules you want run this command `sheetsee ` adding:
+
+- `-m` or `-maps` for maps
+- `-t` or `-tables` for tables
+- `-c` or `-charts` for charts
+- `--save` to write out the file*
+
+* _defaults to standardout on your console which you can `| pbcopy`
+
+So for instance, `sheetsee -m -t --save` will build you a sheetsee with the map and tables sections built in and save it as a file named sheetsee.js.
\ No newline at end of file
diff --git a/docs/changelog.md b/docs/changelog.md
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/custom-charts.md b/docs/custom-charts.md
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/fork-n-go.md b/docs/fork-n-go.md
new file mode 100644
index 00000000..ccfa3d35
--- /dev/null
+++ b/docs/fork-n-go.md
@@ -0,0 +1 @@
+# Fork-n-Go
\ No newline at end of file
diff --git a/docs/sheetsee-charts.md b/docs/sheetsee-charts.md
new file mode 100644
index 00000000..bad8b18a
--- /dev/null
+++ b/docs/sheetsee-charts.md
@@ -0,0 +1,86 @@
+# sheetsee-charts
+
+![sheetsee](https://raw.github.com/jllord/sheetsee-cache/master/img/sheetsee-03.png)
+
+Module for working with charts with sheetsee.js. It provides three d3 chart options to use with your spreadsheet data. Below is a portion of the sheetsee.js documentation regarding charts, for the full sheetsee.js documentation, go [here](http://jlord.github.io/sheetsee.js)!
+
+---
+
+## Make a Chart
+
+Sheetsee.js comes with a d3.js bar, pie and line chart. Each requires your data be an _array of objects_, formatted to contain "label" and "units" keys. See the section above on Your Data to learn about formatting.
+
+You'll have to experiement with the charts to find the correct size your `
` will need to be to hold the chart with your data in it nicely.
+
+You can also make your own d3 chart in a separate .js file, link to that and pass your data on to it. I'd love to see people building some other charts that will work with Sheetsee.
+
+### Bar Chart
+
+To create a bar chart you'll need to add a placeholder `
` in your HTML with an id.
+
+
+
+In your CSS, give it dimensions.
+
+ #barChart {height: 400px; max-width: 600px; background: #F8CDCD;}
+
+In a `
+
+#### Your `
+
+To create another table, simply repeat the steps except for `initiateTableFilter()`
+
+
+
+
+
+ Learn more about the things you can do with [mustache.js](http://mustache.github.io/).
+
+### Sheetsee.makeTable(data, targetDiv)
+
+You'll call this to make a table out of a **data** and tell it what **targetDiv** in the html to render it in (this should also be the same id as your script template id) and how many **rows** you want it to show per "page" of the table. If you don't include the pagination number, it will default to showing all rows on one page.
+
+ Sheetsee.makeTable(gData, "#siteTable", 10)
+
+## Table Filter/Search
+
+If you want to have an input to allow users to search/filter the data in the table, you'll add this to your html:
+
+
+ Clear
+ no matches
+
+### Sheetsee.initiateTableFilter(data, filterDiv, tableDiv)
+
+You will then call this function to make that input live:
+
+ Sheetsee.initiateTableFilter(gData, "#TableFilter", "#siteTable")
diff --git a/docs/sheetsee.md b/docs/sheetsee.md
new file mode 100644
index 00000000..6d4393dc
--- /dev/null
+++ b/docs/sheetsee.md
@@ -0,0 +1,110 @@
+# sheetsee
+
+![sheetsee](https://raw.github.com/jllord/sheetsee-cache/master/img/sheetsee-03.png)
+
+This module contains the basic functions for sorting and munipulating data for use in your [sheetsee.js](http://jlord.github.io/sheetsee.js) endeavors. Below is the portion of the [sheetsee.js](http://jlord.github.io/sheetsee.js) readme that covers the use of these functions. For the complete documentation including genera what is sheetsee, go [here](http://jlord.github.io/sheetsee.js)!
+
+---
+
+## Working With Your Data
+
+Tabletop.js will return all of your data and it will be passed into your site as an _array of objects_ called **gData**. Sheetsee.js has functions built in to help you filter or use that data in other ways if you'd like.
+
+### Sheetsee.getGroupCount(data, groupTerm)
+
+This takes in your data, an _array of objects_, and searches for a _string_, **groupTerm**, in each piece of your **data** (formerly the cells of your spreadsheet). It returns the number of times it found the **groupTerm**.
+
+ getGroupCount(gData, "cat")
+ // returns 2
+
+### Sheetsee.getColumnTotal(data, column)
+
+Given your **data**, an _array of objects_ and a _string_ **column** header, this functions sums each cell in that column, so they best be numbers.
+
+ getColumnTotal(gData, "cuddlability")
+ // returns 11
+
+### Sheetsee.getAveragefromColumn(data, column)
+
+A really simple function that builds on `getColumnTotal()` by returning the average number in a **column** of numbers.
+
+ getColumnAverage(gData, "cuddlability")
+ // returns 1.8333333333333333
+
+### Sheetsee.getMin(data, column)
+
+This will return an _array_ of _object_ or _objects_ (if there is a tie) of the element with the lowest number value in the **column** you specify from your **data**.
+
+ getMin(gData, "cuddlability")
+ // returns {breed: "Fat", cuddlability: "0", hexcolor: "#CDCF83"...}, {breed: "Grey", cuddlability: "0", hexcolor: "#9C9B9A"...}, {breed: "Creepy", cuddlability: "0", hexcolor: "#918376"...}
+
+### Sheetsee.getMax(data, column)
+
+This will return an _array_ of _object_ or _objects_ (if there is a tie) of the element with the highest number value in the **column** you specify from your **data**.
+
+ getMin(gData, "cuddlability")
+ // returns {breed: "Teacup Maltese", cuddlability: "5", hexcolor: "#ECECEC", kind: "Dog", lat: "37.74832", long: "-122.402158", name: "Coco"...}
+
+### Don't Forget JavaScript Math
+
+Create variables that are the sums, differences, multiples and so forth of others. Lots of info on that [here on MDN](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math).
+
+ var profit09 = Sheetsee.getColumnTotal(gData, "2009")
+ var profit10 = Sheetsee.getColumnTotal(gData, "2010")
+ var difference = profit09 - profit10
+
+#### What These Little Bits are Good For
+
+You don't have to just create tables of your data. You can have other portions of your page that show things like, "The difference taco consumption between last week and this week is..." These are easy to create with javascirpt math functions and knowing a little bit more about [icanhas.js](http://icanhazjs.com/). View source on this page to see how I created "Most Cuddlable".
+
+### Sheetsee.getMatches(data, filter, category)
+
+Takes **data** as an _array of objects_, a _string_ you'd like to **filter** and a _string_ of the **category** you want it to look in (a column header from your spreadsheet).
+
+ getMatches(gData, "dog", "kind")
+
+Returns an _array of objects_ matching the category's filter.
+
+ [{"name": "coco", "kind": "dog"...}, {"name": "wolfgang", "kind": "dog"...},{"name": "cooc", "kind": "dog"...} ]
+
+
+### Sheetsee.getOccurance(data, category)
+
+Takes **data** as an _array of objects_ and a _string_ for **category** (a column header from your spreadsheet) you want tally how often an element occured.
+
+ getOccurance(gData, "kind")
+
+Returns an object with keys and values for each variation of the category and its occurance.
+
+ {"dog": 3, "cat": 3}
+
+### Sheetsee.makeColorArrayOfObject(data, colors)
+
+If you use `getOccurance()` and want to then chart that data with d3.js, you'll need to make it into an _array_ (instead of an object) and add colors back in (since the hexcolor column applies to the datapoints in your original dataset and not this new dataset).
+
+This function takes in your data, as an _object_, and an _array_ of hexidecimal color strings which you define.
+
+ var kinds = getOccurance(gData, "kind")
+ var kindColors = ["#ff00ff", "#DCF13C"]
+
+ var kindData = makeColorArrayOfObjects(mostPopBreeds, breedColors)
+
+It will return an array of objects formatted to go directly into a d3 chart with the appropriate _units_ and _label keys_, like so:
+
+ [{"label": "dog", "units": 2, "hexcolor": "#ff00ff"}, {"label": "cat", "units": 3, "hexcolor": "#DCF13C"}]
+
+If you pass in an array of just one color it will repeat that color for all items. If you pass fewer colors than data elements it will repeat the sequences of colors for the remainder elements.
+
+### Sheetsee.addUnitsLabels(arrayObj, oldLabel, oldUnits)
+
+If you're using gData, the data directly from Tabletop, you'll need to format it before you use the d3 charts. You'll need to determine what part of your data you want to chart - what will be your label, what your charting, and what will be your units, how many of them are there (this should be a number).
+
+ var gData = [{"name": "coco", "kind": "dog", "cuddablity": 5}, {"name": "unagi", "kind": "cat", "cuddlability": 0}]
+
+For istance, if from our original data above we want to chart the age of each cat, we'll use:
+
+ Sheetsee.addUnitsLabels(gData, "name", "cuddlability")
+
+Which will return an array, ready for the d3 charts:
+
+ [{"label": "coco", "kind": "dog", "units": 5}, {"label": "unagi", "kind": "cat", "units": 0}]
\ No newline at end of file
diff --git a/docs/tips.md b/docs/tips.md
new file mode 100644
index 00000000..e69de29b
diff --git a/index.html b/index.html
index 166cf190..4c8c80f3 100644
--- a/index.html
+++ b/index.html
@@ -1,12 +1,13 @@
Yo, yo, yo!
-
-
-
+
+
+
+
-
+
@@ -16,17 +17,16 @@
diff --git a/js/jquery.js b/js/jquery.js
new file mode 100644
index 00000000..56278964
--- /dev/null
+++ b/js/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="