beginnings of document scrapers mark 2
beginnings of document scrapers mark 2


Former-commit-id: fc862f3bada775436406e0ee8adcd4e7d04ac8f6

--- a/.gitmodules
+++ b/.gitmodules
@@ -10,16 +10,22 @@
 [submodule "lib/Requests"]
 	path = lib/Requests
 	url = https://github.com/rmccue/Requests.git
-[submodule "javascripts/flotr2"]
-	path = javascripts/flotr2
+[submodule "js/flotr2"]
+	path = js/flotr2
 	url = https://github.com/HumbleSoftware/Flotr2.git
 [submodule "lib/phpquery"]
 	path = lib/phpquery
 	url = https://github.com/TobiaszCudnik/phpquery.git
-[submodule "javascripts/sigma"]
-	path = javascripts/sigma
+[submodule "js/sigma"]
+	path = js/sigma
 	url = https://github.com/jacomyal/sigma.js.git
-[submodule "javascripts/bubbletree"]
-	path = javascripts/bubbletree
+[submodule "js/bubbletree"]
+	path = js/bubbletree
 	url = https://github.com/okfn/bubbletree.git
+[submodule "lib/querypath"]
+	path = lib/querypath
+	url = https://github.com/technosophos/querypath.git
+[submodule "lib/amon-php"]
+	path = lib/amon-php
+	url = https://github.com/martinrusev/amon-php.git
 

file:a/about.php -> file:b/about.php
--- a/about.php
+++ b/about.php
@@ -1,6 +1,6 @@
 <?php
 include_once('include/common.inc.php');
-include_header();
+include_header('About');
 ?>
 <div class="foundation-header">
     <h1><a href="about.php">About/FAQ</a></h1>
@@ -8,9 +8,12 @@
 </div>
 <h2> What is this? </h2>
 Disclo.gs is a project to monitor Australian Federal Government agencies 
-compliance with their <a href="http://www.oaic.gov.au/publications/other_operational/foi_policy_frequently_asked_questions.html#_Toc291837571">"proactive disclosure requirements"</a>.
-
-
+compliance with their <a href="http://www.oaic.gov.au/publications/other_operational/foi_policy_frequently_asked_questions.html#_Toc291837571">"proactive disclosure requirements" to make a transparency league table as suggested by gov2 taskforce http://gov2.net.au/blog/2009/09/19/a-league-ladder-of-psi-openness/</a>.
+<h2> Attributions </h2>
+National Archives of Australia, Australian Governments’ Interactive Functions Thesaurus, 2nd edition, September 2005, published at http://www.naa.gov.au/recordkeeping/thesaurus/index.htm <br/>
+data.gov.au http://data.gov.au/dataset/directory-gov-au-full-data-export/ <br/>
+directory.gov.au <br/>
+australia.gov.au http://australia.gov.au/about/copyright <br/>
 <h2> Open everything </h2>
 All documents released CC-BY 3 AU
 Open source git @

file:b/admin/agls.php (new)
--- /dev/null
+++ b/admin/agls.php
@@ -1,1 +1,35 @@
+<?php
 
+include_once('include/common.inc.php');
+include_header('Webserver and Accessiblity');
+
+echo "<table>
+    <tr><th>name</th><th>function</th></tr>";
+$db = $server->get_db('disclosr-agencies');
+try {
+     $agencies = $db->get_view("app", "byCanonicalName", null, true)->rows;
+
+
+    if ($agencies) {
+        foreach ($agencies as $row) {
+
+            echo "<tr><td>" . $row->value->name . "</td>";
+            if (isset($row->value->metaTags)) {
+                if (is_array($row->value->metaTags)) {
+                        $tags =$row->value->metaTags;
+                } else {
+			$tags = object_to_array($row->value->metaTags);
+                }
+                if (isset($tags['AGLS.Function'])) {
+                    echo "<td>" . $tags['AGLS.Function'] . "</td>";
+                }
+            }
+            echo "</tr>";
+        }
+    }
+} catch (SetteeRestClientException $e) {
+    setteErrorHandler($e);
+}
+include_footer();
+?>
+

--- a/admin/conflicts.php
+++ b/admin/conflicts.php
@@ -1,7 +1,7 @@
 <?php
 
 include_once('../include/common.inc.php');
-include_header();
+include_header('Fix Conflicts');
                 require_once '../lib/php-diff/lib/Diff.php';
                 require_once '../lib/php-diff/lib/Diff/Renderer/Html/SideBySide.php';
 

--- /dev/null
+++ b/admin/genericAgencyFixer.php
@@ -1,1 +1,44 @@
+<?php
 
+include_once("../include/common.inc.php");
+require($basePath . 'lib/phpquery/phpQuery/phpQuery.php');
+
+setlocale(LC_CTYPE, 'C');
+
+
+$db = $server->get_db('disclosr-agencies');
+
+try {
+    $agencies = $db->get_view("app", "byCanonicalName", null, true)->rows;
+    //print_r($rows);
+    foreach ($agencies as $agency) {
+        //echo $agency->value->name . " ".$agency->value->website."<br />\n";
+         // print_r($agency);
+        //hasRestricitiveLicence"	hasRestrictiveLicense -> has Restrictive Licence
+        // "hasYoutube" -> Tube
+        // "comment" -> "comments"
+        if (!isset($agency->value->metaTags) && isset($agency->value->website)) {
+                echo $agency->value->name . " ".$agency->value->website."<br />\n";
+            $agency->value->metaTags = Array();
+            $request = Requests::get($agency->value->website);
+            $html = phpQuery::newDocumentHTML($request->body);
+            phpQuery::selectDocument($html);
+            foreach (pq('meta')->elements as $meta) {
+                $tagName = $meta->getAttribute('name');;
+                $content = $meta->getAttribute('content');
+                if ($tagName != "") {
+echo "$tagName == $content <br>\n";
+                 $agency->value->metaTags[$tagName] = $content;
+                }
+            }
+            //print_r($agency->value->metaTags);
+            $db->save($agency->value);
+            echo "<hr>";
+            flush();
+        }
+    }
+} catch (SetteeRestClientException $e) {
+    setteErrorHandler($e);
+}
+?>
+

--- /dev/null
+++ b/admin/naa-agift-tree.php
@@ -1,1 +1,2504 @@
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+    <title>Demo of the tree layout in D3.js</title>
+<!-- source: http://blog.pixelingene.com/demos/d3_tree/
+http://javadude.wordpress.com/2012/06/20/d3-js-from-tree-to-cluster-and-radial-projection/
+http://bl.ocks.org/1249394-->
+    <style>
+        g.node {
+            font-family: Verdana, Helvetica;
+            font-size: 12px;
+            font-weight: bold;
+        }
+        circle.node-dot {
+            fill: lightsalmon;
+            stroke: red;
+            stroke-width: 1px;
+        }
+
+        path.link {
+            fill: none;
+            stroke: gray;
+        }
+        
+    </style>
+</head>
+<body>
+
+<div id="tree-container"></div>
+ <div id="viz"></div>
+
+<script type="text/javascript" src="../js/jquery-1.6.2.min.js"></script>
+<script type="text/javascript" src="../js/d3.min.js"></script>
+<script type="text/javascript" src="../js/d3.layout.min.js"></script>
+
+<script>
+    /**
+ * Created by JetBrains RubyMine.
+ * User: pavanpodila
+ * Date: 7/17/11
+ * Time: 4:30 PM
+ * To change this template use File | Settings | File Templates.
+ */
+
+var treeData = 
+    <?php
+   //     $json = file_get_children('naa-agift.json');
+   // $raw = json_decode($json);
+   // echo $json;
+   // print_r($raw);
+    $raw = json_decode('[
+   "Home",
+   "index.htm",
+   [
+      "BUSINESS SUPPORT AND REGULATION",
+      "000411.htm",
+      [
+         "Association registration",
+         "000396.htm"
+      ],
+      [
+         "Business process auditing",
+         "000413.htm"
+      ],
+      [
+         "Business registration and licensing",
+         "000414.htm"
+      ],
+      [
+         "Business sponsorship",
+         "001371.htm"
+      ],
+      [
+         "Consumer protection",
+         "000439.htm"
+      ],
+      [
+         "Fair trading compliance",
+         "000482.htm",
+         [
+            "Prices surveillance",
+            "000533.htm"
+         ],
+         [
+            "Product safety",
+            "000534.htm"
+         ],
+         [
+            "Trade practices compliance",
+            "000583.htm"
+         ]
+      ],
+      [
+         "Financial institutions regulation",
+         "000485.htm"
+      ],
+      [
+         "Government procurement regulation",
+         "000491.htm"
+      ],
+      [
+         "Industry assistance schemes",
+         "000499.htm"
+      ],
+      [
+         "Industry development",
+         "000500.htm"
+      ],
+      [
+         "Insurance regulation",
+         "000501.htm",
+         [
+            "General insurance",
+            "000489.htm"
+         ],
+         [
+            "Life insurance",
+            "000505.htm"
+         ]
+      ],
+      [
+         "Professional accreditation",
+         "000535.htm"
+      ],
+      [
+         "Small business services",
+         "000565.htm",
+         [
+            "Small business advocacy",
+            "000563.htm"
+         ],
+         [
+            "Small business development",
+            "000564.htm"
+         ]
+      ],
+      [
+         "Stock market regulation",
+         "000572.htm"
+      ]
+   ],
+   [
+      "CIVIC INFRASTRUCTURE",
+      "000424.htm",
+      [
+         "Civic management",
+         "000425.htm",
+         [
+            "Architectural services",
+            "000387.htm"
+         ],
+         [
+            "Building approval services",
+            "000406.htm"
+         ],
+         [
+            "Building regulations and standards",
+            "000408.htm"
+         ],
+         [
+            "Engineering services",
+            "000477.htm"
+         ],
+         [
+            "Town planning",
+            "000582.htm"
+         ]
+      ],
+      [
+         "Energy supply",
+         "000476.htm"
+      ],
+      [
+         "Integrated services planning",
+         "000503.htm"
+      ],
+      [
+         "Public housing",
+         "000536.htm",
+         [
+            "Public housing construction",
+            "000537.htm"
+         ],
+         [
+            "Public housing design",
+            "000538.htm"
+         ],
+         [
+            "Public housing maintenance",
+            "000540.htm"
+         ]
+      ],
+      [
+         "Public land management",
+         "000541.htm",
+         [
+            "Burial ground management",
+            "000410.htm"
+         ],
+         [
+            "Cultural centre management",
+            "000444.htm"
+         ],
+         [
+            "Garden management",
+            "000488.htm"
+         ],
+         [
+            "Memorial maintenance",
+            "000509.htm"
+         ],
+         [
+            "Recreational park management",
+            "000549.htm"
+         ],
+         [
+            "Sporting facilities management",
+            "000571.htm"
+         ]
+      ],
+      [
+         "Regional development",
+         "000552.htm"
+      ],
+      [
+         "Transport network maintenance",
+         "000586.htm"
+      ],
+      [
+         "Waste management",
+         "001349.htm"
+      ]
+   ],
+   [
+      "COMMUNICATIONS",
+      "000433.htm",
+      [
+         "Advertising standards",
+         "000381.htm"
+      ],
+      [
+         "Broadcasting",
+         "000403.htm",
+         [
+            "Broadcasting standards",
+            "000404.htm"
+         ],
+         [
+            "Radio broadcasting",
+            "000546.htm"
+         ],
+         [
+            "Television broadcasting",
+            "000580.htm"
+         ]
+      ],
+      [
+         "Call centre administration",
+         "000417.htm"
+      ],
+      [
+         "Electronic commerce",
+         "000468.htm",
+         [
+            "Authentication",
+            "000399.htm"
+         ],
+         [
+            "Online transaction standards",
+            "000526.htm"
+         ]
+      ],
+      [
+         "Government media",
+         "000490.htm"
+      ],
+      [
+         "Information management standards",
+         "000283.htm",
+         [
+            "Data management",
+            "000448.htm"
+         ],
+         [
+            "Information dissemination",
+            "000502.htm"
+         ],
+         [
+            "Information technology standards",
+            "000282.htm"
+         ]
+      ],
+      [
+         "Media ownership regulation",
+         "000508.htm"
+      ],
+      [
+         "Postal services",
+         "000530.htm",
+         [
+            "Courier services",
+            "000441.htm"
+         ],
+         [
+            "Electronic postal services",
+            "000469.htm"
+         ],
+         [
+            "Retail postal services",
+            "000554.htm"
+         ]
+      ],
+      [
+         "Publishing",
+         "000543.htm",
+         [
+            "Electronic publishing",
+            "000470.htm"
+         ],
+         [
+            "Publishing standards",
+            "000544.htm"
+         ],
+         [
+            "Website development",
+            "000591.htm"
+         ]
+      ],
+      [
+         "Radio communication",
+         "000547.htm",
+         [
+            "Apparatus licensing",
+            "000385.htm"
+         ],
+         [
+            "Spectrum management",
+            "000570.htm"
+         ]
+      ],
+      [
+         "Satellite communication",
+         "000560.htm"
+      ],
+      [
+         "Telecommunications",
+         "000578.htm",
+         [
+            "Carriage service providers",
+            "000420.htm"
+         ],
+         [
+            "Carrier licensing",
+            "000421.htm"
+         ],
+         [
+            "Equipment licensing",
+            "000480.htm"
+         ],
+         [
+            "Mobile telephone services",
+            "000516.htm"
+         ],
+         [
+            "Telephone services",
+            "000579.htm"
+         ]
+      ]
+   ],
+   [
+      "COMMUNITY SERVICES",
+      "000435.htm",
+      [
+         "Accommodation services",
+         "000377.htm",
+         [
+            "Defence housing",
+            "000458.htm"
+         ],
+         [
+            "Emergency accommodation",
+            "000471.htm"
+         ],
+         [
+            "Public housing entitlements",
+            "000539.htm"
+         ],
+         [
+            "Refuge support",
+            "000551.htm"
+         ]
+      ],
+      [
+         "Community support",
+         "000436.htm",
+         [
+            "Adoption services",
+            "000378.htm"
+         ],
+         [
+            "Aged care services",
+            "000382.htm"
+         ],
+         [
+            "Child and youth support",
+            "000422.htm"
+         ],
+         [
+            "Child-care services",
+            "000423.htm"
+         ],
+         [
+            "Defence community programs",
+            "000452.htm"
+         ],
+         [
+            "Family reunion programs",
+            "000483.htm"
+         ],
+         [
+            "Veterans\" entitlements",
+            "000587.htm"
+         ]
+      ],
+      [
+         "Counselling services",
+         "000440.htm"
+      ],
+      [
+         "Emergency services",
+         "000474.htm",
+         [
+            "Ambulance services",
+            "000384.htm"
+         ],
+         [
+            "Emergency funding",
+            "000472.htm"
+         ],
+         [
+            "Firefighting services",
+            "000487.htm"
+         ]
+      ],
+      [
+         "Financial assistance",
+         "000484.htm",
+         [
+            "Benefits",
+            "000402.htm"
+         ],
+         [
+            "Income support schemes",
+            "000494.htm"
+         ]
+      ],
+      [
+         "Natural disasters",
+         "000521.htm",
+         [
+            "Disaster recovery",
+            "000462.htm"
+         ],
+         [
+            "Disaster relief",
+            "000463.htm"
+         ]
+      ],
+      [
+         "Rural community development",
+         "000557.htm"
+      ],
+      [
+         "Social justice and equity",
+         "000566.htm"
+      ],
+      [
+         "Transport access schemes",
+         "000901.htm"
+      ]
+   ],
+   [
+      "CULTURAL AFFAIRS",
+      "000442.htm",
+      [
+         "Arts development",
+         "000391.htm",
+         [
+            "Arts funding",
+            "000393.htm"
+         ],
+         [
+            "Arts incentive schemes",
+            "000394.htm"
+         ],
+         [
+            "Arts promotion",
+            "000395.htm"
+         ]
+      ],
+      [
+         "Collection access",
+         "000427.htm",
+         [
+            "Descriptive standards",
+            "000461.htm"
+         ],
+         [
+            "Finding aids development",
+            "000486.htm"
+         ],
+         [
+            "Reference services",
+            "000550.htm"
+         ]
+      ],
+      [
+         "Collection management",
+         "000430.htm",
+         [
+            "Artefact export regulation",
+            "000390.htm"
+         ],
+         [
+            "Collection accessioning",
+            "000428.htm"
+         ],
+         [
+            "Collection acquisition",
+            "000429.htm"
+         ],
+         [
+            "Collection storage",
+            "000432.htm"
+         ],
+         [
+            "Preservation services",
+            "000532.htm"
+         ]
+      ],
+      [
+         "Collection promotion",
+         "000431.htm",
+         [
+            "Exhibition programs",
+            "000481.htm"
+         ],
+         [
+            "Publicity programs",
+            "000542.htm"
+         ]
+      ],
+      [
+         "Cultural awards and scholarships",
+         "000443.htm"
+      ],
+      [
+         "Cultural festivals",
+         "000445.htm"
+      ],
+      [
+         "Cultural gifts programs",
+         "000446.htm"
+      ],
+      [
+         "Multicultural heritage promotion",
+         "000518.htm",
+         [
+            "Multicultural festivals",
+            "000517.htm"
+         ],
+         [
+            "Multicultural services",
+            "000519.htm"
+         ]
+      ]
+   ],
+   [
+      "DEFENCE",
+      "000449.htm",
+      [
+         "Australian Defence Forces",
+         "000397.htm",
+         [
+            "Air Force",
+            "002266.htm"
+         ],
+         [
+            "Army",
+            "000388.htm"
+         ],
+         [
+            "Badges and insignia",
+            "000401.htm"
+         ],
+         [
+            "Cadets",
+            "000416.htm"
+         ],
+         [
+            "Defence force commands",
+            "000456.htm"
+         ],
+         [
+            "Military bands",
+            "000510.htm"
+         ],
+         [
+            "Navy",
+            "000524.htm"
+         ],
+         [
+            "Reserves",
+            "000553.htm"
+         ],
+         [
+            "Roulettes",
+            "000556.htm"
+         ]
+      ],
+      [
+         "Defence estate management",
+         "000454.htm"
+      ],
+      [
+         "Defence force careers",
+         "000455.htm",
+         [
+            "Defence career development",
+            "000450.htm"
+         ],
+         [
+            "Military employment services",
+            "000512.htm"
+         ]
+      ],
+      [
+         "Defence strategic development",
+         "000574.htm",
+         [
+            "Defence efficiency review",
+            "000453.htm"
+         ],
+         [
+            "Defence reform program",
+            "000460.htm"
+         ]
+      ],
+      [
+         "Defence strategic policy",
+         "000576.htm",
+         [
+            "Strategic decisions",
+            "000573.htm"
+         ],
+         [
+            "Strategic planning",
+            "000575.htm"
+         ]
+      ],
+      [
+         "Defence strategic support",
+         "000577.htm",
+         [
+            "Capital equipment programs",
+            "000419.htm"
+         ],
+         [
+            "Defence industry",
+            "000459.htm"
+         ],
+         [
+            "Defence science and technology",
+            "000905.htm"
+         ],
+         [
+            "Logistics",
+            "000506.htm"
+         ]
+      ],
+      [
+         "Emergency management",
+         "000473.htm",
+         [
+            "Civil community assistance",
+            "000426.htm"
+         ],
+         [
+            "Disaster support",
+            "000464.htm"
+         ]
+      ],
+      [
+         "Military law",
+         "001814.htm"
+      ],
+      [
+         "Military operations",
+         "000515.htm",
+         [
+            "Australian theatre of war",
+            "000398.htm"
+         ],
+         [
+            "Military exercises",
+            "000514.htm"
+         ],
+         [
+            "Special operations",
+            "000569.htm"
+         ],
+         [
+            "Warfare",
+            "000589.htm"
+         ]
+      ]
+   ],
+   [
+      "EDUCATION AND TRAINING",
+      "000467.htm",
+      [
+         "Arts education",
+         "000392.htm"
+      ],
+      [
+         "Community education",
+         "000434.htm",
+         [
+            "Adult education programs",
+            "000379.htm"
+         ],
+         [
+            "Adult migrant education",
+            "000380.htm"
+         ],
+         [
+            "Road safety awareness",
+            "000555.htm"
+         ]
+      ],
+      [
+         "Curriculum development",
+         "000447.htm"
+      ],
+      [
+         "Early childhood education",
+         "000466.htm"
+      ],
+      [
+         "Military education and training",
+         "000511.htm",
+         [
+            "Army reserve training",
+            "000389.htm"
+         ],
+         [
+            "Defence college training",
+            "000451.htm"
+         ]
+      ],
+      [
+         "Overseas skills recognition",
+         "000527.htm"
+      ],
+      [
+         "School education",
+         "000561.htm",
+         [
+            "Discipline programs",
+            "000465.htm"
+         ],
+         [
+            "School transport regulation",
+            "000562.htm"
+         ],
+         [
+            "Special needs programs",
+            "000568.htm"
+         ]
+      ],
+      [
+         "Tertiary education",
+         "000581.htm"
+      ],
+      [
+         "Vocational education",
+         "000588.htm",
+         [
+            "Apprenticeship programs",
+            "000386.htm"
+         ],
+         [
+            "Hospital teaching programs",
+            "000493.htm"
+         ],
+         [
+            "Trainee programs",
+            "000584.htm"
+         ],
+         [
+            "Workplace training",
+            "000595.htm"
+         ]
+      ]
+   ],
+   [
+      "EMPLOYMENT",
+      "000016.htm",
+      [
+         "Human resources development",
+         "000348.htm",
+         [
+            "Occupational health and safety",
+            "000355.htm"
+         ],
+         [
+            "Recruitment programs",
+            "000356.htm"
+         ],
+         [
+            "Termination processes",
+            "002103.htm"
+         ],
+         [
+            "Workers compensation schemes",
+            "000363.htm"
+         ],
+         [
+            "Workplace discrimination monitoring",
+            "000364.htm"
+         ],
+         [
+            "Workplace equity and justice programs",
+            "000365.htm"
+         ]
+      ],
+      [
+         "Industrial awards and conditions",
+         "000349.htm",
+         [
+            "Award conditions",
+            "000366.htm"
+         ],
+         [
+            "Remuneration review",
+            "000368.htm"
+         ]
+      ],
+      [
+         "Labour market programs",
+         "000347.htm",
+         [
+            "Employment services marketing",
+            "000351.htm"
+         ],
+         [
+            "Job placement programs",
+            "000352.htm"
+         ],
+         [
+            "Job vacancy data management",
+            "000353.htm"
+         ]
+      ],
+      [
+         "Workplace agreement processes",
+         "000350.htm",
+         [
+            "Agreement bargaining processes",
+            "002141.htm"
+         ],
+         [
+            "Agreement dispute mediation",
+            "000370.htm"
+         ],
+         [
+            "Certified employment conditions",
+            "000371.htm"
+         ],
+         [
+            "Employment advocacy services",
+            "000374.htm"
+         ]
+      ]
+   ],
+   [
+      "ENVIRONMENT",
+      "000478.htm",
+      [
+         "Built environment",
+         "000409.htm",
+         [
+            "Building acoustics",
+            "000405.htm"
+         ],
+         [
+            "Building preservation",
+            "000407.htm"
+         ]
+      ],
+      [
+         "Climate information services",
+         "000203.htm"
+      ],
+      [
+         "Conservation programs",
+         "000438.htm",
+         [
+            "Endangered species protection",
+            "000475.htm"
+         ],
+         [
+            "Landcare programs",
+            "000504.htm"
+         ],
+         [
+            "Soil preservation programs",
+            "000567.htm"
+         ]
+      ],
+      [
+         "Environmental impact assessment",
+         "000479.htm"
+      ],
+      [
+         "Historic relic protection",
+         "000492.htm"
+      ],
+      [
+         "Marine life protection programs",
+         "000507.htm"
+      ],
+      [
+         "Natural heritage protection",
+         "000522.htm",
+         [
+            "National park management",
+            "000520.htm"
+         ],
+         [
+            "Nature reserve management",
+            "000523.htm"
+         ],
+         [
+            "Wilderness area management",
+            "000593.htm"
+         ],
+         [
+            "Wildlife sanctuary management",
+            "000594.htm"
+         ]
+      ],
+      [
+         "Oceans governance",
+         "000525.htm"
+      ],
+      [
+         "Pollutant prevention programs",
+         "000529.htm"
+      ],
+      [
+         "World heritage listings",
+         "000596.htm"
+      ]
+   ],
+   [
+      "FINANCE MANAGEMENT",
+      "000001.htm",
+      [
+         "Commonwealth State funding",
+         "000017.htm"
+      ],
+      [
+         "Currency",
+         "000018.htm",
+         [
+            "Counterfeiting control",
+            "000027.htm"
+         ]
+      ],
+      [
+         "Financial investment",
+         "000021.htm",
+         [
+            "Investment scheme regulation",
+            "000031.htm"
+         ]
+      ],
+      [
+         "Financial system management",
+         "002302.htm",
+         [
+            "Financial system monitoring",
+            "002306.htm"
+         ],
+         [
+            "Payments management",
+            "002297.htm"
+         ]
+      ],
+      [
+         "Fiscal policy",
+         "000022.htm",
+         [
+            "Public borrowing",
+            "000032.htm"
+         ],
+         [
+            "Public debt",
+            "000033.htm"
+         ],
+         [
+            "Public expenditure",
+            "000034.htm"
+         ]
+      ],
+      [
+         "Foreign investment control",
+         "000030.htm"
+      ],
+      [
+         "International monetary regulation",
+         "000023.htm"
+      ],
+      [
+         "Monetary policy",
+         "000020.htm",
+         [
+            "Exchange rates",
+            "000028.htm"
+         ],
+         [
+            "Inflation",
+            "000029.htm"
+         ],
+         [
+            "Interest rates",
+            "002295.htm"
+         ]
+      ],
+      [
+         "Resource management",
+         "000024.htm",
+         [
+            "Contract management",
+            "000037.htm"
+         ],
+         [
+            "Financial administration",
+            "000035.htm"
+         ],
+         [
+            "Financial budgeting",
+            "000036.htm"
+         ]
+      ],
+      [
+         "Retirement income",
+         "000025.htm",
+         [
+            "Asset assessment",
+            "000038.htm"
+         ],
+         [
+            "Retirement saving",
+            "000039.htm"
+         ],
+         [
+            "Superannuation regulation",
+            "000040.htm"
+         ]
+      ],
+      [
+         "Statistical analysis",
+         "000019.htm"
+      ],
+      [
+         "Taxation",
+         "000026.htm",
+         [
+            "Income assessment",
+            "000041.htm"
+         ],
+         [
+            "Revenue raising",
+            "000042.htm"
+         ],
+         [
+            "Taxation compliance",
+            "000043.htm"
+         ]
+      ]
+   ],
+   [
+      "GOVERNANCE",
+      "000002.htm",
+      [
+         "Civic celebrations",
+         "000046.htm"
+      ],
+      [
+         "Constitutional matters",
+         "000048.htm",
+         [
+            "Constitutional conventions",
+            "000061.htm"
+         ],
+         [
+            "Constitutional referenda",
+            "000062.htm"
+         ]
+      ],
+      [
+         "Electoral matters",
+         "000049.htm",
+         [
+            "Declaration of interests",
+            "000063.htm"
+         ],
+         [
+            "Election campaigning",
+            "000064.htm"
+         ],
+         [
+            "Electoral boundary assessment",
+            "000065.htm"
+         ]
+      ],
+      [
+         "Honours and awards programs",
+         "000050.htm"
+      ],
+      [
+         "Intergovernmental relations",
+         "000052.htm",
+         [
+            "Cross-border cooperation",
+            "000067.htm"
+         ],
+         [
+            "Intergovernment policy dissemination",
+            "000069.htm"
+         ]
+      ],
+      [
+         "Legislative drafting",
+         "000053.htm",
+         [
+            "Draft Bill amendment process",
+            "000070.htm"
+         ],
+         [
+            "Legislation review",
+            "000071.htm"
+         ],
+         [
+            "Preparation of legislative regulations",
+            "000072.htm"
+         ]
+      ],
+      [
+         "Official protocol",
+         "000054.htm",
+         [
+            "Ceremonial events and representation",
+            "000073.htm"
+         ],
+         [
+            "Head of Government protocol",
+            "000074.htm"
+         ],
+         [
+            "Official establishment management",
+            "000075.htm"
+         ],
+         [
+            "Official hospitality",
+            "000076.htm"
+         ],
+         [
+            "Official visits",
+            "000077.htm"
+         ]
+      ],
+      [
+         "Parliamentary chamber support",
+         "000045.htm",
+         [
+            "Hansard services",
+            "000058.htm"
+         ],
+         [
+            "Parliamentary papers",
+            "000059.htm"
+         ],
+         [
+            "Tabling of official documents",
+            "000060.htm"
+         ]
+      ],
+      [
+         "Parliamentary committee and member support",
+         "000047.htm"
+      ],
+      [
+         "Population census",
+         "000044.htm",
+         [
+            "Demographic surveys",
+            "000055.htm"
+         ],
+         [
+            "Household census",
+            "000056.htm"
+         ],
+         [
+            "Population distribution analysis",
+            "000057.htm"
+         ]
+      ],
+      [
+         "Public administration",
+         "002290.htm",
+         [
+            "Government auditing",
+            "002291.htm"
+         ],
+         [
+            "Public service",
+            "002292.htm"
+         ],
+         [
+            "Territories administration",
+            "002293.htm"
+         ]
+      ],
+      [
+         "Statistics",
+         "002289.htm"
+      ]
+   ],
+   [
+      "HEALTH CARE",
+      "000003.htm",
+      [
+         "Community health services",
+         "000078.htm",
+         [
+            "Clinical health services",
+            "000087.htm"
+         ],
+         [
+            "Health promotion",
+            "000089.htm"
+         ],
+         [
+            "Primary health care",
+            "000090.htm"
+         ]
+      ],
+      [
+         "Health insurance schemes",
+         "000079.htm"
+      ],
+      [
+         "Health protocol administration",
+         "000080.htm",
+         [
+            "Drugs and poisons regulation",
+            "000091.htm"
+         ],
+         [
+            "Food hygiene regulation",
+            "000092.htm"
+         ],
+         [
+            "Practitioner discipline",
+            "000093.htm"
+         ],
+         [
+            "Practitioner registration",
+            "000095.htm"
+         ]
+      ],
+      [
+         "Hospital services",
+         "000081.htm",
+         [
+            "Hospital administration",
+            "000096.htm"
+         ],
+         [
+            "Patient care",
+            "000097.htm"
+         ],
+         [
+            "Pharmaceutical and drug support",
+            "000098.htm"
+         ]
+      ],
+      [
+         "Medical research",
+         "000083.htm",
+         [
+            "Ethical compliance",
+            "000099.htm"
+         ],
+         [
+            "Medical aids regulation",
+            "000100.htm"
+         ],
+         [
+            "Medical research funding",
+            "000101.htm"
+         ],
+         [
+            "National referral laboratory services",
+            "000102.htm"
+         ],
+         [
+            "Population-based research",
+            "000103.htm"
+         ]
+      ],
+      [
+         "Public health services",
+         "000084.htm",
+         [
+            "Epidemiology",
+            "000104.htm"
+         ],
+         [
+            "Health disaster preparedness",
+            "000106.htm"
+         ],
+         [
+            "Health hazard prevention",
+            "000105.htm"
+         ],
+         [
+            "Medical quarantine services",
+            "000108.htm"
+         ],
+         [
+            "Notifiable disease management",
+            "000109.htm"
+         ]
+      ],
+      [
+         "Special needs services",
+         "000085.htm",
+         [
+            "Dental health services",
+            "000111.htm"
+         ],
+         [
+            "Independent living services",
+            "000112.htm"
+         ],
+         [
+            "Mental health services",
+            "000113.htm"
+         ],
+         [
+            "Residential services",
+            "000114.htm"
+         ]
+      ],
+      [
+         "Veterans\" health services",
+         "000086.htm"
+      ]
+   ],
+   [
+      "IMMIGRATION",
+      "000004.htm",
+      [
+         "Citizenship",
+         "000115.htm",
+         [
+            "Naturalisation assessment",
+            "000121.htm"
+         ],
+         [
+            "Presentation arrangements",
+            "000122.htm"
+         ]
+      ],
+      [
+         "Deportation",
+         "000116.htm"
+      ],
+      [
+         "Detention programs",
+         "000117.htm"
+      ],
+      [
+         "Migrant services",
+         "000118.htm",
+         [
+            "Interpreter services",
+            "000123.htm"
+         ],
+         [
+            "Migrant accommodation services",
+            "000125.htm"
+         ],
+         [
+            "Migrant settlement programs",
+            "000126.htm"
+         ]
+      ],
+      [
+         "Refugee services",
+         "000119.htm"
+      ],
+      [
+         "Travel authorisation",
+         "000120.htm",
+         [
+            "Permanent entry arrangements",
+            "000127.htm"
+         ],
+         [
+            "Temporary entry arrangements",
+            "000128.htm"
+         ]
+      ]
+   ],
+   [
+      "INDIGENOUS AFFAIRS",
+      "002285.htm",
+      [
+         "Indigenous cultural heritage",
+         "000495.htm",
+         [
+            "Cultural artefact repatriation",
+            "001772.htm"
+         ]
+      ],
+      [
+         "Indigenous enterprise development",
+         "000496.htm"
+      ],
+      [
+         "Indigenous health services",
+         "000082.htm"
+      ],
+      [
+         "Indigenous heritage conservation",
+         "000497.htm"
+      ],
+      [
+         "Indigenous reconciliation",
+         "000051.htm"
+      ],
+      [
+         "Indigenous welfare programs",
+         "000498.htm"
+      ]
+   ],
+   [
+      "INTERNATIONAL RELATIONS",
+      "000005.htm",
+      [
+         "Consular services",
+         "000129.htm"
+      ],
+      [
+         "Defence liaison",
+         "000132.htm",
+         [
+            "Defence attach�s",
+            "000140.htm"
+         ],
+         [
+            "Defence cooperation programs",
+            "000141.htm"
+         ],
+         [
+            "Defence personnel exchanges",
+            "000142.htm"
+         ],
+         [
+            "Military advisors",
+            "000143.htm"
+         ]
+      ],
+      [
+         "Diplomatic missions",
+         "000130.htm"
+      ],
+      [
+         "International affairs",
+         "000131.htm",
+         [
+            "Disarmament and arms control",
+            "000137.htm"
+         ],
+         [
+            "Nuclear safeguards",
+            "000139.htm"
+         ]
+      ],
+      [
+         "International treaties",
+         "000133.htm",
+         [
+            "Treaty administration",
+            "001384.htm"
+         ]
+      ],
+      [
+         "Overseas aid programs",
+         "000134.htm",
+         [
+            "Development assistance programs",
+            "000146.htm"
+         ],
+         [
+            "Overseas student scholarship programs",
+            "000147.htm"
+         ]
+      ],
+      [
+         "Overseas promotion",
+         "000135.htm"
+      ],
+      [
+         "Passport services",
+         "000136.htm"
+      ]
+   ],
+   [
+      "JUSTICE ADMINISTRATION",
+      "000006.htm",
+      [
+         "Administrative law",
+         "000149.htm",
+         [
+            "Administrative decision appeal",
+            "000163.htm"
+         ],
+         [
+            "Administrative decision review",
+            "000164.htm"
+         ],
+         [
+            "Censorship standards",
+            "000165.htm"
+         ],
+         [
+            "Copyright regulation",
+            "000166.htm"
+         ],
+         [
+            "Recordkeeping standards",
+            "000167.htm"
+         ]
+      ],
+      [
+         "Associations and corporate law",
+         "000150.htm",
+         [
+            "Bankruptcy proceedings",
+            "000168.htm"
+         ],
+         [
+            "Merger regulation",
+            "000169.htm"
+         ]
+      ],
+      [
+         "Civil law",
+         "000151.htm",
+         [
+            "Civil registration",
+            "000170.htm"
+         ],
+         [
+            "Conveyancing",
+            "000171.htm"
+         ],
+         [
+            "Dispute mediation programs",
+            "000174.htm"
+         ],
+         [
+            "Family law proceedings",
+            "000172.htm"
+         ],
+         [
+            "Probate applications",
+            "000173.htm"
+         ]
+      ],
+      [
+         "Commissions of inquiry",
+         "000152.htm"
+      ],
+      [
+         "Coronial law",
+         "000153.htm"
+      ],
+      [
+         "Court reporting",
+         "000154.htm"
+      ],
+      [
+         "Criminal law",
+         "000155.htm"
+      ],
+      [
+         "Human rights obligations",
+         "000156.htm"
+      ],
+      [
+         "Juvenile justice",
+         "000157.htm"
+      ],
+      [
+         "Legal aid services",
+         "000158.htm"
+      ],
+      [
+         "Local laws and ordinances",
+         "000159.htm"
+      ],
+      [
+         "Native title claims",
+         "000160.htm",
+         [
+            "Native title mediation programs",
+            "000180.htm"
+         ],
+         [
+            "Native title settlement negotiations",
+            "000181.htm"
+         ]
+      ],
+      [
+         "Privacy guideline monitoring",
+         "000161.htm"
+      ],
+      [
+         "Prosecution services",
+         "000162.htm"
+      ]
+   ],
+   [
+      "MARITIME SERVICES",
+      "000007.htm",
+      [
+         "Cargo control",
+         "000198.htm"
+      ],
+      [
+         "Harbour management",
+         "000183.htm"
+      ],
+      [
+         "Marina management",
+         "000184.htm"
+      ],
+      [
+         "Navigation",
+         "000185.htm",
+         [
+            "Charting sea lanes",
+            "000191.htm"
+         ],
+         [
+            "Light station maintenance",
+            "000192.htm"
+         ],
+         [
+            "Navigation systems development",
+            "000193.htm"
+         ]
+      ],
+      [
+         "Pilotage management",
+         "000182.htm"
+      ],
+      [
+         "Port regulation",
+         "001471.htm"
+      ],
+      [
+         "Sea passengers",
+         "001487.htm"
+      ],
+      [
+         "Search and rescue",
+         "000187.htm",
+         [
+            "Rescue coordination",
+            "000194.htm"
+         ],
+         [
+            "Search technology development",
+            "000195.htm"
+         ]
+      ],
+      [
+         "Ship personnel",
+         "000188.htm",
+         [
+            "Personnel safety standards",
+            "000196.htm"
+         ],
+         [
+            "Pilot licensing",
+            "000197.htm"
+         ]
+      ],
+      [
+         "Ship safety",
+         "000189.htm",
+         [
+            "Seaworthiness",
+            "000201.htm"
+         ],
+         [
+            "Ship commissioning",
+            "000199.htm"
+         ],
+         [
+            "Ship inspection",
+            "000200.htm"
+         ]
+      ]
+   ],
+   [
+      "NATURAL RESOURCES",
+      "000009.htm",
+      [
+         "Crown land administration",
+         "000218.htm"
+      ],
+      [
+         "Energy resources",
+         "001451.htm",
+         [
+            "Fossil fuel management",
+            "000226.htm"
+         ],
+         [
+            "Renewable energy development",
+            "000227.htm"
+         ]
+      ],
+      [
+         "Land use planning",
+         "000220.htm",
+         [
+            "Land use zoning",
+            "001429.htm"
+         ]
+      ],
+      [
+         "Land valuation",
+         "000222.htm"
+      ],
+      [
+         "Mineral resources",
+         "000223.htm",
+         [
+            "Land rehabilitation programs",
+            "000231.htm"
+         ],
+         [
+            "Mining regulations",
+            "000232.htm"
+         ]
+      ],
+      [
+         "Pollution emission control",
+         "000224.htm"
+      ],
+      [
+         "Water resources",
+         "000225.htm",
+         [
+            "Water conservation plans",
+            "000233.htm"
+         ],
+         [
+            "Water quality monitoring",
+            "000234.htm"
+         ],
+         [
+            "Water usage management",
+            "000235.htm"
+         ],
+         [
+            "Waterway management",
+            "000236.htm"
+         ]
+      ]
+   ],
+   [
+      "PRIMARY INDUSTRIES",
+      "000008.htm",
+      [
+         "Chemical and pesticide regulation",
+         "000202.htm"
+      ],
+      [
+         "Marine and rural regulation",
+         "000204.htm",
+         [
+            "Agricultural industry",
+            "000208.htm"
+         ],
+         [
+            "Fisheries industry",
+            "000209.htm"
+         ],
+         [
+            "Food quality assurance",
+            "000213.htm"
+         ],
+         [
+            "Forestry industry",
+            "000210.htm"
+         ]
+      ],
+      [
+         "Marine and rural support",
+         "000205.htm",
+         [
+            "Aquaculture industry",
+            "000212.htm"
+         ],
+         [
+            "Horticultural industry",
+            "000214.htm"
+         ],
+         [
+            "Pastoral industry",
+            "000215.htm"
+         ],
+         [
+            "Silvicultural industry",
+            "000216.htm"
+         ],
+         [
+            "Viticultural industry",
+            "000217.htm"
+         ]
+      ],
+      [
+         "Quarantine",
+         "000211.htm"
+      ],
+      [
+         "Rural field day promotion",
+         "000206.htm"
+      ],
+      [
+         "Rural partnership programs",
+         "000207.htm"
+      ]
+   ],
+   [
+      "SCIENCE",
+      "000010.htm",
+      [
+         "Agricultural sciences",
+         "000237.htm"
+      ],
+      [
+         "Animal and veterinary sciences",
+         "000238.htm"
+      ],
+      [
+         "Applied sciences",
+         "000239.htm",
+         [
+            "Engineering and technology sciences",
+            "000246.htm"
+         ],
+         [
+            "Weights and measures standards",
+            "000247.htm"
+         ]
+      ],
+      [
+         "Biological sciences",
+         "000240.htm",
+         [
+            "Biochemistry",
+            "000248.htm"
+         ],
+         [
+            "Biodiversity preservation",
+            "000249.htm"
+         ],
+         [
+            "Biotechnology development",
+            "000250.htm"
+         ],
+         [
+            "Botany",
+            "000251.htm"
+         ],
+         [
+            "Entomology",
+            "000252.htm"
+         ],
+         [
+            "Genetic engineering",
+            "000253.htm"
+         ],
+         [
+            "Physiology",
+            "000254.htm"
+         ]
+      ],
+      [
+         "Earth sciences",
+         "000241.htm",
+         [
+            "Atmospheric sciences",
+            "000255.htm"
+         ],
+         [
+            "Hydrology",
+            "000256.htm"
+         ],
+         [
+            "Mineral exploration",
+            "000257.htm"
+         ],
+         [
+            "Oceanography",
+            "000258.htm"
+         ],
+         [
+            "Seismology",
+            "000259.htm"
+         ]
+      ],
+      [
+         "Mathematical sciences",
+         "000242.htm"
+      ],
+      [
+         "Medical and health sciences",
+         "001229.htm"
+      ],
+      [
+         "Physical sciences",
+         "000244.htm",
+         [
+            "Astronomical sciences",
+            "000260.htm"
+         ],
+         [
+            "Atomic and molecular sciences",
+            "000261.htm"
+         ],
+         [
+            "Nuclear sciences",
+            "000262.htm"
+         ]
+      ],
+      [
+         "Spatial information research",
+         "000245.htm"
+      ]
+   ],
+   [
+      "SECURITY",
+      "000011.htm",
+      [
+         "Corrective services",
+         "000263.htm",
+         [
+            "Community based corrections",
+            "000270.htm"
+         ],
+         [
+            "Detention centre management",
+            "000271.htm"
+         ]
+      ],
+      [
+         "External security",
+         "000264.htm",
+         [
+            "Peacekeeping forces",
+            "000273.htm"
+         ]
+      ],
+      [
+         "Information security",
+         "000265.htm"
+      ],
+      [
+         "Intelligence",
+         "000266.htm",
+         [
+            "Forensic analysis",
+            "000275.htm"
+         ],
+         [
+            "Intelligence liaison",
+            "001159.htm"
+         ],
+         [
+            "Intelligence support",
+            "000277.htm"
+         ]
+      ],
+      [
+         "Law enforcement",
+         "000267.htm",
+         [
+            "Community policing",
+            "000278.htm"
+         ],
+         [
+            "Criminology",
+            "000279.htm"
+         ],
+         [
+            "Police administration",
+            "000280.htm"
+         ],
+         [
+            "Protective services",
+            "000281.htm"
+         ]
+      ],
+      [
+         "National security",
+         "001548.htm",
+         [
+            "Coastal surveillance",
+            "000269.htm"
+         ]
+      ]
+   ],
+   [
+      "SPORT AND RECREATION",
+      "000012.htm",
+      [
+         "Caravan and camping services",
+         "000284.htm"
+      ],
+      [
+         "Community recreational programs",
+         "000285.htm",
+         [
+            "Gambling support services",
+            "000290.htm"
+         ],
+         [
+            "Public fitness promotion",
+            "000291.htm"
+         ],
+         [
+            "Social club support",
+            "000292.htm"
+         ],
+         [
+            "Volunteer support programs",
+            "000293.htm"
+         ]
+      ],
+      [
+         "Gaming industry regulation",
+         "000286.htm"
+      ],
+      [
+         "Park and reserve services",
+         "000289.htm"
+      ],
+      [
+         "Sport and fitness development",
+         "000287.htm",
+         [
+            "Athlete scholarship programs",
+            "000295.htm"
+         ],
+         [
+            "Fundraising and donation schemes",
+            "000296.htm"
+         ],
+         [
+            "Games administration",
+            "000297.htm"
+         ],
+         [
+            "Games promotion",
+            "000298.htm"
+         ],
+         [
+            "Sporting grants administration",
+            "000299.htm"
+         ]
+      ],
+      [
+         "Sports drugs monitoring",
+         "000288.htm",
+         [
+            "Doping detection research",
+            "000300.htm"
+         ]
+      ]
+   ],
+   [
+      "TOURISM",
+      "000013.htm",
+      [
+         "Tourism industry development",
+         "000301.htm"
+      ],
+      [
+         "Tourist event promotion",
+         "000302.htm",
+         [
+            "Advertising campaigns",
+            "000305.htm"
+         ]
+      ],
+      [
+         "Travel missions",
+         "000303.htm"
+      ]
+   ],
+   [
+      "TRADE",
+      "000014.htm",
+      [
+         "Export regulation",
+         "000311.htm",
+         [
+            "Export promotion",
+            "000320.htm"
+         ],
+         [
+            "Prohibited export control",
+            "000321.htm"
+         ]
+      ],
+      [
+         "Import regulation",
+         "000312.htm",
+         [
+            "Prohibited import control",
+            "000323.htm"
+         ],
+         [
+            "Tariff regulation",
+            "000322.htm"
+         ]
+      ],
+      [
+         "Intellectual property management",
+         "000910.htm",
+         [
+            "Copyright registration",
+            "000308.htm"
+         ],
+         [
+            "Design registration",
+            "000310.htm"
+         ],
+         [
+            "Patent registration",
+            "000315.htm"
+         ],
+         [
+            "Trademark registration",
+            "000318.htm"
+         ]
+      ],
+      [
+         "International trade agreements",
+         "000313.htm"
+      ],
+      [
+         "Interstate trade agreements",
+         "000314.htm"
+      ],
+      [
+         "Trade development programs",
+         "000316.htm"
+      ],
+      [
+         "Trade expositions",
+         "000317.htm"
+      ]
+   ],
+   [
+      "TRANSPORT",
+      "000015.htm",
+      [
+         "Air transport",
+         "000324.htm",
+         [
+            "Air transport safety",
+            "000332.htm"
+         ],
+         [
+            "Aircraft standards",
+            "000330.htm"
+         ],
+         [
+            "Airport services",
+            "000331.htm"
+         ]
+      ],
+      [
+         "Freight movement regulation",
+         "000325.htm"
+      ],
+      [
+         "Passenger services",
+         "000326.htm"
+      ],
+      [
+         "Rail transport",
+         "000327.htm",
+         [
+            "Rail harmonisation standards",
+            "000333.htm"
+         ],
+         [
+            "Rail land acquisition regulation",
+            "000336.htm"
+         ],
+         [
+            "Rail transport safety",
+            "000337.htm"
+         ],
+         [
+            "Railway maintenance",
+            "000338.htm"
+         ],
+         [
+            "Rolling stock regulation",
+            "000339.htm"
+         ]
+      ],
+      [
+         "Road transport",
+         "000328.htm",
+         [
+            "Driving licences administration",
+            "000340.htm"
+         ],
+         [
+            "Road surface maintenance",
+            "000341.htm"
+         ],
+         [
+            "Road traffic regulation",
+            "000342.htm"
+         ],
+         [
+            "Road transport safety",
+            "000343.htm"
+         ],
+         [
+            "Vehicle registration",
+            "000344.htm"
+         ],
+         [
+            "Vehicle standards",
+            "000345.htm"
+         ]
+      ],
+      [
+         "Transport infrastructure development",
+         "000329.htm"
+      ]
+   ]
+]');
+class ArrayUtil
+{
+    public static function FilterRecursive(Array $source, $fn)
+    {
+        $result = array();
+        foreach ($source as $key => $value)
+        {
+            if (is_array($value))
+            {
+                $result[$key] = self::FilterRecursive($value, $fn);
+                continue;
+            }
+            if ($fn($key, $value))
+            {
+                $result[$key] = $value; // KEEP
+                continue;
+            }
+        }
+        return $result;
+    }
+        public static function DoRecursive(Array $source)
+    {
+        $result = array();
+        foreach ($source as $key => $value)
+        {
+            if (is_array($value))
+            {
+                $result["children"][] = self::DoRecursive($value);
+           
+            } else {
+                $result["name"] =  $value; // KEEP
+                
+            }
+        }
+        return $result;
+    }
+}
+
+// EXAMPLE ANONYMOUS CALLBACK FUNCTION
+$fn = function ($key, $value)
+{
+    if (strpos($value, '.htm') !== FALSE)
+    {
+        return FALSE; // DROP
+    }
+    return TRUE; // KEEP
+};
+
+
+$postFilter = ArrayUtil::FilterRecursive($raw, $fn);
+$postWrangle = ArrayUtil::DoRecursive($postFilter);
+
+echo json_encode($postWrangle);
+    ?>
+;
+ // Create a svg canvas
+            var vis = d3.select("#viz").append("svg:svg")
+            .attr("width", 1400)
+            .attr("height", 1400)
+            .append("svg:g")
+            .attr("transform", "translate(450, 450)");
+
+            // Create a cluster "canvas"
+            var cluster = d3.layout.cluster()
+            .size([500,500]);
+
+            var diagonal = d3.svg.diagonal.radial()
+            .projection(function(d) { return [d.y, d.x / 180 * Math.PI]; });
+
+            var nodes = cluster.nodes(treeData);
+            var links = cluster.links(nodes);
+
+            var link = vis.selectAll("pathlink")
+            .data(links)
+            .enter().append("svg:path")
+            .attr("class", "link")
+            .attr("d", diagonal)
+
+            var node = vis.selectAll("g.node")
+            .data(nodes)
+            .enter().append("svg:g")
+            .attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
+
+            // Add the dot at every node
+            node.append("svg:circle")
+            .attr("r", 3.5);
+
+            node.append("svg:text")
+            .attr("dx", function(d) { return d.x < 180 ? 8 : -8; })
+            .attr("dy", ".31em")
+            .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
+            .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; })
+            .text(function(d) { return d.name; });
+            
+            // alt
+            
+function visit(parent, visitFn, childrenFn)
+{
+    if (!parent) return;
+
+    visitFn(parent);
+
+    var children = childrenFn(parent);
+    if (children) {
+        var count = children.length;
+        for (var i = 0; i < count; i++) {
+            visit(children[i], visitFn, childrenFn);
+        }
+    }
+}
+
+function buildTree(containerName, customOptions)
+{
+    // build the options object
+    var options = $.extend({
+        nodeRadius: 5, fontSize: 12
+    }, customOptions);
+
+    
+    // Calculate total nodes, max label length
+    var totalNodes = 0;
+    var maxLabelLength = 0;
+    visit(treeData, function(d)
+    {
+        totalNodes++;
+        maxLabelLength = Math.max(d.name.length, maxLabelLength);
+    }, function(d)
+    {
+        return d.children && d.children.length > 0 ? d.children : null;
+    });
+
+    // size of the diagram
+    var size = { width:$(containerName).outerWidth(), height: totalNodes * 15};
+
+    var tree = d3.layout.tree()
+        .sort(null)
+        .size([size.height, size.width - maxLabelLength*options.fontSize])
+        .children(function(d)
+        {
+            return (!d.children || d.children.length === 0) ? null : d.children;
+        });
+
+    var nodes = tree.nodes(treeData);
+    var links = tree.links(nodes);
+
+    
+    /*
+        <svg>
+            <g class="container" />
+        </svg>
+     */
+    var layoutRoot = d3.select(containerName)
+        .append("svg:svg").attr("width", size.width).attr("height", size.height)
+        .append("svg:g")
+        .attr("class", "container")
+        .attr("transform", "translate(" + maxLabelLength + ",0)");
+
+
+    // Edges between nodes as a <path class="link" />
+    var link = d3.svg.diagonal()
+        .projection(function(d)
+        {
+            return [d.y, d.x];
+        });
+
+
+    layoutRoot.selectAll("path.link")
+        .data(links)
+        .enter()
+        .append("svg:path")
+        .attr("class", "link")
+        .attr("d", link);
+
+
+    /*
+        Nodes as
+        <g class="node">
+            <circle class="node-dot" />
+            <text />
+        </g>
+     */
+    var nodeGroup = layoutRoot.selectAll("g.node")
+        .data(nodes)
+        .enter()
+        .append("svg:g")
+        .attr("class", "node")
+        .attr("transform", function(d)
+        {
+            return "translate(" + d.y + "," + d.x + ")";
+        });
+
+    nodeGroup.append("svg:circle")
+        .attr("class", "node-dot")
+        .attr("r", options.nodeRadius);
+
+    nodeGroup.append("svg:text")
+        .attr("text-anchor", function(d)
+        {
+            return d.children ? "end" : "start";
+        })
+        .attr("dx", function(d)
+        {
+            var gap = 2 * options.nodeRadius;
+            return d.children ? -gap : gap;
+        })
+        .attr("dy", 3)
+        .text(function(d)
+        {
+            return d.name;
+        });
+
+}
+    $(function(){
+        buildTree("#tree-container");
+    });
+</script>
+
+
+</body>
+</html>

 Binary files /dev/null and b/admin/naa-agift.7z differ
--- /dev/null
+++ b/admin/naa-agift.json
@@ -1,1 +1,2232 @@
-
+[
+   "Home",
+   "index.htm",
+   [
+      "BUSINESS SUPPORT AND REGULATION",
+      "000411.htm",
+      [
+         "Association registration",
+         "000396.htm"
+      ],
+      [
+         "Business process auditing",
+         "000413.htm"
+      ],
+      [
+         "Business registration and licensing",
+         "000414.htm"
+      ],
+      [
+         "Business sponsorship",
+         "001371.htm"
+      ],
+      [
+         "Consumer protection",
+         "000439.htm"
+      ],
+      [
+         "Fair trading compliance",
+         "000482.htm",
+         [
+            "Prices surveillance",
+            "000533.htm"
+         ],
+         [
+            "Product safety",
+            "000534.htm"
+         ],
+         [
+            "Trade practices compliance",
+            "000583.htm"
+         ]
+      ],
+      [
+         "Financial institutions regulation",
+         "000485.htm"
+      ],
+      [
+         "Government procurement regulation",
+         "000491.htm"
+      ],
+      [
+         "Industry assistance schemes",
+         "000499.htm"
+      ],
+      [
+         "Industry development",
+         "000500.htm"
+      ],
+      [
+         "Insurance regulation",
+         "000501.htm",
+         [
+            "General insurance",
+            "000489.htm"
+         ],
+         [
+            "Life insurance",
+            "000505.htm"
+         ]
+      ],
+      [
+         "Professional accreditation",
+         "000535.htm"
+      ],
+      [
+         "Small business services",
+         "000565.htm",
+         [
+            "Small business advocacy",
+            "000563.htm"
+         ],
+         [
+            "Small business development",
+            "000564.htm"
+         ]
+      ],
+      [
+         "Stock market regulation",
+         "000572.htm"
+      ]
+   ],
+   [
+      "CIVIC INFRASTRUCTURE",
+      "000424.htm",
+      [
+         "Civic management",
+         "000425.htm",
+         [
+            "Architectural services",
+            "000387.htm"
+         ],
+         [
+            "Building approval services",
+            "000406.htm"
+         ],
+         [
+            "Building regulations and standards",
+            "000408.htm"
+         ],
+         [
+            "Engineering services",
+            "000477.htm"
+         ],
+         [
+            "Town planning",
+            "000582.htm"
+         ]
+      ],
+      [
+         "Energy supply",
+         "000476.htm"
+      ],
+      [
+         "Integrated services planning",
+         "000503.htm"
+      ],
+      [
+         "Public housing",
+         "000536.htm",
+         [
+            "Public housing construction",
+            "000537.htm"
+         ],
+         [
+            "Public housing design",
+            "000538.htm"
+         ],
+         [
+            "Public housing maintenance",
+            "000540.htm"
+         ]
+      ],
+      [
+         "Public land management",
+         "000541.htm",
+         [
+            "Burial ground management",
+            "000410.htm"
+         ],
+         [
+            "Cultural centre management",
+            "000444.htm"
+         ],
+         [
+            "Garden management",
+            "000488.htm"
+         ],
+         [
+            "Memorial maintenance",
+            "000509.htm"
+         ],
+         [
+            "Recreational park management",
+            "000549.htm"
+         ],
+         [
+            "Sporting facilities management",
+            "000571.htm"
+         ]
+      ],
+      [
+         "Regional development",
+         "000552.htm"
+      ],
+      [
+         "Transport network maintenance",
+         "000586.htm"
+      ],
+      [
+         "Waste management",
+         "001349.htm"
+      ]
+   ],
+   [
+      "COMMUNICATIONS",
+      "000433.htm",
+      [
+         "Advertising standards",
+         "000381.htm"
+      ],
+      [
+         "Broadcasting",
+         "000403.htm",
+         [
+            "Broadcasting standards",
+            "000404.htm"
+         ],
+         [
+            "Radio broadcasting",
+            "000546.htm"
+         ],
+         [
+            "Television broadcasting",
+            "000580.htm"
+         ]
+      ],
+      [
+         "Call centre administration",
+         "000417.htm"
+      ],
+      [
+         "Electronic commerce",
+         "000468.htm",
+         [
+            "Authentication",
+            "000399.htm"
+         ],
+         [
+            "Online transaction standards",
+            "000526.htm"
+         ]
+      ],
+      [
+         "Government media",
+         "000490.htm"
+      ],
+      [
+         "Information management standards",
+         "000283.htm",
+         [
+            "Data management",
+            "000448.htm"
+         ],
+         [
+            "Information dissemination",
+            "000502.htm"
+         ],
+         [
+            "Information technology standards",
+            "000282.htm"
+         ]
+      ],
+      [
+         "Media ownership regulation",
+         "000508.htm"
+      ],
+      [
+         "Postal services",
+         "000530.htm",
+         [
+            "Courier services",
+            "000441.htm"
+         ],
+         [
+            "Electronic postal services",
+            "000469.htm"
+         ],
+         [
+            "Retail postal services",
+            "000554.htm"
+         ]
+      ],
+      [
+         "Publishing",
+         "000543.htm",
+         [
+            "Electronic publishing",
+            "000470.htm"
+         ],
+         [
+            "Publishing standards",
+            "000544.htm"
+         ],
+         [
+            "Website development",
+            "000591.htm"
+         ]
+      ],
+      [
+         "Radio communication",
+         "000547.htm",
+         [
+            "Apparatus licensing",
+            "000385.htm"
+         ],
+         [
+            "Spectrum management",
+            "000570.htm"
+         ]
+      ],
+      [
+         "Satellite communication",
+         "000560.htm"
+      ],
+      [
+         "Telecommunications",
+         "000578.htm",
+         [
+            "Carriage service providers",
+            "000420.htm"
+         ],
+         [
+            "Carrier licensing",
+            "000421.htm"
+         ],
+         [
+            "Equipment licensing",
+            "000480.htm"
+         ],
+         [
+            "Mobile telephone services",
+            "000516.htm"
+         ],
+         [
+            "Telephone services",
+            "000579.htm"
+         ]
+      ]
+   ],
+   [
+      "COMMUNITY SERVICES",
+      "000435.htm",
+      [
+         "Accommodation services",
+         "000377.htm",
+         [
+            "Defence housing",
+            "000458.htm"
+         ],
+         [
+            "Emergency accommodation",
+            "000471.htm"
+         ],
+         [
+            "Public housing entitlements",
+            "000539.htm"
+         ],
+         [
+            "Refuge support",
+            "000551.htm"
+         ]
+      ],
+      [
+         "Community support",
+         "000436.htm",
+         [
+            "Adoption services",
+            "000378.htm"
+         ],
+         [
+            "Aged care services",
+            "000382.htm"
+         ],
+         [
+            "Child and youth support",
+            "000422.htm"
+         ],
+         [
+            "Child-care services",
+            "000423.htm"
+         ],
+         [
+            "Defence community programs",
+            "000452.htm"
+         ],
+         [
+            "Family reunion programs",
+            "000483.htm"
+         ],
+         [
+            "Veterans\" entitlements",
+            "000587.htm"
+         ]
+      ],
+      [
+         "Counselling services",
+         "000440.htm"
+      ],
+      [
+         "Emergency services",
+         "000474.htm",
+         [
+            "Ambulance services",
+            "000384.htm"
+         ],
+         [
+            "Emergency funding",
+            "000472.htm"
+         ],
+         [
+            "Firefighting services",
+            "000487.htm"
+         ]
+      ],
+      [
+         "Financial assistance",
+         "000484.htm",
+         [
+            "Benefits",
+            "000402.htm"
+         ],
+         [
+            "Income support schemes",
+            "000494.htm"
+         ]
+      ],
+      [
+         "Natural disasters",
+         "000521.htm",
+         [
+            "Disaster recovery",
+            "000462.htm"
+         ],
+         [
+            "Disaster relief",
+            "000463.htm"
+         ]
+      ],
+      [
+         "Rural community development",
+         "000557.htm"
+      ],
+      [
+         "Social justice and equity",
+         "000566.htm"
+      ],
+      [
+         "Transport access schemes",
+         "000901.htm"
+      ]
+   ],
+   [
+      "CULTURAL AFFAIRS",
+      "000442.htm",
+      [
+         "Arts development",
+         "000391.htm",
+         [
+            "Arts funding",
+            "000393.htm"
+         ],
+         [
+            "Arts incentive schemes",
+            "000394.htm"
+         ],
+         [
+            "Arts promotion",
+            "000395.htm"
+         ]
+      ],
+      [
+         "Collection access",
+         "000427.htm",
+         [
+            "Descriptive standards",
+            "000461.htm"
+         ],
+         [
+            "Finding aids development",
+            "000486.htm"
+         ],
+         [
+            "Reference services",
+            "000550.htm"
+         ]
+      ],
+      [
+         "Collection management",
+         "000430.htm",
+         [
+            "Artefact export regulation",
+            "000390.htm"
+         ],
+         [
+            "Collection accessioning",
+            "000428.htm"
+         ],
+         [
+            "Collection acquisition",
+            "000429.htm"
+         ],
+         [
+            "Collection storage",
+            "000432.htm"
+         ],
+         [
+            "Preservation services",
+            "000532.htm"
+         ]
+      ],
+      [
+         "Collection promotion",
+         "000431.htm",
+         [
+            "Exhibition programs",
+            "000481.htm"
+         ],
+         [
+            "Publicity programs",
+            "000542.htm"
+         ]
+      ],
+      [
+         "Cultural awards and scholarships",
+         "000443.htm"
+      ],
+      [
+         "Cultural festivals",
+         "000445.htm"
+      ],
+      [
+         "Cultural gifts programs",
+         "000446.htm"
+      ],
+      [
+         "Multicultural heritage promotion",
+         "000518.htm",
+         [
+            "Multicultural festivals",
+            "000517.htm"
+         ],
+         [
+            "Multicultural services",
+            "000519.htm"
+         ]
+      ]
+   ],
+   [
+      "DEFENCE",
+      "000449.htm",
+      [
+         "Australian Defence Forces",
+         "000397.htm",
+         [
+            "Air Force",
+            "002266.htm"
+         ],
+         [
+            "Army",
+            "000388.htm"
+         ],
+         [
+            "Badges and insignia",
+            "000401.htm"
+         ],
+         [
+            "Cadets",
+            "000416.htm"
+         ],
+         [
+            "Defence force commands",
+            "000456.htm"
+         ],
+         [
+            "Military bands",
+            "000510.htm"
+         ],
+         [
+            "Navy",
+            "000524.htm"
+         ],
+         [
+            "Reserves",
+            "000553.htm"
+         ],
+         [
+            "Roulettes",
+            "000556.htm"
+         ]
+      ],
+      [
+         "Defence estate management",
+         "000454.htm"
+      ],
+      [
+         "Defence force careers",
+         "000455.htm",
+         [
+            "Defence career development",
+            "000450.htm"
+         ],
+         [
+            "Military employment services",
+            "000512.htm"
+         ]
+      ],
+      [
+         "Defence strategic development",
+         "000574.htm",
+         [
+            "Defence efficiency review",
+            "000453.htm"
+         ],
+         [
+            "Defence reform program",
+            "000460.htm"
+         ]
+      ],
+      [
+         "Defence strategic policy",
+         "000576.htm",
+         [
+            "Strategic decisions",
+            "000573.htm"
+         ],
+         [
+            "Strategic planning",
+            "000575.htm"
+         ]
+      ],
+      [
+         "Defence strategic support",
+         "000577.htm",
+         [
+            "Capital equipment programs",
+            "000419.htm"
+         ],
+         [
+            "Defence industry",
+            "000459.htm"
+         ],
+         [
+            "Defence science and technology",
+            "000905.htm"
+         ],
+         [
+            "Logistics",
+            "000506.htm"
+         ]
+      ],
+      [
+         "Emergency management",
+         "000473.htm",
+         [
+            "Civil community assistance",
+            "000426.htm"
+         ],
+         [
+            "Disaster support",
+            "000464.htm"
+         ]
+      ],
+      [
+         "Military law",
+         "001814.htm"
+      ],
+      [
+         "Military operations",
+         "000515.htm",
+         [
+            "Australian theatre of war",
+            "000398.htm"
+         ],
+         [
+            "Military exercises",
+            "000514.htm"
+         ],
+         [
+            "Special operations",
+            "000569.htm"
+         ],
+         [
+            "Warfare",
+            "000589.htm"
+         ]
+      ]
+   ],
+   [
+      "EDUCATION AND TRAINING",
+      "000467.htm",
+      [
+         "Arts education",
+         "000392.htm"
+      ],
+      [
+         "Community education",
+         "000434.htm",
+         [
+            "Adult education programs",
+            "000379.htm"
+         ],
+         [
+            "Adult migrant education",
+            "000380.htm"
+         ],
+         [
+            "Road safety awareness",
+            "000555.htm"
+         ]
+      ],
+      [
+         "Curriculum development",
+         "000447.htm"
+      ],
+      [
+         "Early childhood education",
+         "000466.htm"
+      ],
+      [
+         "Military education and training",
+         "000511.htm",
+         [
+            "Army reserve training",
+            "000389.htm"
+         ],
+         [
+            "Defence college training",
+            "000451.htm"
+         ]
+      ],
+      [
+         "Overseas skills recognition",
+         "000527.htm"
+      ],
+      [
+         "School education",
+         "000561.htm",
+         [
+            "Discipline programs",
+            "000465.htm"
+         ],
+         [
+            "School transport regulation",
+            "000562.htm"
+         ],
+         [
+            "Special needs programs",
+            "000568.htm"
+         ]
+      ],
+      [
+         "Tertiary education",
+         "000581.htm"
+      ],
+      [
+         "Vocational education",
+         "000588.htm",
+         [
+            "Apprenticeship programs",
+            "000386.htm"
+         ],
+         [
+            "Hospital teaching programs",
+            "000493.htm"
+         ],
+         [
+            "Trainee programs",
+            "000584.htm"
+         ],
+         [
+            "Workplace training",
+            "000595.htm"
+         ]
+      ]
+   ],
+   [
+      "EMPLOYMENT",
+      "000016.htm",
+      [
+         "Human resources development",
+         "000348.htm",
+         [
+            "Occupational health and safety",
+            "000355.htm"
+         ],
+         [
+            "Recruitment programs",
+            "000356.htm"
+         ],
+         [
+            "Termination processes",
+            "002103.htm"
+         ],
+         [
+            "Workers compensation schemes",
+            "000363.htm"
+         ],
+         [
+            "Workplace discrimination monitoring",
+            "000364.htm"
+         ],
+         [
+            "Workplace equity and justice programs",
+            "000365.htm"
+         ]
+      ],
+      [
+         "Industrial awards and conditions",
+         "000349.htm",
+         [
+            "Award conditions",
+            "000366.htm"
+         ],
+         [
+            "Remuneration review",
+            "000368.htm"
+         ]
+      ],
+      [
+         "Labour market programs",
+         "000347.htm",
+         [
+            "Employment services marketing",
+            "000351.htm"
+         ],
+         [
+            "Job placement programs",
+            "000352.htm"
+         ],
+         [
+            "Job vacancy data management",
+            "000353.htm"
+         ]
+      ],
+      [
+         "Workplace agreement processes",
+         "000350.htm",
+         [
+            "Agreement bargaining processes",
+            "002141.htm"
+         ],
+         [
+            "Agreement dispute mediation",
+            "000370.htm"
+         ],
+         [
+            "Certified employment conditions",
+            "000371.htm"
+         ],
+         [
+            "Employment advocacy services",
+            "000374.htm"
+         ]
+      ]
+   ],
+   [
+      "ENVIRONMENT",
+      "000478.htm",
+      [
+         "Built environment",
+         "000409.htm",
+         [
+            "Building acoustics",
+            "000405.htm"
+         ],
+         [
+            "Building preservation",
+            "000407.htm"
+         ]
+      ],
+      [
+         "Climate information services",
+         "000203.htm"
+      ],
+      [
+         "Conservation programs",
+         "000438.htm",
+         [
+            "Endangered species protection",
+            "000475.htm"
+         ],
+         [
+            "Landcare programs",
+            "000504.htm"
+         ],
+         [
+            "Soil preservation programs",
+            "000567.htm"
+         ]
+      ],
+      [
+         "Environmental impact assessment",
+         "000479.htm"
+      ],
+      [
+         "Historic relic protection",
+         "000492.htm"
+      ],
+      [
+         "Marine life protection programs",
+         "000507.htm"
+      ],
+      [
+         "Natural heritage protection",
+         "000522.htm",
+         [
+            "National park management",
+            "000520.htm"
+         ],
+         [
+            "Nature reserve management",
+            "000523.htm"
+         ],
+         [
+            "Wilderness area management",
+            "000593.htm"
+         ],
+         [
+            "Wildlife sanctuary management",
+            "000594.htm"
+         ]
+      ],
+      [
+         "Oceans governance",
+         "000525.htm"
+      ],
+      [
+         "Pollutant prevention programs",
+         "000529.htm"
+      ],
+      [
+         "World heritage listings",
+         "000596.htm"
+      ]
+   ],
+   [
+      "FINANCE MANAGEMENT",
+      "000001.htm",
+      [
+         "Commonwealth State funding",
+         "000017.htm"
+      ],
+      [
+         "Currency",
+         "000018.htm",
+         [
+            "Counterfeiting control",
+            "000027.htm"
+         ]
+      ],
+      [
+         "Financial investment",
+         "000021.htm",
+         [
+            "Investment scheme regulation",
+            "000031.htm"
+         ]
+      ],
+      [
+         "Financial system management",
+         "002302.htm",
+         [
+            "Financial system monitoring",
+            "002306.htm"
+         ],
+         [
+            "Payments management",
+            "002297.htm"
+         ]
+      ],
+      [
+         "Fiscal policy",
+         "000022.htm",
+         [
+            "Public borrowing",
+            "000032.htm"
+         ],
+         [
+            "Public debt",
+            "000033.htm"
+         ],
+         [
+            "Public expenditure",
+            "000034.htm"
+         ]
+      ],
+      [
+         "Foreign investment control",
+         "000030.htm"
+      ],
+      [
+         "International monetary regulation",
+         "000023.htm"
+      ],
+      [
+         "Monetary policy",
+         "000020.htm",
+         [
+            "Exchange rates",
+            "000028.htm"
+         ],
+         [
+            "Inflation",
+            "000029.htm"
+         ],
+         [
+            "Interest rates",
+            "002295.htm"
+         ]
+      ],
+      [
+         "Resource management",
+         "000024.htm",
+         [
+            "Contract management",
+            "000037.htm"
+         ],
+         [
+            "Financial administration",
+            "000035.htm"
+         ],
+         [
+            "Financial budgeting",
+            "000036.htm"
+         ]
+      ],
+      [
+         "Retirement income",
+         "000025.htm",
+         [
+            "Asset assessment",
+            "000038.htm"
+         ],
+         [
+            "Retirement saving",
+            "000039.htm"
+         ],
+         [
+            "Superannuation regulation",
+            "000040.htm"
+         ]
+      ],
+      [
+         "Statistical analysis",
+         "000019.htm"
+      ],
+      [
+         "Taxation",
+         "000026.htm",
+         [
+            "Income assessment",
+            "000041.htm"
+         ],
+         [
+            "Revenue raising",
+            "000042.htm"
+         ],
+         [
+            "Taxation compliance",
+            "000043.htm"
+         ]
+      ]
+   ],
+   [
+      "GOVERNANCE",
+      "000002.htm",
+      [
+         "Civic celebrations",
+         "000046.htm"
+      ],
+      [
+         "Constitutional matters",
+         "000048.htm",
+         [
+            "Constitutional conventions",
+            "000061.htm"
+         ],
+         [
+            "Constitutional referenda",
+            "000062.htm"
+         ]
+      ],
+      [
+         "Electoral matters",
+         "000049.htm",
+         [
+            "Declaration of interests",
+            "000063.htm"
+         ],
+         [
+            "Election campaigning",
+            "000064.htm"
+         ],
+         [
+            "Electoral boundary assessment",
+            "000065.htm"
+         ]
+      ],
+      [
+         "Honours and awards programs",
+         "000050.htm"
+      ],
+      [
+         "Intergovernmental relations",
+         "000052.htm",
+         [
+            "Cross-border cooperation",
+            "000067.htm"
+         ],
+         [
+            "Intergovernment policy dissemination",
+            "000069.htm"
+         ]
+      ],
+      [
+         "Legislative drafting",
+         "000053.htm",
+         [
+            "Draft Bill amendment process",
+            "000070.htm"
+         ],
+         [
+            "Legislation review",
+            "000071.htm"
+         ],
+         [
+            "Preparation of legislative regulations",
+            "000072.htm"
+         ]
+      ],
+      [
+         "Official protocol",
+         "000054.htm",
+         [
+            "Ceremonial events and representation",
+            "000073.htm"
+         ],
+         [
+            "Head of Government protocol",
+            "000074.htm"
+         ],
+         [
+            "Official establishment management",
+            "000075.htm"
+         ],
+         [
+            "Official hospitality",
+            "000076.htm"
+         ],
+         [
+            "Official visits",
+            "000077.htm"
+         ]
+      ],
+      [
+         "Parliamentary chamber support",
+         "000045.htm",
+         [
+            "Hansard services",
+            "000058.htm"
+         ],
+         [
+            "Parliamentary papers",
+            "000059.htm"
+         ],
+         [
+            "Tabling of official documents",
+            "000060.htm"
+         ]
+      ],
+      [
+         "Parliamentary committee and member support",
+         "000047.htm"
+      ],
+      [
+         "Population census",
+         "000044.htm",
+         [
+            "Demographic surveys",
+            "000055.htm"
+         ],
+         [
+            "Household census",
+            "000056.htm"
+         ],
+         [
+            "Population distribution analysis",
+            "000057.htm"
+         ]
+      ],
+      [
+         "Public administration",
+         "002290.htm",
+         [
+            "Government auditing",
+            "002291.htm"
+         ],
+         [
+            "Public service",
+            "002292.htm"
+         ],
+         [
+            "Territories administration",
+            "002293.htm"
+         ]
+      ],
+      [
+         "Statistics",
+         "002289.htm"
+      ]
+   ],
+   [
+      "HEALTH CARE",
+      "000003.htm",
+      [
+         "Community health services",
+         "000078.htm",
+         [
+            "Clinical health services",
+            "000087.htm"
+         ],
+         [
+            "Health promotion",
+            "000089.htm"
+         ],
+         [
+            "Primary health care",
+            "000090.htm"
+         ]
+      ],
+      [
+         "Health insurance schemes",
+         "000079.htm"
+      ],
+      [
+         "Health protocol administration",
+         "000080.htm",
+         [
+            "Drugs and poisons regulation",
+            "000091.htm"
+         ],
+         [
+            "Food hygiene regulation",
+            "000092.htm"
+         ],
+         [
+            "Practitioner discipline",
+            "000093.htm"
+         ],
+         [
+            "Practitioner registration",
+            "000095.htm"
+         ]
+      ],
+      [
+         "Hospital services",
+         "000081.htm",
+         [
+            "Hospital administration",
+            "000096.htm"
+         ],
+         [
+            "Patient care",
+            "000097.htm"
+         ],
+         [
+            "Pharmaceutical and drug support",
+            "000098.htm"
+         ]
+      ],
+      [
+         "Medical research",
+         "000083.htm",
+         [
+            "Ethical compliance",
+            "000099.htm"
+         ],
+         [
+            "Medical aids regulation",
+            "000100.htm"
+         ],
+         [
+            "Medical research funding",
+            "000101.htm"
+         ],
+         [
+            "National referral laboratory services",
+            "000102.htm"
+         ],
+         [
+            "Population-based research",
+            "000103.htm"
+         ]
+      ],
+      [
+         "Public health services",
+         "000084.htm",
+         [
+            "Epidemiology",
+            "000104.htm"
+         ],
+         [
+            "Health disaster preparedness",
+            "000106.htm"
+         ],
+         [
+            "Health hazard prevention",
+            "000105.htm"
+         ],
+         [
+            "Medical quarantine services",
+            "000108.htm"
+         ],
+         [
+            "Notifiable disease management",
+            "000109.htm"
+         ]
+      ],
+      [
+         "Special needs services",
+         "000085.htm",
+         [
+            "Dental health services",
+            "000111.htm"
+         ],
+         [
+            "Independent living services",
+            "000112.htm"
+         ],
+         [
+            "Mental health services",
+            "000113.htm"
+         ],
+         [
+            "Residential services",
+            "000114.htm"
+         ]
+      ],
+      [
+         "Veterans\" health services",
+         "000086.htm"
+      ]
+   ],
+   [
+      "IMMIGRATION",
+      "000004.htm",
+      [
+         "Citizenship",
+         "000115.htm",
+         [
+            "Naturalisation assessment",
+            "000121.htm"
+         ],
+         [
+            "Presentation arrangements",
+            "000122.htm"
+         ]
+      ],
+      [
+         "Deportation",
+         "000116.htm"
+      ],
+      [
+         "Detention programs",
+         "000117.htm"
+      ],
+      [
+         "Migrant services",
+         "000118.htm",
+         [
+            "Interpreter services",
+            "000123.htm"
+         ],
+         [
+            "Migrant accommodation services",
+            "000125.htm"
+         ],
+         [
+            "Migrant settlement programs",
+            "000126.htm"
+         ]
+      ],
+      [
+         "Refugee services",
+         "000119.htm"
+      ],
+      [
+         "Travel authorisation",
+         "000120.htm",
+         [
+            "Permanent entry arrangements",
+            "000127.htm"
+         ],
+         [
+            "Temporary entry arrangements",
+            "000128.htm"
+         ]
+      ]
+   ],
+   [
+      "INDIGENOUS AFFAIRS",
+      "002285.htm",
+      [
+         "Indigenous cultural heritage",
+         "000495.htm",
+         [
+            "Cultural artefact repatriation",
+            "001772.htm"
+         ]
+      ],
+      [
+         "Indigenous enterprise development",
+         "000496.htm"
+      ],
+      [
+         "Indigenous health services",
+         "000082.htm"
+      ],
+      [
+         "Indigenous heritage conservation",
+         "000497.htm"
+      ],
+      [
+         "Indigenous reconciliation",
+         "000051.htm"
+      ],
+      [
+         "Indigenous welfare programs",
+         "000498.htm"
+      ]
+   ],
+   [
+      "INTERNATIONAL RELATIONS",
+      "000005.htm",
+      [
+         "Consular services",
+         "000129.htm"
+      ],
+      [
+         "Defence liaison",
+         "000132.htm",
+         [

+            "000140.htm"
+         ],
+         [
+            "Defence cooperation programs",
+            "000141.htm"
+         ],
+         [
+            "Defence personnel exchanges",
+            "000142.htm"
+         ],
+         [
+            "Military advisors",
+            "000143.htm"
+         ]
+      ],
+      [
+         "Diplomatic missions",
+         "000130.htm"
+      ],
+      [
+         "International affairs",
+         "000131.htm",
+         [
+            "Disarmament and arms control",
+            "000137.htm"
+         ],
+         [
+            "Nuclear safeguards",
+            "000139.htm"
+         ]
+      ],
+      [
+         "International treaties",
+         "000133.htm",
+         [
+            "Treaty administration",
+            "001384.htm"
+         ]
+      ],
+      [
+         "Overseas aid programs",
+         "000134.htm",
+         [
+            "Development assistance programs",
+            "000146.htm"
+         ],
+         [
+            "Overseas student scholarship programs",
+            "000147.htm"
+         ]
+      ],
+      [
+         "Overseas promotion",
+         "000135.htm"
+      ],
+      [
+         "Passport services",
+         "000136.htm"
+      ]
+   ],
+   [
+      "JUSTICE ADMINISTRATION",
+      "000006.htm",
+      [
+         "Administrative law",
+         "000149.htm",
+         [
+            "Administrative decision appeal",
+            "000163.htm"
+         ],
+         [
+            "Administrative decision review",
+            "000164.htm"
+         ],
+         [
+            "Censorship standards",
+            "000165.htm"
+         ],
+         [
+            "Copyright regulation",
+            "000166.htm"
+         ],
+         [
+            "Recordkeeping standards",
+            "000167.htm"
+         ]
+      ],
+      [
+         "Associations and corporate law",
+         "000150.htm",
+         [
+            "Bankruptcy proceedings",
+            "000168.htm"
+         ],
+         [
+            "Merger regulation",
+            "000169.htm"
+         ]
+      ],
+      [
+         "Civil law",
+         "000151.htm",
+         [
+            "Civil registration",
+            "000170.htm"
+         ],
+         [
+            "Conveyancing",
+            "000171.htm"
+         ],
+         [
+            "Dispute mediation programs",
+            "000174.htm"
+         ],
+         [
+            "Family law proceedings",
+            "000172.htm"
+         ],
+         [
+            "Probate applications",
+            "000173.htm"
+         ]
+      ],
+      [
+         "Commissions of inquiry",
+         "000152.htm"
+      ],
+      [
+         "Coronial law",
+         "000153.htm"
+      ],
+      [
+         "Court reporting",
+         "000154.htm"
+      ],
+      [
+         "Criminal law",
+         "000155.htm"
+      ],
+      [
+         "Human rights obligations",
+         "000156.htm"
+      ],
+      [
+         "Juvenile justice",
+         "000157.htm"
+      ],
+      [
+         "Legal aid services",
+         "000158.htm"
+      ],
+      [
+         "Local laws and ordinances",
+         "000159.htm"
+      ],
+      [
+         "Native title claims",
+         "000160.htm",
+         [
+            "Native title mediation programs",
+            "000180.htm"
+         ],
+         [
+            "Native title settlement negotiations",
+            "000181.htm"
+         ]
+      ],
+      [
+         "Privacy guideline monitoring",
+         "000161.htm"
+      ],
+      [
+         "Prosecution services",
+         "000162.htm"
+      ]
+   ],
+   [
+      "MARITIME SERVICES",
+      "000007.htm",
+      [
+         "Cargo control",
+         "000198.htm"
+      ],
+      [
+         "Harbour management",
+         "000183.htm"
+      ],
+      [
+         "Marina management",
+         "000184.htm"
+      ],
+      [
+         "Navigation",
+         "000185.htm",
+         [
+            "Charting sea lanes",
+            "000191.htm"
+         ],
+         [
+            "Light station maintenance",
+            "000192.htm"
+         ],
+         [
+            "Navigation systems development",
+            "000193.htm"
+         ]
+      ],
+      [
+         "Pilotage management",
+         "000182.htm"
+      ],
+      [
+         "Port regulation",
+         "001471.htm"
+      ],
+      [
+         "Sea passengers",
+         "001487.htm"
+      ],
+      [
+         "Search and rescue",
+         "000187.htm",
+         [
+            "Rescue coordination",
+            "000194.htm"
+         ],
+         [
+            "Search technology development",
+            "000195.htm"
+         ]
+      ],
+      [
+         "Ship personnel",
+         "000188.htm",
+         [
+            "Personnel safety standards",
+            "000196.htm"
+         ],
+         [
+            "Pilot licensing",
+            "000197.htm"
+         ]
+      ],
+      [
+         "Ship safety",
+         "000189.htm",
+         [
+            "Seaworthiness",
+            "000201.htm"
+         ],
+         [
+            "Ship commissioning",
+            "000199.htm"
+         ],
+         [
+            "Ship inspection",
+            "000200.htm"
+         ]
+      ]
+   ],
+   [
+      "NATURAL RESOURCES",
+      "000009.htm",
+      [
+         "Crown land administration",
+         "000218.htm"
+      ],
+      [
+         "Energy resources",
+         "001451.htm",
+         [
+            "Fossil fuel management",
+            "000226.htm"
+         ],
+         [
+            "Renewable energy development",
+            "000227.htm"
+         ]
+      ],
+      [
+         "Land use planning",
+         "000220.htm",
+         [
+            "Land use zoning",
+            "001429.htm"
+         ]
+      ],
+      [
+         "Land valuation",
+         "000222.htm"
+      ],
+      [
+         "Mineral resources",
+         "000223.htm",
+         [
+            "Land rehabilitation programs",
+            "000231.htm"
+         ],
+         [
+            "Mining regulations",
+            "000232.htm"
+         ]
+      ],
+      [
+         "Pollution emission control",
+         "000224.htm"
+      ],
+      [
+         "Water resources",
+         "000225.htm",
+         [
+            "Water conservation plans",
+            "000233.htm"
+         ],
+         [
+            "Water quality monitoring",
+            "000234.htm"
+         ],
+         [
+            "Water usage management",
+            "000235.htm"
+         ],
+         [
+            "Waterway management",
+            "000236.htm"
+         ]
+      ]
+   ],
+   [
+      "PRIMARY INDUSTRIES",
+      "000008.htm",
+      [
+         "Chemical and pesticide regulation",
+         "000202.htm"
+      ],
+      [
+         "Marine and rural regulation",
+         "000204.htm",
+         [
+            "Agricultural industry",
+            "000208.htm"
+         ],
+         [
+            "Fisheries industry",
+            "000209.htm"
+         ],
+         [
+            "Food quality assurance",
+            "000213.htm"
+         ],
+         [
+            "Forestry industry",
+            "000210.htm"
+         ]
+      ],
+      [
+         "Marine and rural support",
+         "000205.htm",
+         [
+            "Aquaculture industry",
+            "000212.htm"
+         ],
+         [
+            "Horticultural industry",
+            "000214.htm"
+         ],
+         [
+            "Pastoral industry",
+            "000215.htm"
+         ],
+         [
+            "Silvicultural industry",
+            "000216.htm"
+         ],
+         [
+            "Viticultural industry",
+            "000217.htm"
+         ]
+      ],
+      [
+         "Quarantine",
+         "000211.htm"
+      ],
+      [
+         "Rural field day promotion",
+         "000206.htm"
+      ],
+      [
+         "Rural partnership programs",
+         "000207.htm"
+      ]
+   ],
+   [
+      "SCIENCE",
+      "000010.htm",
+      [
+         "Agricultural sciences",
+         "000237.htm"
+      ],
+      [
+         "Animal and veterinary sciences",
+         "000238.htm"
+      ],
+      [
+         "Applied sciences",
+         "000239.htm",
+         [
+            "Engineering and technology sciences",
+            "000246.htm"
+         ],
+         [
+            "Weights and measures standards",
+            "000247.htm"
+         ]
+      ],
+      [
+         "Biological sciences",
+         "000240.htm",
+         [
+            "Biochemistry",
+            "000248.htm"
+         ],
+         [
+            "Biodiversity preservation",
+            "000249.htm"
+         ],
+         [
+            "Biotechnology development",
+            "000250.htm"
+         ],
+         [
+            "Botany",
+            "000251.htm"
+         ],
+         [
+            "Entomology",
+            "000252.htm"
+         ],
+         [
+            "Genetic engineering",
+            "000253.htm"
+         ],
+         [
+            "Physiology",
+            "000254.htm"
+         ]
+      ],
+      [
+         "Earth sciences",
+         "000241.htm",
+         [
+            "Atmospheric sciences",
+            "000255.htm"
+         ],
+         [
+            "Hydrology",
+            "000256.htm"
+         ],
+         [
+            "Mineral exploration",
+            "000257.htm"
+         ],
+         [
+            "Oceanography",
+            "000258.htm"
+         ],
+         [
+            "Seismology",
+            "000259.htm"
+         ]
+      ],
+      [
+         "Mathematical sciences",
+         "000242.htm"
+      ],
+      [
+         "Medical and health sciences",
+         "001229.htm"
+      ],
+      [
+         "Physical sciences",
+         "000244.htm",
+         [
+            "Astronomical sciences",
+            "000260.htm"
+         ],
+         [
+            "Atomic and molecular sciences",
+            "000261.htm"
+         ],
+         [
+            "Nuclear sciences",
+            "000262.htm"
+         ]
+      ],
+      [
+         "Spatial information research",
+         "000245.htm"
+      ]
+   ],
+   [
+      "SECURITY",
+      "000011.htm",
+      [
+         "Corrective services",
+         "000263.htm",
+         [
+            "Community based corrections",
+            "000270.htm"
+         ],
+         [
+            "Detention centre management",
+            "000271.htm"
+         ]
+      ],
+      [
+         "External security",
+         "000264.htm",
+         [
+            "Peacekeeping forces",
+            "000273.htm"
+         ]
+      ],
+      [
+         "Information security",
+         "000265.htm"
+      ],
+      [
+         "Intelligence",
+         "000266.htm",
+         [
+            "Forensic analysis",
+            "000275.htm"
+         ],
+         [
+            "Intelligence liaison",
+            "001159.htm"
+         ],
+         [
+            "Intelligence support",
+            "000277.htm"
+         ]
+      ],
+      [
+         "Law enforcement",
+         "000267.htm",
+         [
+            "Community policing",
+            "000278.htm"
+         ],
+         [
+            "Criminology",
+            "000279.htm"
+         ],
+         [
+            "Police administration",
+            "000280.htm"
+         ],
+         [
+            "Protective services",
+            "000281.htm"
+         ]
+      ],
+      [
+         "National security",
+         "001548.htm",
+         [
+            "Coastal surveillance",
+            "000269.htm"
+         ]
+      ]
+   ],
+   [
+      "SPORT AND RECREATION",
+      "000012.htm",
+      [
+         "Caravan and camping services",
+         "000284.htm"
+      ],
+      [
+         "Community recreational programs",
+         "000285.htm",
+         [
+            "Gambling support services",
+            "000290.htm"
+         ],
+         [
+            "Public fitness promotion",
+            "000291.htm"
+         ],
+         [
+            "Social club support",
+            "000292.htm"
+         ],
+         [
+            "Volunteer support programs",
+            "000293.htm"
+         ]
+      ],
+      [
+         "Gaming industry regulation",
+         "000286.htm"
+      ],
+      [
+         "Park and reserve services",
+         "000289.htm"
+      ],
+      [
+         "Sport and fitness development",
+         "000287.htm",
+         [
+            "Athlete scholarship programs",
+            "000295.htm"
+         ],
+         [
+            "Fundraising and donation schemes",
+            "000296.htm"
+         ],
+         [
+            "Games administration",
+            "000297.htm"
+         ],
+         [
+            "Games promotion",
+            "000298.htm"
+         ],
+         [
+            "Sporting grants administration",
+            "000299.htm"
+         ]
+      ],
+      [
+         "Sports drugs monitoring",
+         "000288.htm",
+         [
+            "Doping detection research",
+            "000300.htm"
+         ]
+      ]
+   ],
+   [
+      "TOURISM",
+      "000013.htm",
+      [
+         "Tourism industry development",
+         "000301.htm"
+      ],
+      [
+         "Tourist event promotion",
+         "000302.htm",
+         [
+            "Advertising campaigns",
+            "000305.htm"
+         ]
+      ],
+      [
+         "Travel missions",
+         "000303.htm"
+      ]
+   ],
+   [
+      "TRADE",
+      "000014.htm",
+      [
+         "Export regulation",
+         "000311.htm",
+         [
+            "Export promotion",
+            "000320.htm"
+         ],
+         [
+            "Prohibited export control",
+            "000321.htm"
+         ]
+      ],
+      [
+         "Import regulation",
+         "000312.htm",
+         [
+            "Prohibited import control",
+            "000323.htm"
+         ],
+         [
+            "Tariff regulation",
+            "000322.htm"
+         ]
+      ],
+      [
+         "Intellectual property management",
+         "000910.htm",
+         [
+            "Copyright registration",
+            "000308.htm"
+         ],
+         [
+            "Design registration",
+            "000310.htm"
+         ],
+         [
+            "Patent registration",
+            "000315.htm"
+         ],
+         [
+            "Trademark registration",
+            "000318.htm"
+         ]
+      ],
+      [
+         "International trade agreements",
+         "000313.htm"
+      ],
+      [
+         "Interstate trade agreements",
+         "000314.htm"
+      ],
+      [
+         "Trade development programs",
+         "000316.htm"
+      ],
+      [
+         "Trade expositions",
+         "000317.htm"
+      ]
+   ],
+   [
+      "TRANSPORT",
+      "000015.htm",
+      [
+         "Air transport",
+         "000324.htm",
+         [
+            "Air transport safety",
+            "000332.htm"
+         ],
+         [
+            "Aircraft standards",
+            "000330.htm"
+         ],
+         [
+            "Airport services",
+            "000331.htm"
+         ]
+      ],
+      [
+         "Freight movement regulation",
+         "000325.htm"
+      ],
+      [
+         "Passenger services",
+         "000326.htm"
+      ],
+      [
+         "Rail transport",
+         "000327.htm",
+         [
+            "Rail harmonisation standards",
+            "000333.htm"
+         ],
+         [
+            "Rail land acquisition regulation",
+            "000336.htm"
+         ],
+         [
+            "Rail transport safety",
+            "000337.htm"
+         ],
+         [
+            "Railway maintenance",
+            "000338.htm"
+         ],
+         [
+            "Rolling stock regulation",
+            "000339.htm"
+         ]
+      ],
+      [
+         "Road transport",
+         "000328.htm",
+         [
+            "Driving licences administration",
+            "000340.htm"
+         ],
+         [
+            "Road surface maintenance",
+            "000341.htm"
+         ],
+         [
+            "Road traffic regulation",
+            "000342.htm"
+         ],
+         [
+            "Road transport safety",
+            "000343.htm"
+         ],
+         [
+            "Vehicle registration",
+            "000344.htm"
+         ],
+         [
+            "Vehicle standards",
+            "000345.htm"
+         ]
+      ],
+      [
+         "Transport infrastructure development",
+         "000329.htm"
+      ]
+   ]
+]

--- a/alaveteli/exportAgencies.csv.php
+++ b/alaveteli/exportAgencies.csv.php
@@ -1,20 +1,6 @@
 <?php
 
 include_once("../include/common.inc.php");
-
-function shortName($name) {
-    $name = trim($name);
-    if (strstr($name,"Minister ") || strstr($name,"Treasurer") || strstr($name,"Parliamentary Secretary")) {
-        $badWords = Array ("Assisting the Prime Minister on","Assisting on"," the "," of "," for "," on "," and "," to ",","," ","'","`");
-        return str_replace($badWords,"",$name);
-    }
-            
-    else {
-    $out = Array();
-    preg_match_all('/[A-Z]/', $name, $out);
-    return implode("", $out[0]);
-    }
-}
 
 setlocale(LC_CTYPE, 'C');
 
@@ -63,38 +49,36 @@
                 $row = Array();
                 $row["#id"] = $agency->id;
                 $row["name"] = trim($agency->value->name);
-                if (isset($agency->value->foiEmail)) {
-                    $row["request_email"] = $agency->value->foiEmail;
-                } else {
-                    if ($agency->value->orgType == "FMA-DepartmentOfState") {
-                        $row["request_email"] = "foi@" . GetDomain($agency->value->website);
-                    } else {
-                        $row["request_email"] = $foiEmail[$agency->value->parentOrg];
+                $row["request_email"] = (isset($agency->value->foiEmail) ? $agency->value->foiEmail : "");
+                $row["short_name"] = (isset($agency->value->shortName) ? $agency->value->shortName : "");
+                $row["notes"] = (isset($agency->value->description) ? $agency->value->description : "");
+
+                $otherBodies = Array();
+                if (isset($agency->value->foiBodies)) {
+                    $otherBodies = array_merge($otherBodies, $agency->value->foiBodies);
+                }
+                if (isset($agency->value->positions)) {
+                    $positions = Array();
+                    foreach ($agency->value->positions as $position) {
+                        $positions[] = "Office of the ".$position;
                     }
+                    $otherBodies = array_merge($otherBodies, $positions);
                 }
-                if (isset($agency->value->shortName)) {
-                    $row["short_name"] = $agency->value->shortName;
-                } else {
-                    $row["short_name"] = shortName($agency->value->name);
+                sort($otherBodies);
+                if (count($otherBodies) > 0) {
+                    $row["notes"] .= "<br/> This department also responds to requests for information held by " . implode(", ", $otherBodies);
                 }
-                $row["notes"] = "";
+
                 $row["publication_scheme"] = (isset($agency->value->infoPublicationSchemeURL) ? $agency->value->infoPublicationSchemeURL : "");
                 $row["home_page"] = (isset($agency->value->website) ? $agency->value->website : "");
                 if ($agency->value->orgType == "FMA-DepartmentOfState") {
-                    $row["tag_string"] = $tag[$agency->value->_id] . " " . $agency->value->orgType;
+                    $row["tag_string"] = $tag[$agency->value->_id];
                 } else {
-                    $row["tag_string"] = $tag[$agency->value->parentOrg] . " " . $agency->value->orgType;
+                    $row["tag_string"] = $tag[$agency->value->parentOrg];
                 }
-
+                $row["tag_string"] .= " " . $agency->value->orgType;
+                $row["tag_string"] .= " federal";
                 fputcsv($fp, array_values($row));
-
-                if (isset($agency->value->foiBodies)) {
-                    foreach ($agency->value->foiBodies as $foiBody) {
-                        $row['name'] = iconv("UTF-8", "ASCII//TRANSLIT",$foiBody);
-                        $row["short_name"] = shortName($foiBody);
-                        fputcsv($fp, array_values($row));
-                    }
-                }
             }
         }
     } catch (SetteeRestClientException $e) {

--- a/bubbletree.php
+++ b/bubbletree.php
@@ -5,13 +5,13 @@
         <meta charset="UTF-8"/> 
         <title>Minimal BubbleTree Demo</title> 
         <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script> 
-        <script type="text/javascript" src="javascripts/bubbletree/lib/jquery.history.js"></script> 
-        <script type="text/javascript" src="javascripts/bubbletree/lib/raphael.js"></script> 
-        <script type="text/javascript" src="javascripts/bubbletree/lib/vis4.js"></script> 
-        <script type="text/javascript" src="javascripts/bubbletree/lib/Tween.js"></script> 
-        <script type="text/javascript" src="javascripts/bubbletree/build/bubbletree.js"></script> 
-        <link rel="stylesheet" type="text/css" href="javascripts/bubbletree/build/bubbletree.css" /> 
-        <script type="text/javascript" src="javascripts/bubbletree/styles/cofog.js"></script> 
+        <script type="text/javascript" src="js/bubbletree/lib/jquery.history.js"></script> 
+        <script type="text/javascript" src="js/bubbletree/lib/raphael.js"></script> 
+        <script type="text/javascript" src="js/bubbletree/lib/vis4.js"></script> 
+        <script type="text/javascript" src="js/bubbletree/lib/Tween.js"></script> 
+        <script type="text/javascript" src="js/bubbletree/build/bubbletree.js"></script> 
+        <link rel="stylesheet" type="text/css" href="js/bubbletree/build/bubbletree.css" /> 
+        <script type="text/javascript" src="js/bubbletree/styles/cofog.js"></script> 
 
 
         <script type="text/javascript"> 

file:a/charts.php -> file:b/charts.php
--- a/charts.php
+++ b/charts.php
@@ -1,6 +1,6 @@
 <?php
 include_once('include/common.inc.php');
-include_header();
+include_header('Charts');
 $db = $server->get_db('disclosr-agencies');
 ?>
 <div class="foundation-header">

--- /dev/null
+++ b/documents/google676a414ad086cefb.html
@@ -1,1 +1,2 @@
+google-site-verification: google676a414ad086cefb.html
 

--- /dev/null
+++ b/documents/index.php
@@ -1,1 +1,15 @@
+australian disclosure logs
 
+are you looking for more information about:
+contracts
+gov orgs
+lobbyists
+
+1/1/11 title (Dept dfggdfgdf)
+description:
+source link:
+documents:
+    #1 title link
+
+
+rss feed here

--- /dev/null
+++ b/documents/rss.xml.php
@@ -1,1 +1,30 @@
+<?php
 
+// Agency X updated Y,  new files, diff of plain text/link text,
+// feed for just one agency or all
+// This is a minimum example of using the Universal Feed Generator Class
+include("lib/FeedWriter.php");
+//Creating an instance of FeedWriter class.
+$TestFeed = new FeedWriter(RSS2);
+//Setting the channel elements
+//Use wrapper functions for common channelelements
+$TestFeed->setTitle('Last Modified - All');
+$TestFeed->setLink('http://disclosr.lambdacomplex.org/rss.xml.php');
+$TestFeed->setDescription('This is test of creating a RSS 2.0 feed Universal Feed Writer');
+//Retriving informations from database
+$rows = $db->get_view("app", "byLastModified")->rows;
+//print_r($rows);
+foreach ($rows as $row) {
+    //Create an empty FeedItem
+    $newItem = $TestFeed->createNewItem();
+    //Add elements to the feed item
+    $newItem->setTitle($row['name']);
+    $newItem->setLink($row['id']);
+    $newItem->setDate(date("c", $row['metadata']['lastModified']));
+    $newItem->setDescription($row['name']);
+    //Now add the feed item
+    $TestFeed->addItem($newItem);
+}
+//OK. Everything is done. Now genarate the feed.
+$TestFeed->genarateFeed();
+?>

--- /dev/null
+++ b/documents/runScrapers.php

--- /dev/null
+++ b/documents/scrapers/3cd40b1240e987cbcd3f0e67054ce259.py
@@ -1,1 +1,1 @@
-
+http://www.apvma.gov.au/rss/disclosure.rss

--- /dev/null
+++ b/documents/scrapers/8c9421f852c441910bf1d93a57b31d64.py
@@ -1,1 +1,1 @@
-
+http://www.daff.gov.au/about/foi/ips/disclosure_log

--- /dev/null
+++ b/documents/scrapers/be9996f0ac58f71f23d074e82d44ead3.py
@@ -1,1 +1,2 @@
+http://foi.deewr.gov.au/disclosure-log/rss
 

--- /dev/null
+++ b/documents/scrapers/e2a845e55bc9986e6c75c5ad2c508b8d.py
@@ -1,1 +1,1 @@
-
+www.finance.gov.au/foi/disclosure-log/foi-rss.xml

--- /dev/null
+++ b/documents/scrapers/rtk.py
@@ -1,1 +1,1 @@
-
+http://www.righttoknow.org.au/feed/search/%20(latest_status:successful%20OR%20latest_status:partially_successful)

--- /dev/null
+++ b/documents/search.php
@@ -1,1 +1,25 @@
+<?php
+include_once('include/common.inc.php');
+include_header('Search');
+?>
+<div class="foundation-header">
+    <h1><a href="search.php">Search</a></h1>
+</div>
+<form>
+    <input type="text" name="q" value="<?php if (isset($_REQUEST['q']))echo $_REQUEST['q'];?>"/>
+    <input type="submit"/>
+</form>
 
+<?php
+if (isset($_REQUEST['q'])) {
+    $request = Requests::get($serverAddr."disclosr-documents/_fti/_design/lucene/by_all?include_docs=true&q=".$_REQUEST['q']);
+    $results = json_decode($request->body);
+    $db = $server->get_db('disclosr-documents');
+    foreach ($results->rows as $result) {
+        //print_r($result);
+         //$row = $db->get($result->id);
+        echo $result->doc->_id." ".$result->doc->url."<br>".PHP_EOL;
+    }
+}
+include_footer();
+?>

--- a/getAgency.php
+++ b/getAgency.php
@@ -1,23 +1,31 @@
 <?php
 
 include_once('include/common.inc.php');
-include_header();
+
 
 function displayValue($key, $value, $mode) {
     global $db, $schemas;
     if ($mode == "view") {
-
+if (strpos($key, "_") === 0 || $key== "metadata") return;
         echo "<tr>";
 
-        echo "<td>" . $schemas['agency']["properties"][$key]['x-title'] . "<br><small>" . $schemas['agency']["properties"][$key]['description'] . "</small></td><td>";
+        echo "<td>";
+        if (isset($schemas['agency']["properties"][$key])) {
+             echo $schemas['agency']["properties"][$key]['x-title'] . "<br><small>" . $schemas['agency']["properties"][$key]['description']."</small>";
+        }
+         echo                "</td><td>";
         if (is_array($value)) {
             echo "<ol>";
             foreach ($value as $subkey => $subvalue) {
-                if (isset($schemas['agency']["properties"][$key]['x-property'])) {
-                    echo '<li property="' . $schemas['agency']["properties"][$key]['x-property'] . '">';
-                } else {
-                    echo "<li>";
-                }
+                 
+                    echo "<li ";
+                    if (isset($schemas['agency']["properties"][$key]['x-property'])) {
+                    echo ' property="' . $schemas['agency']["properties"][$key]['x-property'] . '" ';
+                }    if (isset($schemas['agency']["properties"][$key]['x-itemprop'])) {
+                    echo ' itemprop="' . $schemas['agency']["properties"][$key]['x-itemprop'] . '" ';
+                }
+                echo " >";
+                
                 echo "$subvalue</li>";
             }
             echo "</ol></td></tr>";
@@ -28,8 +36,8 @@
                 echo "<span>";
             }
             if ((strpos($key, "URL") > 0 || $key == 'website') && $value != "") {
-                echo "<a href='$value'>view</a></span>";
-            } else {
+                echo "<a ".($key == 'website' ? 'itemprop="url"':'')." href='$value'>$value</a>";
+                          } else {
                 echo "$value</span>";
             }
         }
@@ -61,7 +69,8 @@
             } else {
                 echo "<label>$key</label><input  class='input-text' type='text' id='$key' name='$key' value='$value'/>";
                 if ((strpos($key, "URL") > 0 || $key == 'website') && $value != "") {
-                    echo "<a href='$value'>view</a>";
+                    echo "<a ".($key == 'website' ? 'itemprop="url"':'')." href='$value'>view</a>";
+                        
                 }
                 if ($key == 'abn') {
                     echo "<a href='http://www.abr.business.gov.au/SearchByAbn.aspx?SearchText=$value'>view abn</a>";
@@ -108,6 +117,7 @@
 // edit?
 
     $obj = $db->get($_REQUEST['id']);
+    include_header($obj->name);
 //print_r($row);
     if (sizeof($_POST) > 0) {
 //print_r($_POST);
@@ -147,8 +157,8 @@
     }
 
     if ($mode == "view") {
-        echo '<div typeof="schema:GovernmentOrganisation" about="#' . $row['_id'] . '"><table width="100%">';
-        echo '<tr> <td colspan="2"><h3>' . $row['name'] . "</h3></td></tr>";
+        echo '<div itemscope itemtype="http://schema.org/GovernmentOrganization" typeof="schema:GovernmentOrganization" about="#' . $row['_id'] . '"><table width="100%">';
+        echo '<tr> <td colspan="2"><h3 itemprop="name">' . $row['name'] . "</h3></td></tr>";
         echo "<tr><th>Field Name</th><th>Field Value</th></tr>";
     }
     if ($mode == "edit") {
@@ -185,7 +195,8 @@
             echo '<input id="submitbutton" type="submit"/></form>';
         }
     } else {
-
+// show all list
+        include_header('Agencies');
         try {
             /* $rows = $db->get_view("app", "showNamesABNs")->rows;
               //print_r($rows);
@@ -200,10 +211,10 @@
             echo '<ul>';
             foreach ($rows as $row) {
                 //   print_r($row);
-                echo '<li typeof="schema:GovernmentOrganisation foaf:Organization" about="getAgency.php?id=' . $row->value->_id . '">
-<a href="getAgency.php?id=' . $row->value->_id . '" rel="schema:url foaf:page" property="schema:name foaf:name">' .
+                echo '<li itemscope itemtype="http://schema.org/GovernmentOrganization" typeof="schema:GovernmentOrganization foaf:Organization" about="getAgency.php?id=' . $row->value->_id . '">
+<a href="getAgency.php?id=' . $row->value->_id . '" rel="schema:url foaf:page" property="schema:name foaf:name" itemprop="url"><span itemprop="name">' .
                 $row->value->name
-                . '</a></li>';
+                . '</span></a></li>';
             }
             echo "</ul>";
         } catch (SetteeRestClientException $e) {

file:a/graph.php -> file:b/graph.php
--- a/graph.php
+++ b/graph.php
@@ -86,9 +86,9 @@
 if ($format == "html") {
     ?>
  <div id="sigma-example" width="960" style="min-height:800px;background-color: #333;"></div>
-  <script src="javascripts/sigma.min.js"></script>
-  <script src="javascripts/sigma/plugins/sigma.parseGexf.js"></script>
-  <script src="javascripts/sigma/plugins/sigma.forceatlas2.js"></script>
+  <script src="js/sigma.min.js"></script>
+  <script src="js/sigma/plugins/sigma.parseGexf.js"></script>
+  <script src="js/sigma/plugins/sigma.forceatlas2.js"></script>
   <script type="text/javascript">function init() {
   // Instanciate sigma.js and customize rendering :
   var sigInst = sigma.init(document.getElementById('sigma-example')).drawingProperties({

--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -14,6 +14,11 @@
 require_once $basePath.'lib/Requests/library/Requests.php';
 
 Requests::register_autoloader();
+require $basePath."lib/amon-php/amon.php";
+Amon::config(array('address'=> 'http://127.0.0.1:2464', 
+		'protocol' => 'http', 
+		'secret_key' => "I2LJ6dOMmlnXgVAkTPFXd5M3ejkga8Gd2FbBt6iqZdw"));
+Amon::setup_exception_handler();
 # Convert a stdClass to an Array. http://www.php.net/manual/en/language.types.object.php#102735
 
 function object_to_array(stdClass $Class) {

--- a/include/couchdb.inc.php
+++ b/include/couchdb.inc.php
@@ -168,6 +168,7 @@
 $server = new SetteeServer($serverAddr);
 
 function setteErrorHandler($e) {
+    Amon::log($e->getMessage() . " " . print_r($_SERVER,true), array('error'));
     echo $e->getMessage() . "<br>" . PHP_EOL;
 }
 

--- a/include/template.inc.php
+++ b/include/template.inc.php
@@ -1,6 +1,6 @@
 <?php
 
-function include_header() {
+function include_header($title) {
     global $basePath;
     ?>
     <!DOCTYPE html>
@@ -16,7 +16,7 @@
             <!-- Set the viewport width to device width for mobile -->
             <meta name="viewport" content="width=device-width" />
 
-            <title>Disclosr</title>
+            <title><?php echo $title; ?> - Disclosr</title>
 
             <!-- Included CSS Files -->
             <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/foundation.css">
@@ -66,11 +66,11 @@
 
 
             <!-- Included JS Files -->
-            <script src="<?php echo $basePath; ?>javascripts/foundation.js"></script>
-            <script src="<?php echo $basePath; ?>javascripts/app.js"></script>
+            <script src="<?php echo $basePath; ?>js/foundation.js"></script>
+            <script src="<?php echo $basePath; ?>js/app.js"></script>
            <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
             
-    <script type="text/javascript" src="javascripts/flotr2/flotr2.js"></script>
+    <script type="text/javascript" src="<?php echo $basePath ?>js/flotr2/flotr2.js"></script>
         <?php
         if (strpos($_SERVER['SERVER_NAME'], ".gs")) {
             ?>

file:a/javascripts/app.js (deleted)
--- a/javascripts/app.js
+++ /dev/null
@@ -1,95 +1,1 @@
-/* Foundation v2.1.4 http://foundation.zurb.com */
-$(document).ready(function () {
 
-	/* Use this js doc for all application specific JS */
-
-	/* TABS --------------------------------- */
-	/* Remove if you don't need :) */
-
-	function activateTab($tab) {
-		var $activeTab = $tab.closest('dl').find('a.active'),
-				contentLocation = $tab.attr("href") + 'Tab';
-
-		//Make Tab Active
-		$activeTab.removeClass('active');
-		$tab.addClass('active');
-
-    	//Show Tab Content
-		$(contentLocation).closest('.tabs-content').children('li').hide();
-		$(contentLocation).show();
-	}
-
-	$('dl.tabs').each(function () {
-		//Get all tabs
-		var tabs = $(this).children('dd').children('a');
-		tabs.click(function (e) {
-			activateTab($(this));
-		});
-	});
-
-	if (window.location.hash) {
-		activateTab($('a[href="' + window.location.hash + '"]'));
-	}
-
-	/* ALERT BOXES ------------ */
-	$(".alert-box").delegate("a.close", "click", function(event) {
-    event.preventDefault();
-	  $(this).closest(".alert-box").fadeOut(function(event){
-	    $(this).remove();
-	  });
-	});
-
-
-	/* PLACEHOLDER FOR FORMS ------------- */
-	/* Remove this and jquery.placeholder.min.js if you don't need :) */
-
-	//$('input, textarea').placeholder();
-
-
-
-	/* UNCOMMENT THE LINE YOU WANT BELOW IF YOU WANT IE6/7/8 SUPPORT AND ARE USING .block-grids */
-//	$('.block-grid.two-up>li:nth-child(2n+1)').css({clear: 'left'});
-//	$('.block-grid.three-up>li:nth-child(3n+1)').css({clear: 'left'});
-//	$('.block-grid.four-up>li:nth-child(4n+1)').css({clear: 'left'});
-//	$('.block-grid.five-up>li:nth-child(5n+1)').css({clear: 'left'});
-
-
-
-	/* DROPDOWN NAV ------------- */
-
-	var currentFoundationDropdown = null;
-	$('.nav-bar li a, .nav-bar li a:after').each(function() {
-		$(this).data('clicks', 0);
-	});
-	$('.nav-bar li a, .nav-bar li a:after').live('click', function(e) {
-		e.preventDefault();
-		if (currentFoundationDropdown !== $(this).index() || currentFoundationDropdown === null) {
-			$(this).data('clicks', 0);
-			currentFoundationDropdown = $(this).index();
-		}
-		$(this).data('clicks', ($(this).data('clicks') + 1));
-		var f = $(this).siblings('.flyout');
-		if (!f.is(':visible') && $(this).parent('.has-flyout').length > 1) {
-			$('.nav-bar li .flyout').hide();
-			f.show();
-		} else if (($(this).data('clicks') > 1) || ($(this).parent('.has-flyout').length < 1)) {
-			window.location = $(this).attr('href');
-		}
-	});
-	$('.nav-bar').live('click', function(e) {
-		e.stopPropagation();
-		if ($(e.target).parents().is('.flyout') || $(e.target).is('.flyout')) {
-			e.preventDefault();
-		}
-	});
-	// $('body').bind('touchend', function(e) {
-	// 	if (!$(e.target).parents().is('.nav-bar') || !$(e.target).is('.nav-bar')) {
-	// 		$('.nav-bar li .flyout').is(':visible').hide();
-	// 	}
-	// });
-
-	/* DISABLED BUTTONS ------------- */
-	/* Gives elements with a class of 'disabled' a return: false; */
-
-});
-

directory:a/javascripts/bubbletree (deleted)
--- a/javascripts/bubbletree
+++ /dev/null

directory:a/javascripts/flotr2 (deleted)
--- a/javascripts/flotr2
+++ /dev/null

--- a/javascripts/foundation.js
+++ /dev/null
@@ -1,14 +1,1 @@
-/* Foundation v2.1.4 http://foundation.zurb.com */
-/*! jQuery v1.7.1 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 cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement){cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close()}d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(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;g<i;g++){if(g===1){for(h in a.converters){typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h])}}l=k,k=d[g];if(k==="*"){k=l}else{if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g){i in d&&(c[g[i]]=d[i])}while(f[0]==="*"){f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"))}if(h){for(i in e){if(e[i]&&e[i].test(h)){f.unshift(i);break}}}if(f[0] in d){j=f[0]}else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b)){f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)})}else{if(!c&&b!=null&&typeof b=="object"){for(var e in b){ca(a+"["+e+"]",b[e],c,d)}}else{d(a,b)}}}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c){c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d])}e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++){l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)))}(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++){h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border"){for(;g<h;g++){c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0}}return d+"px"}d=bz(a,b,b);if(d<0||d==null){d=a.style[b]||0}d=parseFloat(d)||0;if(c){for(;g<h;g++){d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0)}}return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio"){a.defaultChecked=a.checked}}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object"){b.outerHTML=a.outerHTML}else{if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option"){b.selected=a.defaultSelected}else{if(c==="input"||c==="textarea"){b.defaultValue=a.defaultValue}}}else{a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)}}b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i){for(d=0,e=i[c].length;d<e;d++){f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}}}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement){while(b.length){c.createElement(b.pop())}}return c}function T(a,b,c){b=b||0;if(f.isFunction(b)){return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c})}if(b.nodeType){return f.grep(a,function(a,d){return a===b===c})}if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b)){return f.filter(b,d,!c)}b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=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)?parseFloat(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<d;c++){b[a[c]]=!0}return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\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.1",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(;j<k;j++){if((a=arguments[j])!=null){for(c in a){d=i[c],f=a[c];if(i===f){continue}l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}}}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body){return setTimeout(e.ready,1)}e.isReady=!0;if(a!==!0&&--e.readyWait>0){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&&typeof a=="object"&&"setInterval" in a},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){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(;g<h;){if(c.apply(a[g++],d)===!1){break}}}}else{if(i){for(f in a){if(c.call(a[f],f,a[f])===!1){break}}}else{for(;g<h;){if(c.call(a[g],g,a[g++])===!1){break}}}}return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H){return H.call(b,a,c)}d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++){if(c in b&&b[c]===a){return c}}}return -1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number"){for(var f=c.length;e<f;e++){a[d++]=c[e]}}else{while(c[e]!==b){a[d++]=c[e++]}}a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++){e=!!b(a[f],f),c!==e&&d.push(a[f])}return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k){for(;i<j;i++){f=c(a[i],i,d),f!=null&&(h[h.length]=f)}}else{for(g in a){f=c(a[g],g,d),f!=null&&(h[h.length]=f)}}return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a)){return b}var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c){e.access(a,j,c[j],f,g,d)}return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++){g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h)}return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++){g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)}},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++){if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++){for(var f=0;f<c.length;f++){if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique){break}}}}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++){if(a===c[b]){return !0}}}return !1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return !c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return !d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return !!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null){a=h}else{for(var b in h){a[b]=h[b]}}return a}},i=h.promise({}),j;for(j in g){i[j]=g[j].fire,i[j+"With"]=g[j].fireWith}i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?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<d;c++){b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g}g||j.resolveWith(j,b)}else{j!==a&&j.resolveWith(j,d?[a]:[])}return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e){return{}}g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.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:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent){for(o in {submit:1,change:1,focusin:1}){n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p}}k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div><table "+n+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return !!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b){return}n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function"){e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c)}g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c]){return g.events}k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k]){return}if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++){delete d[b[e]]}if(!(c?m:f.isEmptyObject)(d)){return}}}if(!c){delete j[k].data;if(!m(j[k])){return}}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b){return b!==!0&&a.getAttribute("classid")===b}}return !0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++){g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]))}f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object"){return this.each(function(){f.data(this,a)})}d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b){return f.queue(this[0],a)}return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--){if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0)){h++,l.add(m)}}m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a)){return this.each(function(b){f(this).addClass(a.call(this,b,this.className))})}if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1){if(!e.className&&b.length===1){e.className=a}else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++){~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ")}e.className=f.trim(g)}}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a)){return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))})}if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className){if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++){h=h.replace(" "+c[i]+" "," ")}g.className=f.trim(h)}else{g.className=""}}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a)){return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)})}return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++]){i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}}else{if(c==="undefined"||c==="boolean"){this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""}}})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++){if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1){return !0}}return !1},val:function(a){var c,d,e,g=this[0];if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set" in c)||c.set(this,h,"value")===b){this.value=h}}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get" in c&&(d=c.get(g,"value"))!==b){return d}d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return !b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0){return null}c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j){return b}h.push(b)}}if(j&&!h.length&&i.length){return f(i[g]).val()}return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn){return f(a)[c](d)}if(typeof a.getAttribute=="undefined"){return f.prop(a,c,d)}i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set" in h&&i&&(g=h.set(a,d,c))!==b){return g}a.setAttribute(c,""+d);return d}if(h&&"get" in h&&i&&(g=h.get(a,c))!==null){return g}g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++){e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode){f.error("type property can't be changed")}else{if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button")){return w.get(a,b)}return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button")){return w.set(a,b,c)}a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set" in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get" in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b)){return a.checked=f.inArray(f(a).val(),b)>=0}}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1){a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o){f.event.remove(a,j+b[h],c,d,!0)}continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++){s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s))}r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered)){return}h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h]){return}c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j){j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0)}return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1){return}r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode){r.push([m,s]),n=m}n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++){m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault()}c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++){r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r)}q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace)){c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando]){return a}var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;){e=i[--d],a[e]=g[e]}a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event)){return new f.Event(a,b)}a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d)){a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b}return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form")){return !1}f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form")){return !1}f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))})}return !1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox"){return a.handleObj.handler.apply(this,arguments)}},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a){this.on(i,c,d,a[i],g)}return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1){e=J}else{if(!e){return this}}g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a){this.off(g,c,a[g])}return this}if(c===!1||typeof c=="function"){d=c,c=b}d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){return f.event.trigger(a,b,this[0],!0)}},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length){b[d++].guid=c}return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else{if(m.filter(b,[j]).length>0){k=j;break}}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9){return[]}if(!b||typeof b!="string"){return e}var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b)){if(w.length===2&&o.relative[w[0]]){j=y(w[0]+w[1],d,f)}else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length){b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}}}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length){q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}}else{k=w=[]}}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]"){if(!u){e.push.apply(e,k)}else{if(d&&d.nodeType===1){for(t=0;k[t]!=null;t++){k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t])}}else{for(t=0;k[t]!=null;t++){k[t]&&k[t].nodeType===1&&e.push(j[t])}}}}else{s(k,e)}l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h){for(var b=1;b<a.length;b++){a[b]===a[b-1]&&a.splice(b--,1)}}}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a){return[]}for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter){if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\"){continue}s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f){g=i=!0}else{if(f===!0){continue}}}if(f){for(n=0;(j=s[n])!=null;n++){j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0))}}if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g){return[]}break}}}if(a===q){if(g==null){m.error(a)}else{break}}q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string"){return a.textContent}if(typeof a.innerText=="string"){return a.innerText.replace(k,"")}for(a=a.firstChild;a;a=a.nextSibling){e+=n(a)}}else{if(d===3||d===4){return a.nodeValue}}}else{for(b=0;c=a[b];b++){c.nodeType!==8&&(e+=n(c))}}return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++){if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1){}a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++){c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b)}d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++){d[e].getAttribute("name")===a[1]&&c.push(d[e])}return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined"){return b.getElementsByTagName(a[1])}}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f){return a}for(var g=0,h;(h=b[g])!=null;g++){h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1))}return !1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else{a[2]&&m.error(a[0])}a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not"){if((a.exec(b[3])||"").length>1||/^\w/.test(b[3])){b[3]=m(b[3],null,null,c)}else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return !1}}else{if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0])){return !0}}return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return !!a.firstChild},empty:function(a){return !a.firstChild},has:function(a,b,c){return !!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f){return f(a,c,b,d)}if(e==="contains"){return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0}if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++){if(g[h]===a){return !1}}return !0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling){if(l.nodeType===1){return !1}}if(k==="first"){return !0}l=a;case"last":while(l=l.nextSibling){if(l.nodeType===1){return !1}}return !0;case"nth":c=b[2],e=b[3];if(c===1&&e===0){return !0}f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling){l.nodeType===1&&(l.nodeIndex=++i)}g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f){return f(a,c,b,d)}}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match){o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q))}var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]"){Array.prototype.push.apply(d,a)}else{if(typeof a.length=="number"){for(var e=a.length;c<e;c++){d.push(a[c])}}else{for(;a[c];c++){d.push(a[c])}}}return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition){return a.compareDocumentPosition?-1:1}return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex){return a.sourceIndex-b.sourceIndex}var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i){return v(a,b)}if(!g){return -1}if(!i){return 1}while(j){e.unshift(j),j=j.parentNode}j=i;while(j){f.unshift(j),j=j.parentNode}c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++){if(e[k]!==f[k]){return v(e[k],f[k])}}return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b){return c}var d=a.nextSibling;while(d){if(d===b){return -1}d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++){c[e].nodeType===1&&d.push(c[e])}c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1]){return s(e.getElementsByTagName(b),f)}if(h[2]&&o.find.CLASS&&e.getElementsByClassName){return s(e.getElementsByClassName(h[2]),f)}}if(e.nodeType===9){if(b==="body"&&e.body){return s([e.body],f)}if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode){return s([],f)}if(i.id===h[3]){return s([i],f)}}try{return s(e.querySelectorAll(b),f)}catch(j){}}else{if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p){return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}}catch(r){}finally{l||k.removeAttribute("id")}}}}return a(b,e,f,g)};for(var e in a){m[e]=a[e]}b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a)){try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11){return f}}}catch(g){}}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1){return}o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c){return b.getElementsByClassName(a[1])}},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return !!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return !1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a)){f+=d[0],a=a.replace(o.match.PSEUDO,"")}a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++){m(a,g[h],e,c)}return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string"){return f(a).filter(function(){for(c=0,d=b.length;c<d;c++){if(f.contains(b[c],this)){return !0}}})}var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0){for(h=g;h<e.length;h++){for(i=0;i<g;i++){if(e[i]===e[h]){e.splice(h--,1);break}}}}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++){if(f.contains(this,b[a])){return !0}}})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return !!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++){f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h})}g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11){break}}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a){return this[0]&&this[0].parentNode?this.prevAll().length:-1}if(typeof a=="string"){return f.inArray(this[0],f(a))}return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d))){g.nodeType===1&&e.push(g),g=g[c]}return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c]){if(a.nodeType===1&&++e===b){break}}return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling){a.nodeType===1&&a!==b&&c.push(a)}return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a)){return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))})}if(typeof a!="object"&&a!==b){return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))}return f.text(this)},wrapAll:function(a){if(f.isFunction(a)){return this.each(function(b){f(this).wrapAll(a.call(this,b))})}if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1){a=a.firstChild}return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a)){return this.each(function(b){f(this).wrapInner(a.call(this,b))})}return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)})}if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)})}if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++){if(!a||f.filter(a,[d]).length){!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d)}}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild){b.removeChild(b.firstChild)}}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null}if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++){this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}}catch(e){this.empty().append(a)}}else{f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a)}return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a)){return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))})}typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j)){return this.each(function(){f(this).domManip(a,c,d,!0)})}if(f.isFunction(j)){return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)})}if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++){d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g){e[g]&&bk(d[g],e[g])}}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g){bj(d[g],e[g])}}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k){continue}if(typeof k=="string"){if(!_.test(k)){k=b.createTextNode(k)}else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--){o=o.lastChild}if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i){f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}}var r;if(!f.support.appendChecked){if(k[0]&&typeof(r=k.length)=="number"){for(i=0;i<r;i++){bn(k[i])}}else{bn(k)}}k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return !a.type||be.test(a.type)};for(j=0;h[j];j++){if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript")){e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j])}else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()]){continue}c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events){e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle)}b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b){return this}return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get" in k&&(g=k.get(a,!1,e))!==b){return g}return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d)){return}h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set" in k)||(d=k.set(a,d))!==b){try{j[c]=d}catch(l){}}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get" in g&&(e=g.get(a,!0,d))!==b){return e}if(bz){return bz(a,c)}},swap:function(a,b,c){var d={};for(var e in b){d[e]=a.style[e],a.style[e]=b[e]}c.call(a);for(e in b){a.style[e]=d[e]}}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0){return bC(a,b,d)}f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b)){return b}b=parseFloat(b);if(b>=0){return b+"px"}}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter){return}}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return !f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS){return bS.apply(this,arguments)}if(!this.length){return this}var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified")){f.lastModified[k]=y}if(z=v.getResponseHeader("Etag")){f.etag[k]=z}}if(a===304){w="notmodified",o=!0}else{try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}}else{u=w;if(!w||a){w="error",a<0&&(a=0)}}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n)){o[c[1].toLowerCase()]=c[2]}}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2){for(b in a){j[b]=[j[b],a[b]]}}else{b=a[v.status],v.then(b,b)}}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2){return !1}t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers){v.setRequestHeader(u,d.headers[u])}if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return !1}for(u in {success:1,error:1,complete:1}){v[u](d[u])}p=b$(bU,d,c,v);if(!p){w(-1,"No Transport")}else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2){w(-1,z)}else{throw z}}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a)){f.each(a,function(){e(this.name,this.value)})}else{for(var g in a){ca(g,a[g],c,e)}}return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState)){d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")}},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch){ch[a](0,1)}}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return !this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials" in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields){for(j in c.xhrFields){h[j]=c.xhrFields[j]}}c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e){h.setRequestHeader(j,e[j])}}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e){h.readyState!==4&&h.abort()}else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0){return this.animate(cu("show",3),a,b,c)}for(var g=0,h=this.length;g<h;g++){d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)))}for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none"){d.style.display=f._data(d,"olddisplay")||""}}}return this},hide:function(a,b,c){if(a||a===0){return this.animate(cu("hide",3),a,b,c)}var d,e,g=0,h=this.length;for(;g<h;g++){d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e))}for(g=0;g<h;g++){this[g].style&&(this[g].style.display="none")}return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d){return b.complete.call(this)}c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a){j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""))}return !0}var e=f.speed(b,c,d);if(f.isEmptyObject(a)){return this.each(e.complete,[!1])}a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null){for(b in g){g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b)}}else{g[b=a+".run"]&&g[b].stop&&h(this,g,b)}for(b=e.length;b--;){e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1))}(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0){d.queue="fx"}d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+0.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties){i.animatedProperties[b]!==!0&&(g=!1)}if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show){for(b in i.animatedProperties){f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0)}}d=i.complete,d&&(i.complete=!1,d.call(h))}return !1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return !0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++){a=b[c],!a()&&b[c]===a&&b.splice(c--,1)}b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect" in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a){return this.each(function(b){f.offset.setOffset(this,a,b)})}if(!b||!b.ownerDocument){return null}if(b===b.ownerDocument.body){return f.offset.bodyOffset(b)}try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b)){return c?{top:c.top,left:c.left}:{top:0,left:0}}var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a){return this.each(function(b){f.offset.setOffset(this,a,b)})}if(!b||!b.ownerDocument){return null}if(b===b.ownerDocument.body){return f.offset.bodyOffset(b)}var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed"){break}c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static"){l+=i.offsetTop,m+=i.offsetLeft}f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using" in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0]){return null}var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static"){a=a.offsetParent}return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e){return null}g=cy(e);return g?"pageXOffset" in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e){return a==null?null:this}if(f.isFunction(a)){return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))})}if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9){return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c])}if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);(function(a){a("a[data-reveal-id]").live("click",function(c){c.preventDefault();var b=a(this).attr("data-reveal-id");a("#"+b).reveal(a(this).data())});a.fn.reveal=function(b){var c={animation:"fadeAndPop",animationSpeed:300,closeOnBackgroundClick:true,dismissModalClass:"close-reveal-modal"};var b=a.extend({},c,b);return this.each(function(){var l=a(this),g=parseInt(l.css("top")),i=l.height()+g,h=false,e=a(".reveal-modal-bg");if(e.length==0){e=a('<div class="reveal-modal-bg" />').insertAfter(l);e.fadeTo("fast",0.8)}function k(){e.unbind("click.modalEvent");a("."+b.dismissModalClass).unbind("click.modalEvent");if(!h){m();if(b.animation=="fadeAndPop"){l.css({top:a(document).scrollTop()-i,opacity:0,visibility:"visible"});e.fadeIn(b.animationSpeed/2);l.delay(b.animationSpeed/2).animate({top:a(document).scrollTop()+g+"px",opacity:1},b.animationSpeed,j)}if(b.animation=="fade"){l.css({opacity:0,visibility:"visible",top:a(document).scrollTop()+g});e.fadeIn(b.animationSpeed/2);l.delay(b.animationSpeed/2).animate({opacity:1},b.animationSpeed,j)}if(b.animation=="none"){l.css({visibility:"visible",top:a(document).scrollTop()+g});e.css({display:"block"});j()}}l.unbind("reveal:open",k)}l.bind("reveal:open",k);function f(){if(!h){m();if(b.animation=="fadeAndPop"){e.delay(b.animationSpeed).fadeOut(b.animationSpeed);l.animate({top:a(document).scrollTop()-i+"px",opacity:0},b.animationSpeed/2,function(){l.css({top:g,opacity:1,visibility:"hidden"});j()})}if(b.animation=="fade"){e.delay(b.animationSpeed).fadeOut(b.animationSpeed);l.animate({opacity:0},b.animationSpeed,function(){l.css({opacity:1,visibility:"hidden",top:g});j()})}if(b.animation=="none"){l.css({visibility:"hidden",top:g});e.css({display:"none"})}}l.unbind("reveal:close",f)}l.bind("reveal:close",f);l.trigger("reveal:open");var d=a("."+b.dismissModalClass).bind("click.modalEvent",function(){l.trigger("reveal:close")});if(b.closeOnBackgroundClick){e.css({cursor:"pointer"});e.bind("click.modalEvent",function(){l.trigger("reveal:close")})}a("body").keyup(function(n){if(n.which===27){l.trigger("reveal:close")}});function j(){h=false}function m(){h=true}})}})(jQuery);(function(b){var a={defaults:{animation:"horizontal-push",animationSpeed:600,timer:true,advanceSpeed:4000,pauseOnHover:false,startClockOnMouseOut:false,startClockOnMouseOutAfter:1000,directionalNav:true,captions:true,captionAnimation:"fade",captionAnimationSpeed:600,bullets:false,bulletThumbs:false,bulletThumbLocation:"",afterSlideChange:b.noop,fluid:true,centerBullets:true},activeSlide:0,numberSlides:0,orbitWidth:null,orbitHeight:null,locked:null,timerRunning:null,degrees:0,wrapperHTML:'<div class="orbit-wrapper" />',timerHTML:'<div class="timer"><span class="mask"><span class="rotator"></span></span><span class="pause"></span></div>',captionHTML:'<div class="orbit-caption"></div>',directionalNavHTML:'<div class="slider-nav"><span class="right">Right</span><span class="left">Left</span></div>',bulletHTML:'<ul class="orbit-bullets"></ul>',init:function(f,e){var c,g=0,d=this;this.clickTimer=b.proxy(this.clickTimer,this);this.addBullet=b.proxy(this.addBullet,this);this.resetAndUnlock=b.proxy(this.resetAndUnlock,this);this.stopClock=b.proxy(this.stopClock,this);this.startTimerAfterMouseLeave=b.proxy(this.startTimerAfterMouseLeave,this);this.clearClockMouseLeaveTimer=b.proxy(this.clearClockMouseLeaveTimer,this);this.rotateTimer=b.proxy(this.rotateTimer,this);this.options=b.extend({},this.defaults,e);if(this.options.timer==="false"){this.options.timer=false}if(this.options.captions==="false"){this.options.captions=false}if(this.options.directionalNav==="false"){this.options.directionalNav=false}this.$element=b(f);this.$wrapper=this.$element.wrap(this.wrapperHTML).parent();this.$slides=this.$element.children("img, a, div");this.$element.bind("orbit.next",function(){d.shift("next")});this.$element.bind("orbit.prev",function(){d.shift("prev")});this.$element.bind("orbit.goto",function(i,h){d.shift(h)});this.$element.bind("orbit.start",function(i,h){d.startClock()});this.$element.bind("orbit.stop",function(i,h){d.stopClock()});c=this.$slides.filter("img");if(c.length===0){this.loaded()}else{c.bind("imageready",function(){g+=1;if(g===c.length){d.loaded()}})}},loaded:function(){this.$element.addClass("orbit").css({width:"1px",height:"1px"});this.setDimentionsFromLargestSlide();this.updateOptionsIfOnlyOneSlide();this.setupFirstSlide();if(this.options.timer){this.setupTimer();this.startClock()}if(this.options.captions){this.setupCaptions()}if(this.options.directionalNav){this.setupDirectionalNav()}if(this.options.bullets){this.setupBulletNav();this.setActiveBullet()}},currentSlide:function(){return this.$slides.eq(this.activeSlide)},setDimentionsFromLargestSlide:function(){var d=this,c;d.$element.add(d.$wrapper).width(this.$slides.first().width());d.$element.add(d.$wrapper).height(this.$slides.first().height());d.orbitWidth=this.$slides.first().width();d.orbitHeight=this.$slides.first().height();c=this.$slides.first().clone();this.$slides.each(function(){var e=b(this),g=e.width(),f=e.height();if(g>d.$element.width()){d.$element.add(d.$wrapper).width(g);d.orbitWidth=d.$element.width()}if(f>d.$element.height()){d.$element.add(d.$wrapper).height(f);d.orbitHeight=d.$element.height();c=b(this).clone()}d.numberSlides+=1});if(this.options.fluid){if(typeof this.options.fluid==="string"){c=b('<img src="http://placehold.it/'+this.options.fluid+'" />')}d.$element.prepend(c);c.addClass("fluid-placeholder");d.$element.add(d.$wrapper).css({width:"inherit"});d.$element.add(d.$wrapper).css({height:"inherit"});b(window).bind("resize",function(){d.orbitWidth=d.$element.width();d.orbitHeight=d.$element.height()})}},lock:function(){this.locked=true},unlock:function(){this.locked=false},updateOptionsIfOnlyOneSlide:function(){if(this.$slides.length===1){this.options.directionalNav=false;this.options.timer=false;this.options.bullets=false}},setupFirstSlide:function(){var c=this;this.$slides.first().css({"z-index":3}).fadeIn(function(){c.$slides.css({display:"block"})})},startClock:function(){var c=this;if(!this.options.timer){return false}if(this.$timer.is(":hidden")){this.clock=setInterval(function(){this.$element.trigger("orbit.next")},this.options.advanceSpeed)}else{this.timerRunning=true;this.$pause.removeClass("active");this.clock=setInterval(this.rotateTimer,this.options.advanceSpeed/180)}},rotateTimer:function(){var c="rotate("+this.degrees+"deg)";this.degrees+=2;this.$rotator.css({"-webkit-transform":c,"-moz-transform":c,"-o-transform":c});if(this.degrees>180){this.$rotator.addClass("move");this.$mask.addClass("move")}if(this.degrees>360){this.$rotator.removeClass("move");this.$mask.removeClass("move");this.degrees=0;this.$element.trigger("orbit.next")}},stopClock:function(){if(!this.options.timer){return false}else{this.timerRunning=false;clearInterval(this.clock);this.$pause.addClass("active")}},setupTimer:function(){this.$timer=b(this.timerHTML);this.$wrapper.append(this.$timer);this.$rotator=this.$timer.find(".rotator");this.$mask=this.$timer.find(".mask");this.$pause=this.$timer.find(".pause");this.$timer.click(this.clickTimer);if(this.options.startClockOnMouseOut){this.$wrapper.mouseleave(this.startTimerAfterMouseLeave);this.$wrapper.mouseenter(this.clearClockMouseLeaveTimer)}if(this.options.pauseOnHover){this.$wrapper.mouseenter(this.stopClock)}},startTimerAfterMouseLeave:function(){var c=this;this.outTimer=setTimeout(function(){if(!c.timerRunning){c.startClock()}},this.options.startClockOnMouseOutAfter)},clearClockMouseLeaveTimer:function(){clearTimeout(this.outTimer)},clickTimer:function(){if(!this.timerRunning){this.startClock()}else{this.stopClock()}},setupCaptions:function(){this.$caption=b(this.captionHTML);this.$wrapper.append(this.$caption);this.setCaption()},setCaption:function(){var d=this.currentSlide().attr("data-caption"),c;if(!this.options.captions){return false}if(d){c=b(d).html();this.$caption.attr("id",d).html(c);switch(this.options.captionAnimation){case"none":this.$caption.show();break;case"fade":this.$caption.fadeIn(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideDown(this.options.captionAnimationSpeed);break}}else{switch(this.options.captionAnimation){case"none":this.$caption.hide();break;case"fade":this.$caption.fadeOut(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideUp(this.options.captionAnimationSpeed);break}}},setupDirectionalNav:function(){var c=this;this.$wrapper.append(this.directionalNavHTML);this.$wrapper.find(".left").click(function(){c.stopClock();c.$element.trigger("orbit.prev")});this.$wrapper.find(".right").click(function(){c.stopClock();c.$element.trigger("orbit.next")})},setupBulletNav:function(){this.$bullets=b(this.bulletHTML);this.$wrapper.append(this.$bullets);this.$slides.each(this.addBullet);this.$element.addClass("with-bullets");if(this.options.centerBullets){this.$bullets.css("margin-left",-this.$bullets.width()/2)}},addBullet:function(g,e){var d=g+1,h=b("<li>"+(d)+"</li>"),c,f=this;if(this.options.bulletThumbs){c=b(e).attr("data-thumb");if(c){h.addClass("has-thumb").css({background:"url("+this.options.bulletThumbLocation+c+") no-repeat"})}}this.$bullets.append(h);h.data("index",g);h.click(function(){f.stopClock();f.$element.trigger("orbit.goto",[h.data("index")])})},setActiveBullet:function(){if(!this.options.bullets){return false}else{this.$bullets.find("li").removeClass("active").eq(this.activeSlide).addClass("active")}},resetAndUnlock:function(){this.$slides.eq(this.prevActiveSlide).css({"z-index":1});this.unlock();this.options.afterSlideChange.call(this,this.$slides.eq(this.prevActiveSlide),this.$slides.eq(this.activeSlide))},shift:function(d){var c=d;this.prevActiveSlide=this.activeSlide;if(this.prevActiveSlide==c){return false}if(this.$slides.length=="1"){return false}if(!this.locked){this.lock();if(d=="next"){this.activeSlide++;if(this.activeSlide==this.numberSlides){this.activeSlide=0}}else{if(d=="prev"){this.activeSlide--;if(this.activeSlide<0){this.activeSlide=this.numberSlides-1}}else{this.activeSlide=d;if(this.prevActiveSlide<this.activeSlide){c="next"}else{if(this.prevActiveSlide>this.activeSlide){c="prev"}}}}this.setActiveBullet();this.$slides.eq(this.prevActiveSlide).css({"z-index":2});if(this.options.animation=="fade"){this.$slides.eq(this.activeSlide).css({opacity:0,"z-index":3}).animate({opacity:1},this.options.animationSpeed,this.resetAndUnlock)}if(this.options.animation=="horizontal-slide"){if(c=="next"){this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).animate({left:0},this.options.animationSpeed,this.resetAndUnlock)}if(c=="prev"){this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).animate({left:0},this.options.animationSpeed,this.resetAndUnlock)}}if(this.options.animation=="vertical-slide"){if(c=="prev"){this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).animate({top:0},this.options.animationSpeed,this.resetAndUnlock)}if(c=="next"){this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).animate({top:0},this.options.animationSpeed,this.resetAndUnlock)}}if(this.options.animation=="horizontal-push"){if(c=="next"){this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).animate({left:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({left:-this.orbitWidth},this.options.animationSpeed)}if(c=="prev"){this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).animate({left:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({left:this.orbitWidth},this.options.animationSpeed)}}if(this.options.animation=="vertical-push"){if(c=="next"){this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).animate({top:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({top:this.orbitHeight},this.options.animationSpeed)}if(c=="prev"){this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).animate({top:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({top:-this.orbitHeight},this.options.animationSpeed)}}this.setCaption()}}};b.fn.orbit=function(c){return this.each(function(){var d=b.extend({},a);d.init(this,c)})}})(jQuery);
-/*!
- * jQuery imageready Plugin
- * http://www.zurb.com/playground/
- *
- * Copyright 2011, ZURB
- * Released under the MIT License
- */
-(function(c){var b={};c.event.special.imageready={setup:function(f,e,d){b=f||b},add:function(d){var e=c(this),f;if(this.nodeType===1&&this.tagName.toLowerCase()==="img"&&this.src!==""){if(b.forceLoad){f=e.attr("src");e.attr("src","");a(this,d.handler);e.attr("src",f)}else{if(this.complete||this.readyState===4){d.handler.apply(this,arguments)}else{a(this,d.handler)}}}},teardown:function(d){c(this).unbind(".imageready")}};function a(d,f){var e=c(d);e.bind("load.imageready",function(){f.apply(d,arguments);e.unbind("load.imageready")})}}(jQuery));new function(a){a.fn.placeholder=function(b){b=b||{};var j=b.dataKey||"placeholderValue";var f=b.attr||"placeholder";var h=b.className||"placeholder";var k=b.values||[];var c=b.blockSubmit||false;var e=b.blankSubmit||false;var g=b.onSubmit||false;var i=b.value||"";var d=b.cursor_position||0;return this.filter(":input").each(function(l){a.data(this,j,k[l]||a(this).attr(f))}).each(function(){if(a.trim(a(this).val())===""){a(this).addClass(h).val(a.data(this,j))}}).focus(function(){if(a.trim(a(this).val())===a.data(this,j)){a(this).removeClass(h).val(i)}if(a.fn.setCursorPosition){a(this).setCursorPosition(d)}}).blur(function(){if(a.trim(a(this).val())===i){a(this).addClass(h).val(a.data(this,j))}}).each(function(l,m){if(c){new function(n){a(n.form).submit(function(){return a.trim(a(n).val())!=a.data(n,j)})}(m)}else{if(e){new function(n){a(n.form).submit(function(){if(a.trim(a(n).val())==a.data(n,j)){a(n).removeClass(h).val("")}return true})}(m)}else{if(g){new function(n){a(n.form).submit(g)}(m)}}}})}}(jQuery);jQuery(document).ready(function(b){function a(c){b("form.custom input:"+c).each(function(){var e=b(this).hide(),d=e.next("span.custom."+c);if(d.length===0){d=b('<span class="custom '+c+'"></span>').insertAfter(e)}d.toggleClass("checked",e.is(":checked"))})}a("checkbox");a("radio");b("form.custom select").each(function(){var e=b(this),g=e.next("div.custom.dropdown"),c=e.find("option"),d=0,f;if(g.length===0){g=b('<div class="custom dropdown"><a href="#" class="selector"></a><ul></ul></div>"');c.each(function(){f=b("<li>"+b(this).html()+"</li>");g.find("ul").append(f)});g.prepend('<a href="#" class="current">'+c.first().html()+"</a>");e.after(g);e.hide()}c.each(function(h){if(this.selected){g.find("li").eq(h).addClass("selected");g.find(".current").html(b(this).html())}});g.find("li").each(function(){g.addClass("open");if(b(this).outerWidth()>d){d=b(this).outerWidth()}g.removeClass("open")});g.css("width",d+18+"px");g.find("ul").css("width",d+16+"px")})});(function(b){function a(d){var f=d.prev(),e=f[0];e.checked=((e.checked)?false:true);d.toggleClass("checked");f.trigger("change")}function c(d){var f=d.prev(),e=f[0];b('input:radio[name="'+f.attr("name")+'"]').each(function(){b(this).next().removeClass("checked")});e.checked=((e.checked)?false:true);d.toggleClass("checked");f.trigger("change")}b(document).on("click","form.custom span.custom.checkbox",function(d){d.preventDefault();d.stopPropagation();a(b(this))});b(document).on("click","form.custom span.custom.radio",function(d){d.preventDefault();d.stopPropagation();c(b(this))});b(document).on("click","form.custom label",function(e){var d=b("#"+b(this).attr("for")),g,f;if(d.length!==0){if(d.attr("type")==="checkbox"){e.preventDefault();g=b(this).find("span.custom.checkbox");a(g)}else{if(d.attr("type")==="radio"){e.preventDefault();f=b(this).find("span.custom.radio");c(f)}}}});b(document).on("click","form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector",function(d){var f=b(this),e=f.closest("div.custom.dropdown");d.preventDefault();e.toggleClass("open");if(e.hasClass("open")){b(document).bind("click.customdropdown",function(g){e.removeClass("open");b(document).unbind(".customdropdown")})}else{b(document).unbind(".customdropdown")}});b(document).on("click","form.custom div.custom.dropdown li",function(g){var h=b(this),e=h.closest("div.custom.dropdown"),f=e.prev(),d=0;g.preventDefault();g.stopPropagation();h.closest("ul").find("li").removeClass("selected");h.addClass("selected");e.removeClass("open").find("a.current").html(h.html());h.closest("ul").find("li").each(function(i){if(h[0]==this){d=i}});f[0].selectedIndex=d;f.trigger("change")})})(jQuery);
-/*! http://mths.be/placeholder v1.8.5 by @mathias */
-(function(j,i,l){var k="placeholder" in i.createElement("input"),h="placeholder" in i.createElement("textarea");if(k&&h){l.fn.placeholder=function(){return this};l.fn.placeholder.input=l.fn.placeholder.textarea=true}else{l.fn.placeholder=function(){return this.filter((k?"textarea":":input")+"[placeholder]").bind("focus.placeholder",o).bind("blur.placeholder",m).trigger("blur.placeholder").end()};l.fn.placeholder.input=k;l.fn.placeholder.textarea=h;l(function(){l("form").bind("submit.placeholder",function(){var a=l(".placeholder",this).each(o);setTimeout(function(){a.each(m)},10)})});l(j).bind("unload.placeholder",function(){l(".placeholder").val("")})}function n(b){var c={},a=/^jQuery\d+$/;l.each(b.attributes,function(d,e){if(e.specified&&!a.test(e.name)){c[e.name]=e.value}});return c}function o(){var a=l(this);if(a.val()===a.attr("placeholder")&&a.hasClass("placeholder")){if(a.data("placeholder-password")){a.hide().next().show().focus().attr("id",a.removeAttr("id").data("placeholder-id"))}else{a.val("").removeClass("placeholder")}}}function m(){var a,b=l(this),e=b,c=this.id;if(b.val()===""){if(b.is(":password")){if(!b.data("placeholder-textinput")){try{a=b.clone().attr({type:"text"})}catch(d){a=l("<input>").attr(l.extend(n(this),{type:"text"}))}a.removeAttr("name").data("placeholder-password",true).data("placeholder-id",c).bind("focus.placeholder",o);b.data("placeholder-textinput",a).data("placeholder-id",c).before(a)}b=b.removeAttr("id").hide().prev().attr("id",c).show()}b.addClass("placeholder").val(b.attr("placeholder"))}else{b.removeClass("placeholder")}}}(this,document,jQuery));
 

directory:a/javascripts/sigma (deleted)
--- a/javascripts/sigma
+++ /dev/null

--- a/javascripts/sigma.min.js
+++ /dev/null
@@ -1,3552 +1,1 @@
-// Define packages:
-var sigma = {};
-sigma.tools = {};
-sigma.classes = {};
-sigma.instances = {};
 
-// Adding Array helpers, if not present yet:
-(function() {
-  if (!Array.prototype.some) {
-    Array.prototype.some = function(fun /*, thisp*/) {
-      var len = this.length;
-      if (typeof fun != 'function') {
-        throw new TypeError();
-      }
-
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++) {
-        if (i in this &&
-            fun.call(thisp, this[i], i, this)) {
-          return true;
-        }
-      }
-
-      return false;
-    };
-  }
-
-  if (!Array.prototype.forEach) {
-    Array.prototype.forEach = function(fun /*, thisp*/) {
-      var len = this.length;
-      if (typeof fun != 'function') {
-        throw new TypeError();
-      }
-
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++) {
-        if (i in this) {
-          fun.call(thisp, this[i], i, this);
-        }
-      }
-    };
-  }
-
-  if (!Array.prototype.map) {
-    Array.prototype.map = function(fun /*, thisp*/) {
-      var len = this.length;
-      if (typeof fun != 'function') {
-        throw new TypeError();
-      }
-
-      var res = new Array(len);
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++) {
-        if (i in this) {
-          res[i] = fun.call(thisp, this[i], i, this);
-        }
-      }
-
-      return res;
-    };
-  }
-
-  if (!Array.prototype.filter) {
-    Array.prototype.filter = function(fun /*, thisp*/) {
-      var len = this.length;
-      if (typeof fun != 'function')
-        throw new TypeError();
-
-      var res = new Array();
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++) {
-        if (i in this) {
-          var val = this[i]; // in case fun mutates this
-          if (fun.call(thisp, val, i, this)) {
-            res.push(val);
-          }
-        }
-      }
-
-      return res;
-    };
-  }
-
-  if (!Object.keys) {
-    Object.keys = (function() {
-      var hasOwnProperty = Object.prototype.hasOwnProperty,
-          hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
-          dontEnums = [
-            'toString',
-            'toLocaleString',
-            'valueOf',
-            'hasOwnProperty',
-            'isPrototypeOf',
-            'propertyIsEnumerable',
-            'constructor'
-          ],
-          dontEnumsLength = dontEnums.length;
-
-      return function(obj) {
-        if (typeof obj !== 'object' &&
-            typeof obj !== 'function' ||
-            obj === null
-        ) {
-          throw new TypeError('Object.keys called on non-object');
-        }
-
-        var result = [];
-
-        for (var prop in obj) {
-          if (hasOwnProperty.call(obj, prop)) result.push(prop);
-        }
-
-        if (hasDontEnumBug) {
-          for (var i = 0; i < dontEnumsLength; i++) {
-            if (hasOwnProperty.call(obj, dontEnums[i])) {
-              result.push(dontEnums[i]);
-            }
-          }
-        }
-        return result;
-      }
-    })();
-  }
-})();
-
-/**
- * A jQuery like properties management class. It works like jQuery .css()
- * method: You can call it with juste one string to get the corresponding
- * property, with a string and anything else to set the corresponding property,
- * or directly with an object, and then each pair string / object (or any type)
- * will be set in the properties.
- * @constructor
- * @this {sigma.classes.Cascade}
- */
-sigma.classes.Cascade = function() {
-  /**
-   * This instance properties.
-   * @protected
-   * @type {Object}
-   */
-  this.p = {};
-
-  /**
-   * The method to use to set/get any property of this instance.
-   * @param  {(string|Object)} a1 If it is a string and if a2 is undefined,
-   *                              then it will return the corresponding
-   *                              property.
-   *                              If it is a string and if a2 is set, then it
-   *                              will set a2 as the property corresponding to
-   *                              a1, and return this.
-   *                              If it is an object, then each pair string /
-   *                              object (or any other type) will be set as a
-   *                              property.
-   * @param  {*?} a2              The new property corresponding to a1 if a1 is
-   *                              a string.
-   * @return {(*|sigma.classes.Cascade)} Returns itself or the corresponding
-   *                                     property.
-   */
-  this.config = function(a1, a2) {
-    if (typeof a1 == 'string' && a2 == undefined) {
-      return this.p[a1];
-    } else {
-      var o = (typeof a1 == 'object' && a2 == undefined) ? a1 : {};
-      if (typeof a1 == 'string') {
-        o[a1] = a2;
-      }
-
-      for (var k in o) {
-        if (this.p[k] != undefined) {
-          this.p[k] = o[k];
-        }
-      }
-      return this;
-    }
-  };
-};
-
-/**
- * sigma.js custom event dispatcher class.
- * @constructor
- * @this {sigma.classes.EventDispatcher}
- */
-sigma.classes.EventDispatcher = function() {
-  /**
-   * An object containing all the different handlers bound to one or many
-   * events, indexed by these events.
-   * @private
-   * @type {Object.<string,Object>}
-   */
-  var _h = {};
-
-  /**
-   * Represents "this", without the well-known scope issue.
-   * @private
-   * @type {sigma.classes.EventDispatcher}
-   */
-  var _self = this;
-
-  /**
-   * Will execute the handler the next (and only the next) time that the
-   * indicated event (or the indicated events) will be triggered.
-   * @param  {string} events            The name of the event (or the events
-   *                                    separated by spaces).
-   * @param  {function(Object)} handler The handler to bind.
-   * @return {sigma.classes.EventDispatcher} Returns itself.
-   */
-  function one(events, handler) {
-    if (!handler || !events) {
-      return _self;
-    }
-
-    var eArray = ((typeof events) == 'string') ? events.split(' ') : events;
-
-    eArray.forEach(function(event) {
-      if (!_h[event]) {
-        _h[event] = [];
-      }
-
-      _h[event].push({
-        'h': handler,
-        'one': true
-      });
-    });
-
-    return _self;
-  }
-
-  /**
-   * Will execute the handler everytime that the indicated event (or the
-   * indicated events) will be triggered.
-   * @param  {string} events            The name of the event (or the events
-   *                                    separated by spaces).
-   * @param  {function(Object)} handler The handler to bind.
-   * @return {sigma.classes.EventDispatcher} Returns itself.
-   */
-  function bind(events, handler) {
-    if (!handler || !events) {
-      return _self;
-    }
-
-    var eArray = ((typeof events) == 'string') ? events.split(' ') : events;
-
-    eArray.forEach(function(event) {
-      if (!_h[event]) {
-        _h[event] = [];
-      }
-
-      _h[event].push({
-        'h': handler,
-        'one': false
-      });
-    });
-
-    return _self;
-  }
-
-  /**
-   * Unbinds the handler from a specified event (or specified events).
-   * @param  {?string} events            The name of the event (or the events
-   *                                     separated by spaces). If undefined,
-   *                                     then all handlers are unbound.
-   * @param  {?function(Object)} handler The handler to unbind. If undefined,
-   *                                     each handler bound to the event or the
-   *                                     events will be unbound.
-   * @return {sigma.classes.EventDispatcher} Returns itself.
-   */
-  function unbind(events, handler) {
-    if (!events) {
-      _h = {};
-    }
-
-    var eArray = typeof events == 'string' ? events.split(' ') : events;
-
-    if (handler) {
-      eArray.forEach(function(event) {
-        if (_h[event]) {
-          _h[event] = _h[event].filter(function(e) {
-            return e['h'] != handler;
-          });
-        }
-
-        if (_h[event] && _h[event].length == 0) {
-          delete _h[event];
-        }
-      });
-    }else {
-      eArray.forEach(function(event) {
-        delete _h[event];
-      });
-    }
-
-    return _self;
-  }
-
-  /**
-   * Executes each handler bound to the event
-   * @param  {string} type     The type of the event.
-   * @param  {?Object} content The content of the event (optional).
-   * @return {sigma.classes.EventDispatcher} Returns itself.
-   */
-  function dispatch(type, content) {
-    if (_h[type]) {
-      _h[type].forEach(function(e) {
-        e['h']({
-          'type': type,
-          'content': content,
-          'target': _self
-        });
-      });
-
-      _h[type] = _h[type].filter(function(e) {
-        return !e['one'];
-      });
-    }
-
-    return _self;
-  }
-
-  /* PUBLIC INTERFACE: */
-  this.one = one;
-  this.bind = bind;
-  this.unbind = unbind;
-  this.dispatch = dispatch;
-};
-
-(function() {
-// Define local shortcut:
-var id = 0;
-
-// Define local package:
-var local = {};
-local.plugins = [];
-
-sigma.init = function(dom) {
-  var inst = new Sigma(dom, (++id).toString());
-  sigma.instances[id] = new SigmaPublic(inst);
-  return sigma.instances[id];
-};
-
-/**
- * This class listen to all the different mouse events, to normalize them and
- * dispatch action events instead (from "startinterpolate" to "isdragging",
- * etc).
- * @constructor
- * @extends sigma.classes.Cascade
- * @extends sigma.classes.EventDispatcher
- * @param {element} dom The DOM element to bind the handlers on.
- * @this {MouseCaptor}
- */
-function MouseCaptor(dom) {
-  sigma.classes.Cascade.call(this);
-  sigma.classes.EventDispatcher.call(this);
-
-  /**
-   * Represents "this", without the well-known scope issue.
-   * @private
-   * @type {MouseCaptor}
-   */
-  var self = this;
-
-  /**
-   * The DOM element to bind the handlers on.
-   * @type {element}
-   */
-  var dom = dom;
-
-  /**
-   * The different parameters that define how this instance should work.
-   * @see sigma.classes.Cascade
-   * @type {Object}
-   */
-  this.p = {
-    minRatio: 1,
-    maxRatio: 32,
-    marginRatio: 1,
-    zoomDelta: 0.1,
-    dragDelta: 0.3,
-    zoomMultiply: 2,
-    directZooming: false,
-    blockScroll: true,
-    inertia: 1.1,
-    mouseEnabled: true
-  };
-
-  var oldMouseX = 0;
-  var oldMouseY = 0;
-  var startX = 0;
-  var startY = 0;
-
-  var oldStageX = 0;
-  var oldStageY = 0;
-  var oldRatio = 1;
-
-  var targetRatio = 1;
-  var targetStageX = 0;
-  var targetStageY = 0;
-
-  var lastStageX = 0;
-  var lastStageX2 = 0;
-  var lastStageY = 0;
-  var lastStageY2 = 0;
-
-  var progress = 0;
-  var isZooming = false;
-
-  this.stageX = 0;
-  this.stageY = 0;
-  this.ratio = 1;
-
-  this.mouseX = 0;
-  this.mouseY = 0;
-
-  this.isMouseDown = false;
-
-  /**
-   * Extract the local X position from a mouse event.
-   * @private
-   * @param  {event} e A mouse event.
-   * @return {number} The local X value of the mouse.
-   */
-  function getX(e) {
-    return e.offsetX != undefined && e.offsetX ||
-           e.layerX != undefined && e.layerX ||
-           e.clientX != undefined && e.clientX;
-  };
-
-  /**
-   * Extract the local Y position from a mouse event.
-   * @private
-   * @param  {event} e A mouse event.
-   * @return {number} The local Y value of the mouse.
-   */
-  function getY(e) {
-    return e.offsetY != undefined && e.offsetY ||
-           e.layerY != undefined && e.layerY ||
-           e.clientY != undefined && e.clientY;
-  };
-
-  /**
-   * Extract the wheel delta from a mouse event.
-   * @private
-   * @param  {event} e A mouse event.
-   * @return {number} The wheel delta of the mouse.
-   */
-  function getDelta(e) {
-    return e.wheelDelta != undefined && e.wheelDelta ||
-           e.detail != undefined && -e.detail;
-  };
-
-  /**
-   * The handler listening to the 'move' mouse event. It will set the mouseX
-   * and mouseY values as the mouse position values, prevent the default event,
-   * and dispatch a 'move' event.
-   * @private
-   * @param  {event} event A 'move' mouse event.
-   */
-  function moveHandler(event) {
-    oldMouseX = self.mouseX;
-    oldMouseY = self.mouseY;
-
-    self.mouseX = getX(event);
-    self.mouseY = getY(event);
-
-    self.isMouseDown && drag(event);
-    self.dispatch('move');
-
-    if (event.preventDefault) {
-      event.preventDefault();
-    } else {
-      event.returnValue = false;
-    }
-  };
-
-  /**
-   * The handler listening to the 'up' mouse event. It will set the isMouseDown
-   * value as false, dispatch a 'mouseup' event, and trigger stopDrag().
-   * @private
-   * @param  {event} event A 'up' mouse event.
-   */
-  function upHandler(event) {
-    if (self.p.mouseEnabled && self.isMouseDown) {
-      self.isMouseDown = false;
-      self.dispatch('mouseup');
-      stopDrag();
-
-      if (event.preventDefault) {
-        event.preventDefault();
-      } else {
-        event.returnValue = false;
-      }
-    }
-  };
-
-  /**
-   * The handler listening to the 'down' mouse event. It will set the
-   * isMouseDown value as true, dispatch a 'mousedown' event, and trigger
-   * startDrag().
-   * @private
-   * @param  {event} event A 'down' mouse event.
-   */
-  function downHandler(event) {
-    if (self.p.mouseEnabled) {
-      self.isMouseDown = true;
-      oldMouseX = self.mouseX;
-      oldMouseY = self.mouseY;
-
-      self.dispatch('mousedown');
-
-      startDrag();
-
-      if (event.preventDefault) {
-        event.preventDefault();
-      } else {
-        event.returnValue = false;
-      }
-    }
-  };
-
-  /**
-   * The handler listening to the 'wheel' mouse event. It will trigger
-   * {@link startInterpolate} with the event delta as parameter.
-   * @private
-   * @param  {event} event A 'wheel' mouse event.
-   */
-  function wheelHandler(event) {
-    if (self.p.mouseEnabled) {
-      startInterpolate(
-        self.mouseX,
-        self.mouseY,
-        self.ratio * (getDelta(event) > 0 ?
-          self.p.zoomMultiply :
-          1 / self.p.zoomMultiply)
-      );
-
-      if (self.p['blockScroll']) {
-        if (event.preventDefault) {
-          event.preventDefault();
-        } else {
-          event.returnValue = false;
-        }
-      }
-    }
-  };
-
-  /**
-   * Will start computing the scene X and Y, until {@link stopDrag} is
-   * triggered.
-   */
-  function startDrag() {
-    oldStageX = self.stageX;
-    oldStageY = self.stageY;
-    startX = self.mouseX;
-    startY = self.mouseY;
-
-    lastStageX = self.stageX;
-    lastStageX2 = self.stageX;
-    lastStageY = self.stageY;
-    lastStageY2 = self.stageY;
-
-    self.dispatch('startdrag');
-  };
-
-  /**
-   * Stops computing the scene position.
-   */
-  function stopDrag() {
-    if (oldStageX != self.stageX || oldStageY != self.stageY) {
-      startInterpolate(
-        self.stageX + self.p.inertia * (self.stageX - lastStageX2),
-        self.stageY + self.p.inertia * (self.stageY - lastStageY2)
-      );
-    }
-  };
-
-  /**
-   * Computes the position of the scene, relatively to the mouse position, and
-   * dispatches a "drag" event.
-   */
-  function drag() {
-    var newStageX = self.mouseX - startX + oldStageX;
-    var newStageY = self.mouseY - startY + oldStageY;
-
-    if (newStageX != self.stageX || newStageY != self.stageY) {
-      lastStageX2 = lastStageX;
-      lastStageY2 = lastStageY;
-
-      lastStageX = newStageX;
-      lastStageY = newStageY;
-
-      self.stageX = newStageX;
-      self.stageY = newStageY;
-      self.dispatch('drag');
-    }
-  };
-
-  /**
-   * Will start computing the scene zoom ratio, until {@link stopInterpolate} is
-   * triggered.
-   * @param {number} x     The new stage X.
-   * @param {number} y     The new stage Y.
-   * @param {number} ratio The new zoom ratio.
-   */
-  function startInterpolate(x, y, ratio) {
-    if (self.isMouseDown) {
-      return;
-    }
-
-    window.clearInterval(self.interpolationID);
-    isZooming = ratio != undefined;
-
-    oldStageX = self.stageX;
-    targetStageX = x;
-
-    oldStageY = self.stageY;
-    targetStageY = y;
-
-    oldRatio = self.ratio;
-    targetRatio = ratio || self.ratio;
-    targetRatio = Math.min(
-      Math.max(targetRatio, self.p.minRatio),
-      self.p.maxRatio
-    );
-
-    progress =
-      self.p.directZooming ?
-      1 - (isZooming ? self.p.zoomDelta : self.p.dragDelta) :
-      0;
-
-    if (
-      self.ratio != targetRatio ||
-      self.stageX != targetStageX ||
-      self.stageY != targetStageY
-    ) {
-      interpolate();
-      self.interpolationID = window.setInterval(interpolate, 50);
-      self.dispatch('startinterpolate');
-    }
-  };
-
-  /**
-   * Stops the move interpolation.
-   */
-  function stopInterpolate() {
-    var oldRatio = self.ratio;
-
-    if (isZooming) {
-      self.ratio = targetRatio;
-      self.stageX = targetStageX +
-                    (self.stageX - targetStageX) *
-                    self.ratio /
-                    oldRatio;
-      self.stageY = targetStageY +
-                    (self.stageY - targetStageY) *
-                    self.ratio /
-                    oldRatio;
-    }else {
-      self.stageX = targetStageX;
-      self.stageY = targetStageY;
-    }
-
-    self.dispatch('stopinterpolate');
-  };
-
-  /**
-   * Computes the interpolate ratio and the position of the scene, relatively
-   * to the last mouse event delta received, and dispatches a "interpolate"
-   * event.
-   */
-  function interpolate() {
-    progress += (isZooming ? self.p.zoomDelta : self.p.dragDelta);
-    progress = Math.min(progress, 1);
-
-    var k = sigma.easing.quadratic.easeout(progress);
-    var oldRatio = self.ratio;
-
-    self.ratio = oldRatio * (1 - k) + targetRatio * k;
-
-    if (isZooming) {
-      self.stageX = targetStageX +
-                    (self.stageX - targetStageX) *
-                    self.ratio /
-                    oldRatio;
-
-      self.stageY = targetStageY +
-                    (self.stageY - targetStageY) *
-                    self.ratio /
-                    oldRatio;
-    } else {
-      self.stageX = oldStageX * (1 - k) + targetStageX * k;
-      self.stageY = oldStageY * (1 - k) + targetStageY * k;
-    }
-
-    self.dispatch('interpolate');
-    if (progress >= 1) {
-      window.clearInterval(self.interpolationID);
-      stopInterpolate();
-    }
-  };
-
-  /**
-   * Checks that there is always a part of the graph that is displayed, to
-   * avoid the user to drag the graph out of the stage.
-   * @param  {Object} b      An object containing the borders of the graph.
-   * @param  {number} width  The width of the stage.
-   * @param  {number} height The height of the stage.
-   * @return {MouseCaptor} Returns itself.
-   */
-  function checkBorders(b, width, height) {
-    // TODO : Find the good formula
-    /*if (!isNaN(b.minX) && !isNaN(b.maxX)) {
-      self.stageX = Math.min(
-        self.stageX = Math.max(
-          self.stageX,
-          (b.minX - width) * self.ratio +
-            self.p.marginRatio*(b.maxX - b.minX)
-        ),
-        (b.maxX - width) * self.ratio +
-          width -
-          self.p.marginRatio*(b.maxX - b.minX)
-      );
-    }
-
-    if (!isNaN(b.minY) && !isNaN(b.maxY)) {
-      self.stageY = Math.min(
-        self.stageY = Math.max(
-          self.stageY,
-          (b.minY - height) * self.ratio +
-            self.p.marginRatio*(b.maxY - b.minY)
-        ),
-        (b.maxY - height) * self.ratio +
-          height -
-          self.p.marginRatio*(b.maxY - b.minY)
-      );
-    }*/
-
-    return self;
-  };
-
-  // ADD CALLBACKS
-  dom.addEventListener('DOMMouseScroll', wheelHandler, true);
-  dom.addEventListener('mousewheel', wheelHandler, true);
-  dom.addEventListener('mousemove', moveHandler, true);
-  dom.addEventListener('mousedown', downHandler, true);
-  document.addEventListener('mouseup', upHandler, true);
-
-  this.checkBorders = checkBorders;
-  this.interpolate = startInterpolate;
-}
-
-/**
- * A class to monitor some local / global probes directly on an instance,
- * inside a div DOM element.
- * It executes different methods (called "probes") regularly, and displays
- * the results on the element.
- * @constructor
- * @extends sigma.classes.Cascade
- * @param {Sigma} instance The instance to monitor.
- * @param {element} dom    The div DOM element to draw write on.
- * @this {Monitor}
- */
-function Monitor(instance, dom) {
-  sigma.classes.Cascade.call(this);
-
-  /**
-   * Represents "this", without the well-known scope issue.
-   * @private
-   * @type {Monitor}
-   */
-  var self = this;
-
-  /**
-   * {@link Sigma} instance owning this Monitor instance.
-   * @type {Sigma}
-   */
-  this.instance = instance;
-
-  /**
-   * Determines if the monitoring is activated or not.
-   * @type {Boolean}
-   */
-  this.monitoring = false;
-
-  /**
-   * The different parameters that define how this instance should work. It
-   * also contains the different probes.
-   * @see sigma.classes.Cascade
-   * @type {Object}
-   */
-  this.p = {
-    fps: 40,
-    dom: dom,
-    globalProbes: {
-      'Time (ms)': sigma.chronos.getExecutionTime,
-      'Queue': sigma.chronos.getQueuedTasksCount,
-      'Tasks': sigma.chronos.getTasksCount,
-      'FPS': sigma.chronos.getFPS
-    },
-    localProbes: {
-      'Nodes count': function() { return self.instance.graph.nodes.length; },
-      'Edges count': function() { return self.instance.graph.edges.length; }
-    }
-  };
-
-  /**
-   * Activates the monitoring: Some texts describing some values about sigma.js