Remove crazyivan test cruft.
authorGregg Kellogg <gregg@kellogg-assoc.com>
Wed, 04 Jan 2012 16:09:22 -0800
changeset 311 6fc868a50cea
parent 310 3b669cefb5c1
child 312 a5905a24b297
Remove crazyivan test cruft.
test-suite/check-test
test-suite/crazyivan.js
test-suite/crazyivan.py
test-suite/css/screen.css
test-suite/git-update
test-suite/jquery-1.4.2.min.js
test-suite/manifest.ttl
test-suite/retrieve-tests
test-suite/sparql-query
test-suite/test-cases
test-suite/test-details
--- a/test-suite/check-test	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-crazyivan.py
\ No newline at end of file
--- a/test-suite/crazyivan.js	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,415 +0,0 @@
-/**
- * This Javascript file is used by the Crazy Ivan JSON-LD Test Harness
- * to process the entire test suite without requiring the developer to
- * leave the page.
- */
-
-/**
- * Sends an XML HTTP request to a given URL and calls a given callback
- * with the data.
- *
- * @param url the URL to call
- * @param callback the callback to call with the returned data.
- * @param postData the data to use when posting to the given URL.
- */
-function sendRequest(url, callback, callback_data)
-{
-   jQuery.get(url, function(data) { callback(data, callback_data); });
-}
-
-/**
- * Creates an XML HTTP Object based on the type of browser that the
- * client is using.
- */
-function createXMLHTTPObject()
-{
-   var xmlHttp;
-
-   // get the non-IE (non-ActiveX) version of the xml http object
-   // if the object hasn't been acquired yet
-   if(xmlHttp == null && typeof XMLHttpRequest !== 'undefined')
-   {
-      xmlHttp = new XMLHttpRequest();
-   }
-
-   return xmlHttp;
-}
-
-/**
- * Makes a call to retrieve all of the unit tests that are associated with the
- * selected test suite and status filter.
- */
-function retrieveUnitTests()
-{
-   // note the test cases are loading
-   document.getElementById('unit-tests').innerHTML = "<span style=\"font-size: 150%; font-weight: bold; color: #f00\">Test Cases are Loading...</span>";
-
-   // send the HTTP request to the crazy ivan web service
-   sendRequest('retrieve-tests', displayUnitTests)
-}
-
-/**
- * Displays all of the unit tests.
- *
- * @param req the HTTP request object.
- */
-function displayUnitTests(response, callbackData)
-{
-   document.getElementById('unit-tests').innerHTML = response;
-}
-
-/**
- * Performs a check of a unit test given the unit test number, source
- * test file and SPARQL test file.
- *
- * @param num the test case number
- * @param source_url the source test file to use.
- * @param sparql_url the SPARQL test query to use.
- * @param expected_result the expected result of the SPARQL query.
- */
-function checkUnitTest(num, source_url, sparql_url, expected_result)
-{
-   var jldExtractorUrl = getJldExtractorUrl();
-   var sparqlEngineUrl = getSparqlEngineUrl();
-   
-   document.getElementById('unit-test-status-' + num).innerHTML =
-      "CHECKING...";
-   sendRequest('check-test?id=' + num +
-               '&source=' + source_url +
-               '&sparql=' + sparql_url +
-               '&expected-result=' + expected_result +
-               '&jsonld-extractor=' + escape(jldExtractorUrl) +
-               '&sparql-engine=' + escape(sparqlEngineUrl),
-               displayUnitTestResult, num)
-}
-
-/**
- * Shows the details of a particular test case.
- *
- * @param num the unit test ID.
- * @param source_url the document to use for testing.
- * @param sparql_url the SPARQL test query to use.
- * @param jsonld_extractor_url the JSON-LD extractor web service URL.
- * @param n3_extractor_url the N3 extractor web service URL.
- */
-function showUnitTestDetails(num, source_url, sparql_url)
-{
-   var jldExtractorUrl = getJldExtractorUrl();
-   var n3ExtractorUrl = "http://www.w3.org/2007/08/pyRdfa/shadowextract?format=n3&uri=";
-
-   document.getElementById('unit-test-details-' + num).innerHTML =
-      "Retreiving information...";
-   sendRequest('test-details?id=' + num +
-               '&source=' + escape(source_url) +
-               '&sparql=' + escape(sparql_url) +
-               '&jsonld-extractor=' + escape(jldExtractorUrl) +
-               '&n3-extractor=' + escape(n3ExtractorUrl),
-               displayUnitTestDetailsResult, num)
-}
-
-/**
- * Hides the details of the unit test given
- *
- * @param num the unit test number to hide.
- */
-function hideUnitTestDetails(num)
-{
-   document.getElementById('unit-test-details-' + num).innerHTML = "";
-}
-
-/**
- * Displays the return value of a unit test result.
- *
- * @param num the unit test number to hide.
- */
-function displayUnitTestResult(response, num)
-{
-   var unitTestId = 'unit-test-status-' + num;
-
-   if(response.length < 512)
-   {
-      var e = document.getElementById(unitTestId);
-      e.innerHTML = response;
-   }
-   else
-   {
-      leadingZeros = "";
-      if(num < 10)
-      {
-         leadingZeros = "000";
-      }
-      else if(num < 100)
-      {
-         leadingZeros = "00";
-      }
-      else if(num < 1000)
-      {
-         leadingZeros = "000";
-      }
-      else if(num < 10000)
-      {
-         leadingZeros = "0";
-      }
-
-      var formattedNum = leadingZeros + num;
-      var baseTcUrl = getBaseTcUrl();
-      var htmlUrl = baseTcUrl + formattedNum + ".xhtml";
-      var sparqlUrl = baseTcUrl + formattedNum + ".sparql";
-      var expectedResult = "true";
-
-      document.getElementById(unitTestId).innerHTML =
-         "<a href=\"javascript:checkUnitTest(" + num + ",'" +
-    htmlUrl + "','" + sparqlUrl + "','" + expectedResult +
-    "')\" style=\"font-weight: bold; color: #f00\">ERROR</a>" +
-    "<pre>" + response + "</pre>";
-   }
-}
-
-/**
- * Displays the return HTML value for the unit test details.
- *
- * @param response the HTTP request object.
- * @param num the unit test number to hide.
- */
-function displayUnitTestDetailsResult(response, num)
-{
-   document.getElementById('unit-test-details-' + num).innerHTML = response;
-}
-
-/**
- * Gets the host language identifier for the currently selected test suite.
- *
- * @return the host language identifier for the currently selected test suite.
- */
-function getTestSuiteHostLanguage()
-{
-   var rval = "";
-   var testsuite = document.getElementById('test-suite-selection').value;
-
-   languages = ["xml1", "xhtml1", "html4", "html5", "xhtml5", 
-      "svgtiny1.2", "svg"];
-   
-   // check for all languages in the test suite string
-   var arrayLength = languages.length;
-   for(var i = 0; i < arrayLength; ++i)
-   {
-      var language = languages[i];
-      if(testsuite.indexOf(language) != -1)
-      {
-         rval = language;
-         break;
-      }
-   }
-
-   return rval;
-}
-
-/**
- * Gets the base Test Case URL based on the test manifest.
- *
- * @return the base test case URL containing all of the HTML and SPARQL files.
- */
-function getBaseTcUrl()
-{
-   return 'http://json-ld.digitalbazaar.com/test-suite/test-cases/';
-}
-
-/**
- * Gets the currently selected JSON-LD extractor URL.
- *
- * @return The JSON-LD extractor URL.
- */
-function getJldExtractorUrl()
-{
-   var rval = "";
-   var extractor = document.getElementById('jsonld-extractor-selection').value;
-
-   if(extractor === "RDF.rb")
-   {
-      rval = "http://rdf.kellogg-assoc.com/distiller?raw=true&fmt=rdfxml&in_fmt=jsonld&uri="
-   }
-   else if(extractor === "other")
-   {
-      rval = document.getElementById('jsonld-extractor-selection-value').value;
-   }
-
-   return rval;
-}
-
-/**
- * Gets the currently selected SPARQL engine URL.
- *
- * @return the SPARQL engine URL
- */
-function getSparqlEngineUrl()
-{
-   var rval = "";
-   var engine = document.getElementById('sparql-engine-selection').value;
-
-   if(engine === "graphene")
-   {
-      rval = window.location + "sparql-query";
-   }
-   else if(engine === "sparqler")
-   {
-      rval = "http://sparql.org/sparql?stylesheet=%2Fxml-to-html.xsl&query=";
-   }
-   else if(engine === "virtuoso")
-   {
-      rval = "http://demo.openlinksw.com/sparql/?should-sponge=soft&query=";
-   }
-   else if(engine === "other")
-   {
-      rval = document.getElementById('sparql-engine-selection-value').value;
-   }
-
-   return rval;
-}
-
-/**
- * Update the configuration that is displayed on the web page.
- */
-function updateConfigurationDisplay()
-{
-   var testSuiteManifest = getTestSuiteHostLanguage();
-   var jldExtractorUrl = getJldExtractorUrl();
-   var sparqlEngineUrl = getSparqlEngineUrl();
-   
-   document.getElementById('test-suite-selection-value').innerHTML =
-      testSuiteManifest;
-   document.getElementById('jsonld-extractor-selection-value').value =
-      jldExtractorUrl;
-   document.getElementById('sparql-engine-selection-value').value =
-      sparqlEngineUrl;
-}
-
-/**
- * Runs all of the unit tests by calling each anchor element
- * one-by-one.
- */
-function performAllUnitTests()
-{
-   utCount = 0;
-   for(var i = 1; i <= 2000; i++)
-   {
-      var id = "unit-test-anchor-" + i;
-      var elem = document.getElementById(id);
-      if(elem && elem.href)
-      {
-         utCount += 1;
-         setTimeout(elem.href, (utCount * 1000));
-      }
-   }
-}
-
-/**
- * Generates an EARL report by checking the status of each test and
- */
-function generateEarlReport()
-{
-   var jldExtractorUrl = getJldExtractorUrl();
-   var rdftext = '';
-   
-   rdftext =  '<rdf:RDF xmlns:earl="http://www.w3.org/ns/earl#"\n';   
-   rdftext += ' xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n';
-   rdftext += ' xmlns:dc="http://purl.org/dc/elements/1.1/"\n';
-   rdftext += ' xmlns:foaf="http://xmlns.com/foaf/0.1/">\n\n';
-
-   rdftext += '<earl:Software ' +
-      'rdf:about="http://json-ld.org/rdfa-test-harness">\n';
-   rdftext += ' <dc:title>Crazy Ivan</dc:title>\n';
-   rdftext += ' <dc:description>The W3C JSON-LD Test Harness</dc:description>\n';
-   rdftext += ' <foaf:homepage ' +
-      'rdf:resource="http://json-ld.org/test-harness" />\n';
-   rdftext += '</earl:Software>\n\n';
-
-   for(var i = 1; i <= 2000; i++)
-   {
-      var id = "unit-test-anchor-" + i;
-      var elem = document.getElementById(id);
-      if(elem)
-      {
-         // Calculate the proper idString to use when describing the
-         // test case numbers.
-         idString = "";
-         if(i < 10)
-         {
-            idString = '000' + i;
-         }
-         else if(i < 100)
-         {
-            idString = '00' + i;
-         }
-         else if(i < 1000)
-         {
-            idString = '0' + i;
-         }
-         else
-         {
-            idString = i;
-         }
-            
-         var assertionUrl =
-            "http://json-ld.digitalbazaar.com/rdfa-test-harness#" + id
-         var tcUrl = 'http://www.w3.org/2011/05/SWD/JSON-LD/testsuite/' +   // FIXME
-            'testcases/Test' + idString;
-         var tcDescription =
-            document.getElementById(id.replace('anchor', 'description'));
-         var tcResult =
-            document.getElementById(id.replace('anchor', 'result')).innerHTML;
-         var resultUrl = 'http://www.w3.org/ns/earl#notTested';
-
-         if(tcResult == "PASS")
-         {
-            resultUrl = 'http://www.w3.org/ns/earl#pass';
-         }
-         else if((tcResult == "FAIL") || (tcResult == "ERROR"))
-         {
-            resultUrl = 'http://www.w3.org/ns/earl#fail';
-         }
-         
-         rdftext += '<earl:TestCase rdf:about="' + tcUrl +'">\n';
-         rdftext += ' <dc:title>Test Case #' +
-            id.replace('unit-test-anchor-', '') + '</dc:title>\n';
-         rdftext += ' <dc:description>' +
-            tcDescription.innerHTML + '</dc:description>\n';
-         rdftext += '</earl:TestCase>\n';
-
-         rdftext += '<earl:Assertion rdf:about="' +
-            assertionUrl.replace('anchor', 'assertion') + '">\n';
-         rdftext += ' <earl:assertedBy rdf:resource="http://json-ld.digitalbazaar.com/json-ld-test-harness"/>\n';
-         rdftext += ' <earl:subject rdf:resource="' + jldExtractorUrl  +
-            '"/>\n';
-         rdftext += ' <earl:test rdf:resource="' + tcUrl + '"/>\n';
-         rdftext += ' <earl:result rdf:parseType="Resource">\n';
-           rdftext += '  <rdf:type ';
-         rdftext += 'rdf:resource="http://www.w3.org/ns/earl#TestResult"/>\n';
-         rdftext += '  <earl:outcome ';
-         rdftext += 'rdf:resource="' + resultUrl + '"/>\n';
-         rdftext += ' </earl:result>\n';
-
-         rdftext += '</earl:Assertion>\n\n';
-      }
-   }
-   rdftext += '</rdf:RDF>\n';   
-
-   document.getElementById('earl-report').innerHTML = escapeXml(rdftext);
-}
-
-/**
- * Escapes XML-specific codes, such as <, >, & and \t and encodes them
- * into XHTML.
- */
-function escapeXml(text)
-{
-   var rval = '';
-   
-   var LT = new RegExp("<", "g");  
-   var GT = new RegExp(">", "g");  
-   var AMP = new RegExp("&", "g");  
-   var TAB = new RegExp("\t", "g");
-   
-   rval = text.replace(AMP,"&amp;").replace(LT, "&lt;").replace(GT, "&gt;").replace(TAB, "   ");
-
-   return rval;
-}
--- a/test-suite/crazyivan.py	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,494 +0,0 @@
-##
-# This is the web service form for the Crazy Ivan JSON-LD Test Harness script.
-# License: Creative Commons Attribution Share-Alike
-# @author Manu Sporny
-import os, os.path
-import re
-import subprocess
-from re import search
-import urllib2
-from urllib2 import urlopen
-import urllib
-from rdflib.Graph import Graph
-import xml.sax.saxutils
-from mod_python import apache
-
-##
-# Retrieves all of the test cases from the given test suite manifest URL and
-# filters the RDF using the given status filter.
-#
-# @param base_uri the base URL for the test cases
-# @returns a tuple containing all of the filtered test cases including
-#          unit test number, title, Host Language URL, and SPARQL URL.
-def retrieveTestCases(base_uri):
-    # query the master test manifest
-    q = """
-    PREFIX test: <http://www.w3.org/2006/03/test-description#>
-    PREFIX dc:   <http://purl.org/dc/elements/1.1/>
-    SELECT ?t ?title ?classification ?expected_results
-    FROM <%s>
-    WHERE 
-    {
-    ?t dc:title ?title .
-    ?t test:classification ?classification .
-    OPTIONAL
-    { 
-    ?t test:expectedResults ?expected_results .
-    }
-    }""" % (base_uri + "manifest.ttl")
-
-    # Construct the graph from the given RDF and apply the SPARQL filter above
-    g = Graph()
-    unittests = []
-    for tc, title, classification_url, expected_results in g.query(q):
-        classification = classification_url.split("#")[-1]
-
-        matches = search(r'(\d+)', tc)
-        num = matches.groups(1)[0]
-
-        if(expected_results == None):
-            expected_results = 'true'
-
-        # Generate the input document URLs
-        suffix = "xml"
-        if hostLanguage in ["xhtml1", "xhtml5"]:
-            suffix = "xhtml"
-        elif hostLanguage in ["html4", "html5"]:
-            suffix = "xhtml"
-        elif hostLanguage in ["svgtiny1.2", "svg"]:
-            suffix = "svg"
-
-        doc_uri = "%stest-cases/%s." % \
-            (base_uri, num)
-
-        unittests.append((int(num),
-                          str(title),
-                          str(doc_uri + suffix),
-                          str(doc_uri + "sparql"),
-                          str(classification),
-                          str(expected_results)))
-
-    # Sorts the unit tests in unit test number order.
-    def sorttests(a, b):
-        if(a[0] < b[0]):
-            return -1
-        elif(a[0] == b[0]):
-            return 0
-        else:
-            return 1
-
-    unittests.sort(sorttests)
-          
-    return unittests
-
-##
-# Performs a SPARQL query given a query and a source URL
-#
-def performSparqlQuery(req, query):
-    rval = False
-
-    # Perform a simple SPARQL query given the input data
-    g = Graph()
-    result = g.query(query)
-    if(req):
-        req.write("%s" % str(result.askAnswer[0]).lower())
-    else:
-        rval = result.askAnswer[0]
-
-    return rval
-
-##
-# Performs a given unit test given the RDF extractor URL, sparql engine URL,
-# HTML file and SPARQL validation file.
-#
-# @param rdf_extractor_url The RDF extractor web service.
-# @param sparql_engine_url The SPARQL engine URL.
-# @param doc_url the HTML file to use as input.
-# @param sparql_url the SPARQL validation file to use on the RDF graph.
-def performUnitTest(rdf_extractor_url, sparql_engine_url,
-                    doc_url, sparql_url, expected_result):
-    # Build the RDF extractor URL
-    rdf_extract_url = rdf_extractor_url + urllib.quote(doc_url)
-
-    # Build the SPARQL query
-    sparql_query = urlopen(sparql_url).read()
-    sparql_query = sparql_query.replace("ASK WHERE",
-                                        "ASK FROM <%s> WHERE" % \
-                                        (rdf_extract_url,))
-
-    # Perform the SPARQL query
-    if(sparql_engine_url.find("/test-suite/sparql-query") != -1):
-        # If the SPARQL query is to this SPARQL endpoint, do the query
-        # internally
-        sparql_value = performSparqlQuery(None, sparql_query)
-    elif(sparql_engine_url.find("openlinksw") != -1):
-        # Build the SPARQLer service URL
-        sparql_engine_url += urllib.quote(sparql_query)
-
-        # Call the Virtuoso service
-        sparql_engine_result = urlopen(sparql_engine_url).read()
-
-        sparql_value = (sparql_engine_result.find(expected_result) != -1)
-    elif(sparql_engine_url.find("sparql.org") != -1):
-        # Build the SPARQLer service URL
-        sparql_engine_url += urllib.quote(sparql_query)
-        sparql_engine_url += "&default-graph-uri=&stylesheet=%2Fxml-to-html.xsl"
-
-        # Call the SPARQLer service
-        sparql_engine_result = urlopen(sparql_engine_url).read()
-
-        # TODO: Remove this hack, it's temporary until Michael Hausenblas puts
-        #       an "expected SPARQL result" flag into the test manifest.
-        query_result = "<boolean>%s</boolean>" % (expected_result,)
-        sparql_value = (sparql_engine_result.find(query_result) != -1)
-
-    return sparql_value
-
-##
-# Writes all the available test cases.
-#
-# Writes the test case alternatives for the given URL
-def writeTestCaseRetrievalError(req, tc):
-    req.write("""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
- "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> 
-<html version="XHTML+RDFa 1.0" xmlns="http://www.w3.org/1999/xhtml"
-   xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#"
-   xmlns:dcterms="http://purl.org/dc/terms/"
-   xmlns:test="http://www.w3.org/2006/03/test-description#"> 
-   
-   <head> 
-      <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
-      <title>JSON-LD Test Suite: Test Cases</title> 
-   </head>
-   <body>
-   <p>
-      There was an error while retrieving the test case. This is often because
-      the URL specified points to a test case that doesn't exist: %s
-   </p>
-   </body>
-</html>
-""" % (req.unparsed_uri,))
-
-##
-# Writes the test case alternatives for the given URL
-#
-# Writes the test case alternatives for the given URL
-def writeTestCaseAlternatives(req, arguments):
-    path = req.parsed_uri[-3]
-    tc = path[path.rfind("/") + 1:]
-    base_uri = req.construct_url( \
-        path[0:path.rfind("/test-cases/")] + "/test-cases/")
-
-    filename = arguments.split("/")[-1]
-    req.write("""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
- "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> 
-<html version="XHTML+RDFa 1.0" xmlns="http://www.w3.org/1999/xhtml"
-   xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#"
-   xmlns:dcterms="http://purl.org/dc/terms/"
-   xmlns:test="http://www.w3.org/2006/03/test-description#"> 
-   
-   <head> 
-      <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
-      <title>JSON-LD Test Suite: Select a Test Case Document</title> 
-   </head>
-   <body>
-   <p>
-      The following documents are associated with Test Case %s:
-      <ul>
-         <li><a href="%s%s.json">JSON-LD</li>
-         <li><a href="%s%s.sparql">SPARQL for JSON-LD</li>
-      </ul>
-   </p>
-   </body>
-</html>""" % (tc,
-              base_uri, filename, 
-              base_uri, filename))
-
-##
-# Writes a test case document for the given URL.
-def writeTestCaseDocument(req, path):
-    absolute_path = req.parsed_uri[-3]
-    base_uri = req.construct_url( \
-        absolute_path[0:absolute_path.rfind("/test-cases/")] + "/test-cases/")
-    # FIXME: DEBUGging sparql queryies
-    base_uri = base_uri.replace("sites.local/", "")
-    
-    base_path = os.path.join(req.document_root() + 
-        absolute_path[0:absolute_path.rfind("/test-suite/")] + "/test-suite/")
-    document = path[-1]
-    body = ""
-
-    # Generate the filename that resides on disk
-    filename = base_path + "/" + os.path.join("tests", document)
-
-    # Check to see if the file exists and extract the body of the document
-    if(os.path.exists(filename)):
-        bfile = open(filename, "r")
-        lines = bfile.readlines()
-        body += line
-    else:
-        req.status = apache.HTTP_NOT_FOUND
-
-    # Create the regular expression to rewrite the contents of the JSON and
-    # SPARQL files
-    tcpath = base_uri
-    jsonre = re.compile("([0-9]{4,4})\.json")
-    tcpathre = re.compile("\$TCPATH")
-
-    if(document.endswith(".sparql")):
-        req.content_type = "application/sparql-query"
-        req.write(tcpathre.sub(tcpath, body))
-    elif(document.endswith(".json")):
-        req.content_type = "application/json"
-        req.write(tcpathre.sub(tcpath, body))
-    else:
-        req.status = apache.HTTP_NOT_FOUND
-
-##
-# Writes the unit test HTML to the given request object.
-#
-# @param req the HTTP request object.
-# @param test a tuple containing the unit test number, JSON file, SPARQL file,
-#             and the status of the test.
-def writeUnitTestHtml(req, test):
-    num = test[0]
-    title = test[1]
-    doc_url = test[2]
-    sparql_url = test[3]
-    status = test[4]
-    expected_result = test[5]
-    formatted_num = "%04i" % (num,)
-
-    req.write("""
-<p class=\"unittest\">
-[<span id=\"unit-test-status-%i\">
-    <a id=\"unit-test-anchor-%i\"
-       href=\"javascript:checkUnitTest(%i,'%s','%s','%s')\">
-       <span id=\"unit-test-result-%i\">TEST</span></a>
- </span>]
-   Test #%i (%s): <span id=\"unit-test-description-%i\">%s</span>
-   [<span id=\"unit-test-details-status-%i\">
-    <a href=\"javascript:showUnitTestDetails(%i, '%s', '%s')\">show details</a>
-     | 
-    <a href=\"javascript:hideUnitTestDetails(%i)\">hide details</a>
-     |
-    <a href=\"test-cases/%s\">source</a>
-    </span>
-    ]<div style=\"margin-left: 50px\" id=\"unit-test-details-%i\">
-    </div>
-</p>
-
-""" % (num, num, num, doc_url, sparql_url, expected_result, num, num,
-       status, num, title, num, num, doc_url, sparql_url, num, formatted_num, 
-       num))
-
-# Returns the HTML encoded version of the given string. This is useful to
-# display a plain ASCII text string on a web page.
-def htmlEncode(s):
-    for code in (('&', '&amp;'), ('<', '&lt;'), ('>', '&gt;'), ('"', '&quot;'),
-        ("'", '&#39;'), ("\\n", '<br/>')):
-        s = s.replace(code[0], code[1])
-    return s
-
-##
-# Checks a unit test and outputs a simple unit test result as HTML.
-#
-# @param req the HTML request object.
-# @param num the unit test number.
-# @param rdf_extractor_url The RDF extractor web service.
-# @param sparql_engine_url The SPARQL engine URL.
-# @param doc_url the JSON file to use as input.
-# @param sparql_url the SPARQL file to use when validating the RDF graph.
-def checkUnitTestHtml(req, num, rdfa_extractor_url, sparql_engine_url,
-                      doc_url, sparql_url, expected_result):
-    try:
-        if(performUnitTest(rdfa_extractor_url, sparql_engine_url,
-                           doc_url, sparql_url, expected_result) == True):
-            req.write("<span id=\"unit-test-anchor-%s\" style=\"text-decoration: underline; color: #090\" onclick=\"javascript:checkUnitTest(%s, '%s', '%s', '%s')\"><span id='unit-test-result-%s'>PASS</span></span>" % (num, num, doc_url, sparql_url, expected_result, num))
-        else:
-            req.write("<span id=\"unit-test-anchor-%s\" style=\"text-decoration: underline; font-weight: bold; color: #f00\" onclick=\"javascript:checkUnitTest(%s, '%s', '%s', '%s')\"><span id='unit-test-result-%s'>FAIL</span></span>" % (num, num, doc_url, sparql_url, expected_result, num))
-    except Exception, e:
-        import traceback 
-        testSuitePath = os.path.dirname(req.canonical_filename)
-        exceptionText = htmlEncode( \
-            traceback.format_exc().replace(testSuitePath, ""))
-        req.write(exceptionText)
-
-##
-# Outputs the details related to a given unit test given the unit test number,
-# RDF extractor URL, sparql engine URL, JSON file and SPARQL validation file.
-# The output is written to the req object as HTML.
-#
-# @param req the HTTP request.
-# @param num the unit test number.
-# @param rdf_extractor_url The RDF extractor web service.
-# @param sparql_engine_url The SPARQL engine URL.
-# @param doc_url the JSON file to use as input.
-# @param sparql_url the SPARQL validation file to use on the RDF graph.
-def retrieveUnitTestDetailsHtml(req, num, rdf_extractor_url, n3_extractor_url,
-                                doc_url, sparql_url):
-    # Build the RDF extractor URL
-    rdf_extract_url = rdf_extractor_url + doc_url
-
-    # Build the N3 extractor URL
-    n3_extract_url = n3_extractor_url + doc_url
-
-    # Decode the SPARQL and document URLs
-    sparql_url = urllib.unquote(sparql_url)
-    doc_url = urllib.unquote(doc_url)
-
-    # Get the SPARQL query
-    sparql_text = ""
-    try:
-        sparql_text = urlopen(sparql_url).read()
-    except urllib2.HTTPError:
-        sparql_text = "ERROR retrieving " + sparql_url
-
-    # Get the document data
-    doc_text = ""
-    try:
-        doc_text = urlopen(doc_url).read()
-    except urllib2.HTTPError:
-        doc_text = "ERROR retrieving " + doc_url
-
-    # get the triples in N3 format
-    n3_text = ""
-    try:
-        n3_text = urlopen(n3_extract_url).read()
-    except urllib2.HTTPError:
-        n3_text = "ERROR retrieving " + n3_extract_url
-
-    # Get the RDF text
-    rdf_text = ""
-    try:
-        rdf_text = urlopen(rdf_extract_url).read()
-    except urllib2.HTTPError:
-        rdf_text = "ERROR retrieving " + rdf_extract_url
-
-    req.write("""
-    <h3>Test #%s Source Document</h3>
-    <pre class="code">\n%s\n</pre>
-    <em>Source: <a href="%s">%s</a></em>
-    <h3>Test #%s N3 (Reference Implementation Triples)</h3>
-    <pre class="code">\n%s\n</pre>
-    <em>Extracted using: <a href="%s">%s</a></em>
-    <h3>Test #%s RDF</h3>
-    <pre class="code">\n%s\n</pre>
-    <em>Extracted using: <a href="%s">%s</a></em>
-    <h3>Test #%s SPARQL Test</h3>
-    <pre class="code">\n%s\n</pre>
-    <em>Source: <a href="%s">%s</a></em>
-    """ % (num, 
-           xml.sax.saxutils.escape(doc_text),
-           urllib.unquote(doc_url), urllib.unquote(doc_url), 
-           num,
-           xml.sax.saxutils.escape(n3_text),
-           urllib.unquote(n3_extract_url), urllib.unquote(n3_extract_url), 
-           num,
-           xml.sax.saxutils.escape(rdf_text), 
-           urllib.unquote(rdf_extract_url), urllib.unquote(rdf_extract_url), 
-           num, 
-           xml.sax.saxutils.escape(sparql_text),
-           urllib.unquote(sparql_url), urllib.unquote(sparql_url)))
-
-##
-# The handler function is what is called whenever an apache call is made.
-#
-# @param req the HTTP request.
-#
-# @return apache.OK if there wasn't an error, the appropriate error code if
-#         there was a failure.
-def handler(req):
-    # File that runs an apache test.
-    status = apache.OK
-  
-    puri = req.parsed_uri
-    service = puri[-3]
-    base_uri = req.construct_url( \
-        service[0:service.rfind("/test-suite/")] + "/test-suite/")
-    # FIXME: DEBUGging sparql queryies
-    base_uri = base_uri.replace("sites.local/", "")
-    argstr = puri[-2]
-    args = {}
-
-    # Convert all of the arguments from their URL-encoded value to normal text
-    if(argstr and len(argstr) > 0):
-        if("&" in argstr):
-            for kv in argstr.split("&"):
-                key, value = kv.split("=", 1)
-                args[urllib.unquote(key)] = urllib.unquote(value)
-        elif("=" in argstr):
-            key, value = argstr.split("=")
-            args[urllib.unquote(key)] = urllib.unquote(value)
-
-    # Retrieve a single test case
-    req.content_type = 'text/plain'
-    if(service.find("/test-suite/test-cases") != -1):
-        req.content_type = 'text/html'
-        document = service[service.find("test-cases/"):].split("/")
-        if(len(document) == 2):
-            writeTestCaseAlternatives(req, document[-1])
-        elif(len(document) <= 3):
-            writeTestCaseRetrievalError(req, document[-1])
-        elif(len(document) == 4):
-            writeTestCaseDocument(req, document)
-        else:
-            req.write("ERROR DOCUMENT:" + str(document))
-
-    # Retrieve a test suite
-    elif(service.find("/test-suite/retrieve-tests") != -1):
-        req.content_type = 'text/html'
-
-        unittests = retrieveTestCases(base_uri)
-        for ut in unittests:
-            writeUnitTestHtml(req, ut)
-
-    # Check a particular unit test
-    elif(service.find("/test-suite/check-test") != -1):
-        req.content_type = 'text/html'
-        if(args.has_key('id') and args.has_key('source') and
-           args.has_key('sparql') and args.has_key('rdfa-extractor') and
-           args.has_key('sparql-engine') and args.has_key('expected-result')):
-            checkUnitTestHtml(req, args['id'], args['rdfa-extractor'],
-                              args['sparql-engine'],
-                              args['source'], args['sparql'],
-                              args['expected-result'])
-        else:
-            req.write("ID, RDFA-EXTRACTOR, SPARQL-ENGINE, XHTML and " + \
-                      "SPARQL not specified in request to test harness!")
-            req.write("ARGS:" + str(args))
-
-    # Retrieve the details about a particular unit test
-    elif(service.find("/test-suite/test-details") != -1):
-        req.content_type = 'text/html'
-        if(args.has_key('id') and args.has_key('source') and
-           args.has_key('sparql') and args.has_key('rdfa-extractor') and
-           args.has_key('n3-extractor')):
-            retrieveUnitTestDetailsHtml(req, args['id'],
-                                        args['rdfa-extractor'],
-                                        args['n3-extractor'],
-                                        args['source'], args['sparql'])
-        else:
-            req.write("ID, SOURCE, SPARQL, RDFA-EXTRACTOR or N3-EXTRACTOR " + \
-                      "was not specified in the request URL to the" + \
-                      "test harness: " + service)
-
-    elif(service.find("/test-suite/sparql-query") != -1):
-        query = req.read()
-        performSparqlQuery(req, query)
-
-    # Perform a git update in the current directory
-    elif(service.find("/test-suite/git-update") != -1):
-        testSuitePath = os.path.dirname(req.canonical_filename)
-        gitUpdatePath = os.path.join(testSuitePath, ".git")
-        p = subprocess.Popen(["git", "--git-dir", gitUpdatePath, "pull"], 
-            bufsize=4096, stdout=subprocess.PIPE, stderr=subprocess.PIPE, 
-            close_fds=True, cwd=testSuitePath)
-        (so, se) = p.communicate()
-        req.write("GIT status: %s%s" % (so, se))
-    else:
-        req.content_type = 'text/html'
-        req.write("<b>ERROR: Unknown CrazyIvan service: %s</b>" % (service,))
-
-    return status
-
--- a/test-suite/css/screen.css	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-
-/* Style for a "Recommendation" */
-
-/*
-   Copyright 1997-2003 W3C (MIT, ERCIM, Keio). All Rights Reserved.
-   The following software licensing rules apply:
-   http://www.w3.org/Consortium/Legal/copyright-software */
-
-   * Removed W3C logo -- 20090919 - Manu Sporny
-
-/* $Id: base.css,v 1.25 2006/04/18 08:42:53 bbos Exp $ */
-
-body {
-  font-family: sans-serif;
-  color: black;
-  background: white;
-}
-:link { color: #00C; background: transparent }
-:visited { color: #609; background: transparent }
-a:active { color: #C00; background: transparent }
-
-a:link img, a:visited img { border-style: none } /* no border on img links */
-
-a img { color: white; }        /* trick to hide the border in Netscape 4 */
-@media all {                   /* hide the next rule from Netscape 4 */
-  a img { color: inherit; }    /* undo the color change above */
-}
-
-th, td { /* ns 4 */
-  font-family: sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6 { text-align: left }
-/* background should be transparent, but WebTV has a bug */
-h1, h2, h3 { color: #005A9C; background: white }
-h1 { font: 170% sans-serif }
-h2 { font: 140% sans-serif }
-h3 { font: 120% sans-serif }
-h4 { font: bold 100% sans-serif }
-h5 { font: italic 100% sans-serif }
-h6 { font: small-caps 100% sans-serif }
-
-.hide { display: none }
-
-div.head { margin-bottom: 1em }
-div.head h1 { margin-top: 2em; clear: both }
-div.head table { margin-left: 2em; margin-top: 2em }
-
-p.copyright { font-size: small }
-p.copyright small { font-size: small }
-
-@media screen {  /* hide from IE3 */
-a[href]:hover { background: #ffa }
-}
-
-dt, dd { margin-top: 0; margin-bottom: 0 } /* opera 3.50 */
-dt { font-weight: bold }
-
-pre, code { font-family: monospace } /* navigator 4 requires this */
-
-ul.toc, ol.toc {
-  list-style: disc;		/* Mac NS has problem with 'none' */
-  list-style: none;
-}
-
-@media aural {  
-  h1, h2, h3 { stress: 20; richness: 90 }
-  .hide { speak: none }
-  p.copyright { volume: x-soft; speech-rate: x-fast }
-  dt { pause-before: 20% }
-  pre { speak-punctuation: code } 
-}
-
-pre {
-background: #eeeeff;
-padding: 1em;
--webkit-border-radius: 10px;
--moz-border-radius: 10px;
-border-radius: 10px;
-}
-
--- a/test-suite/git-update	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-crazyivan.py
\ No newline at end of file
--- a/test-suite/jquery-1.4.2.min.js	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.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".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.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|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={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,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
--- a/test-suite/manifest.ttl	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-#@base <http://json-ld.org/test-suite/> .
-@prefix : <http://www.w3.org/2006/03/test-description#> .
-@prefix dc: <http://purl.org/dc/elements/1.1/> .
-@prefix log: <http://www.w3.org/2000/10/swap/log#> .
-@prefix owl: <http://www.w3.org/2002/07/owl#> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
-@prefix jld: <http://json-ld.org/test-suite/vocab#> .
-
-<test-cases/rdf-0001> dc:contributor "Gregg Kellogg";
-  dc:title "Plain literal with URIs";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0001.jsonld>;
-  :informationResourceResults <test-cases/rdf-0001.sparql>;
-  :purpose "Tests generation of a triple using full URIs and a plain literal.";
-  :specificationReference <http://json-ld.org/spec/latest/#plain-literals>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0002> dc:contributor "Gregg Kellogg";
-  dc:title "Plain literal with CURIE from default context";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0002.jsonld>;
-  :informationResourceResults <test-cases/rdf-0002.sparql>;
-  :purpose "Tests generation of a triple using a CURIE defined in the default context.";
-  :specificationReference <http://json-ld.org/spec/latest/#iris>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0003> dc:contributor "Gregg Kellogg";
-  dc:title "Default subject is BNode";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0003.jsonld>;
-  :informationResourceResults <test-cases/rdf-0003.sparql>;
-  :purpose "Tests that a BNode is created if no explicit subject is set.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0004> dc:contributor "Gregg Kellogg";
-  dc:title "Literal with language tag";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0004.jsonld>;
-  :informationResourceResults <test-cases/rdf-0004.sparql>;
-  :purpose "Tests that a plain literal is created with a language tag.";
-  :specificationReference <http://json-ld.org/spec/latest/#language-specification-in-plain-literals>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0005> dc:contributor "Gregg Kellogg";
-  dc:title "Extended character set literal";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0005.jsonld>;
-  :informationResourceResults <test-cases/rdf-0005.sparql>;
-  :purpose "Tests that a literal may be created using extended characters.";
-  :specificationReference "";
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0006> dc:contributor "Gregg Kellogg";
-  dc:title "Typed literal";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0006.jsonld>;
-  :informationResourceResults <test-cases/rdf-0006.sparql>;
-  :purpose "Tests creation of a literal with a datatype.";
-  :specificationReference <http://json-ld.org/spec/latest/#typed-literals>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0007> dc:contributor "Gregg Kellogg";
-  dc:title "Tests 'a' generates rdf:type and object is implicit IRI";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0007.jsonld>;
-  :informationResourceResults <test-cases/rdf-0007.sparql>;
-  :purpose "Verify that 'a' is an alias for rdf:type, and the object is created as an IRI.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0008> dc:contributor "Gregg Kellogg";
-  dc:title "Test prefix defined in @context";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0008.jsonld>;
-  :informationResourceResults <test-cases/rdf-0008.sparql>;
-  :purpose "Generate an IRI using a prefix defined within an @context.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0009> dc:contributor "Gregg Kellogg";
-  dc:title "Test using default prefix";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0009.jsonld>;
-  :informationResourceResults <test-cases/rdf-0009.sparql>;
-  :purpose "The empty string may be used to define the default prefix.";
-  :specificationReference "";
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0010> dc:contributor "Gregg Kellogg";
-  dc:title "Test object processing defines object";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0010.jsonld>;
-  :informationResourceResults <test-cases/rdf-0010.sparql>;
-  :purpose "A property referencing an associative array gets object from subject of array.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0011> dc:contributor "Gregg Kellogg";
-  dc:title "Test object processing defines object with implicit BNode";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0011.jsonld>;
-  :informationResourceResults <test-cases/rdf-0011.sparql>;
-  :purpose "If no @ is specified, a BNode is created, and will be used as the object of an enclosing property.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0012> dc:contributor "Gregg Kellogg";
-  dc:title "Multiple Objects for a Single Property";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0012.jsonld>;
-  :informationResourceResults <test-cases/rdf-0012.sparql>;
-  :purpose "Tests that Multiple Objects are for a Single Property using array syntax.";
-  :specificationReference <http://json-ld.org/spec/latest/#multiple-objects-for-a-single-property>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0013> dc:contributor "Gregg Kellogg";
-  dc:title "Creation of an empty list";
-  a :TestCase, jld:SPARQLTest;
-  :classification :optional;
-  :informationResourceInput <test-cases/rdf-0013.jsonld>;
-  :informationResourceResults <test-cases/rdf-0013.sparql>;
-  :purpose "Tests that [[]] generates an empty list.";
-  :specificationReference "If the value is a regular array, should we support RDF List/Sequence generation of triples?";
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0014> dc:contributor "Gregg Kellogg";
-  dc:title "Creation of a list with single element";
-  a :TestCase, jld:SPARQLTest;
-  :classification :optional;
-  :informationResourceInput <test-cases/rdf-0014.jsonld>;
-  :informationResourceResults <test-cases/rdf-0014.sparql>;
-  :purpose "Tests that [[a]] generates list.";
-  :specificationReference "If the value is a regular array, should we support RDF List/Sequence generation of triples?";
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0015> dc:contributor "Gregg Kellogg";
-  dc:title "Creation of a list with multiple elements";
-  a :TestCase, jld:SPARQLTest;
-  :classification :optional;
-  :informationResourceInput <test-cases/rdf-0015.jsonld>;
-  :informationResourceResults <test-cases/rdf-0015.sparql>;
-  :purpose "Tests that list with multiple elements.";
-  :specificationReference "If the value is a regular array, should we support RDF List/Sequence generation of triples?";
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0016> dc:contributor "Gregg Kellogg";
-  dc:title "Test @base";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0016.jsonld>;
-  :informationResourceResults <test-cases/rdf-0016.sparql>;
-  :purpose "Tests using @base in @context for IRI processing.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0017> dc:contributor "Gregg Kellogg";
-  dc:title "Test @vocab";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0017.jsonld>;
-  :informationResourceResults <test-cases/rdf-0017.sparql>;
-  :purpose "Tests using @vocab in @context for IRI processing.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0018> dc:contributor "Gregg Kellogg";
-  dc:title "Test @base and @vocab together";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0018.jsonld>;
-  :informationResourceResults <test-cases/rdf-0018.sparql>;
-  :purpose "Tests using @base and @vocab in @context for IRI processing.";
-  :specificationReference <http://json-ld.org/spec/latest/#the-json-ld-processing-algorithm>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0019> dc:contributor "Gregg Kellogg";
-  dc:title "Test type coercion to anyURI";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0019.jsonld>;
-  :informationResourceResults <test-cases/rdf-0019.sparql>;
-  :purpose "Tests coercion of object to anyURI when specified.";
-  :specificationReference <http://json-ld.org/spec/latest/#type-coercion>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0020> dc:contributor "Gregg Kellogg";
-  dc:title "Test type coercion to typed literal";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0020.jsonld>;
-  :informationResourceResults <test-cases/rdf-0020.sparql>;
-  :purpose "Tests coercion of object to a typed literal when specified.";
-  :specificationReference <http://json-ld.org/spec/latest/#type-coercion>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0021> dc:contributor "Gregg Kellogg";
-  dc:title "Test coercion of decimal value";
-  a :TestCase, jld:SPARQLTest;
-  :classification :buggy;
-  :informationResourceInput <test-cases/rdf-0021.jsonld>;
-  :informationResourceResults <test-cases/rdf-0021.sparql>;
-  :purpose "Tests that a decimal value generates a xsd:decimal typed literal (buggy test).";
-  :specificationReference <http://json-ld.org/spec/latest/#automatic-typing>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0022> dc:contributor "Gregg Kellogg";
-  dc:title "Test coercion of double value";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0022.jsonld>;
-  :informationResourceResults <test-cases/rdf-0022.sparql>;
-  :purpose "Tests that a decimal value generates a xsd:double typed literal;.";
-  :specificationReference <http://json-ld.org/spec/latest/#automatic-typing>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0023> dc:contributor "Gregg Kellogg";
-  dc:title "Test coercion of integer value";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0023.jsonld>;
-  :informationResourceResults <test-cases/rdf-0023.sparql>;
-  :purpose "Tests that a decimal value generates a xsd:integer typed literal.";
-  :specificationReference <http://json-ld.org/spec/latest/#automatic-typing>;
-  :expectedResults "true"^^xsd:boolean .
-
-<test-cases/rdf-0024> dc:contributor "Gregg Kellogg";
-  dc:title "Test coercion of boolean value";
-  a :TestCase, jld:SPARQLTest;
-  :classification :required;
-  :informationResourceInput <test-cases/rdf-0024.jsonld>;
-  :informationResourceResults <test-cases/rdf-0024.sparql>;
-  :purpose "Tests that a decimal value generates a xsd:boolean typed literal.";
-  :specificationReference <http://json-ld.org/spec/latest/#automatic-typing>;
-  :expectedResults "true"^^xsd:boolean .
--- a/test-suite/retrieve-tests	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-crazyivan.py
\ No newline at end of file
--- a/test-suite/sparql-query	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-crazyivan.py
\ No newline at end of file
--- a/test-suite/test-cases	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-crazyivan.py
\ No newline at end of file
--- a/test-suite/test-details	Tue Jan 03 19:23:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-crazyivan.py
\ No newline at end of file