[httplib2] push by joe.gregorio - Updated docs on 2011-06-13 19:13 GMT

0 views
Skip to first unread message

codesite...@google.com

unread,
Jun 13, 2011, 3:14:30 PM6/13/11
to httplib...@googlegroups.com
Revision: a2187a367b45
Author: Joe Gregorio <jcgre...@google.com>
Date: Mon Jun 13 12:13:11 2011
Log: Updated docs
http://code.google.com/p/httplib2/source/detail?r=a2187a367b45

Modified:
/CHANGELOG
/doc/html/_sources/libhttplib2.txt
/doc/html/_static/default.css
/doc/html/_static/doctools.js
/doc/html/_static/jquery.js
/doc/html/_static/searchtools.js
/doc/html/genindex.html
/doc/html/index.html
/doc/html/libhttplib2.html
/doc/html/modindex.html
/doc/html/search.html
/doc/libhttplib2.rst

=======================================
--- /CHANGELOG Mon Dec 28 10:02:42 2009
+++ /CHANGELOG Mon Jun 13 12:13:11 2011
@@ -1,3 +1,30 @@
+0.7.0
+ The two major changes in this release are SSL Certificate
+ checking and App Engine support. By default the certificates
+ of an HTTPS connection are checked, but that can be disabled
+ via disable_ssl_certificate_validation. The second change
+ is that on App Engine there is a new connection object
+ that utilizes the urlfetch capabilities on App Engine, including
+ setting timeouts and validating certificates.
+
+ The following issues have been addressed:
+
+ Fixes issue 72. Always lowercase authorization header.
+ Fix issue 47. Redirects that become a GET should not have a body.
+ Fixes issue 19. Set Content-location on redirected HEAD requests
+ Fixes issue 139. Redirect with a GET on 302 regardless of the
originating method.
+ Fixes issue 138. Handle unicode in headers when writing and retrieving
cache entries. Who says headers have to be ASCII!
+ Add certificate validation. Work initially started by Christoph Kern.
+ Set a version number. Fixes issue # 135.
+ Sync to latest version of socks.py
+ Add gzip to the user-agent, in case we are making a request to an app
engine project: http://code.google.com/appengine/kb/general.html#compression
+ Uses a custom httplib shim on App Engine to wrap urlfetch, as opposed
+ Add default support for optimistic concurrency on PATCH requests
+ Fixes issue 126. IPv6 under various conditions would fail.
+ Fixes issue 131. Handle socket.timeout's that occur during send.
+ proxy support: degrade gracefully when socket.socket is unavailable
+
+
0.6.0

The following issues have been addressed:
=======================================
--- /doc/html/_sources/libhttplib2.txt Sat Sep 6 08:03:26 2008
+++ /doc/html/_sources/libhttplib2.txt Mon Jun 13 12:13:11 2011
@@ -187,14 +187,25 @@
.. % type name like methoddesc.


-.. class:: Http([cache=None], [timeout=None])
+.. class:: Http([cache=None], [timeout=None], [proxy_info=None],
[ca_certs=None], [disable_ssl_certificate_validation=False])

The class that represents a client HTTP interface. The *cache*
parameter is
either the name of a directory to be used as a flat file cache, or it
must an
object that implements the required caching interface. The *timeout*
parameter
- is the socket level timeout.
+ is the socket level timeout. The *ca_certs* parameter is the filename
of the
+ CA certificates to use. If none is given a default set is used. The
+ *disable_ssl_certificate_validation* boolean flag determines if ssl
certificate validation
+ is done. The *proxy_info* parameter is an object of
type :class:ProxyInfo.


+.. class:: ProxyInfo(proxy_type, proxy_host, proxy_port,
[proxy_rdns=None], [proxy_user=None], [proxy_pass=None])
+
+ Collect information required to use a proxy.
+ The parameter proxy_type must be set to one of socks.PROXY_TYPE_XXX
+ constants. For example: ::
+
+ p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost',
proxy_port=8000)
+
.. class:: Response(info)

Response is a subclass of :class:`dict` and instances of this class are
=======================================
--- /doc/html/_static/default.css Fri Sep 5 18:30:25 2008
+++ /doc/html/_static/default.css Mon Jun 13 12:13:11 2011
@@ -1,7 +1,12 @@
/**
- * Sphinx Doc Design
+ * Sphinx stylesheet -- default theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

+@import url("basic.css");
+
+/* -- page layout
----------------------------------------------------------- */
+
body {
font-family: sans-serif;
font-size: 100%;
@@ -10,8 +15,6 @@
margin: 0;
padding: 0;
}
-
-/* :::: LAYOUT :::: */

div.document {
background-color: #1c4e63;
@@ -27,27 +30,13 @@
}

div.body {
- background-color: white;
+ background-color: #ffffff;
+ color: #000000;
padding: 0 20px 30px 20px;
}
-
-div.sphinxsidebarwrapper {
- padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
- float: left;
- width: 230px;
- margin-left: -100%;
- font-size: 90%;
-}
-
-div.clearer {
- clear: both;
-}

div.footer {
- color: #fff;
+ color: #ffffff;
width: 100%;
padding: 9px 0 9px 0;
text-align: center;
@@ -55,55 +44,39 @@
}

div.footer a {
- color: #fff;
+ color: #ffffff;
text-decoration: underline;
}

div.related {
background-color: #133f52;
- color: #fff;
- width: 100%;
- height: 30px;
line-height: 30px;
- font-size: 90%;
+ color: #ffffff;
}

-div.related h3 {
- display: none;
+div.related a {
+ color: #ffffff;
}

-div.related ul {
- margin: 0;
- padding: 0 0 0 10px;
- list-style: none;
+div.sphinxsidebar {
}

-div.related li {
- display: inline;
-}
-
-div.related li.right {
- float: right;
- margin-right: 5px;
-}
-
-div.related a {
- color: white;
-}
-
-/* ::: TOC :::: */
div.sphinxsidebar h3 {
font-family: 'Trebuchet MS', sans-serif;
- color: white;
+ color: #ffffff;
font-size: 1.4em;
font-weight: normal;
margin: 0;
padding: 0;
}
+
+div.sphinxsidebar h3 a {
+ color: #ffffff;
+}

div.sphinxsidebar h4 {
font-family: 'Trebuchet MS', sans-serif;
- color: white;
+ color: #ffffff;
font-size: 1.3em;
font-weight: normal;
margin: 5px 0 0 0;
@@ -111,7 +84,7 @@
}

div.sphinxsidebar p {
- color: white;
+ color: #ffffff;
}

div.sphinxsidebar p.topless {
@@ -121,28 +94,12 @@
div.sphinxsidebar ul {
margin: 10px;
padding: 0;
- list-style: none;
- color: white;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
- margin-left: 20px;
- list-style: square;
-}
-
-div.sphinxsidebar ul ul {
- margin-top: 0;
- margin-bottom: 0;
+ color: #ffffff;
}

div.sphinxsidebar a {
color: #98dbcc;
}
-
-div.sphinxsidebar form {
- margin-top: 10px;
-}

div.sphinxsidebar input {
border: 1px solid #98dbcc;
@@ -150,352 +107,7 @@
font-size: 1em;
}

-/* :::: MODULE CLOUD :::: */
-div.modulecloud {
- margin: -5px 10px 5px 10px;
- padding: 10px;
- line-height: 160%;
- border: 1px solid #cbe7e5;
- background-color: #f2fbfd;
-}
-
-div.modulecloud a {
- padding: 0 5px 0 5px;
-}
-
-/* :::: SEARCH :::: */
-ul.search {
- margin: 10px 0 0 20px;
- padding: 0;
-}
-
-ul.search li {
- padding: 5px 0 5px 20px;
- background-image: url(file.png);
- background-repeat: no-repeat;
- background-position: 0 7px;
-}
-
-ul.search li a {
- font-weight: bold;
-}
-
-ul.search li div.context {
- color: #888;
- margin: 2px 0 0 30px;
- text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
- font-weight: bold;
-}
-
-/* :::: COMMON FORM STYLES :::: */
-
-div.actions {
- padding: 5px 10px 5px 10px;
- border-top: 1px solid #cbe7e5;
- border-bottom: 1px solid #cbe7e5;
- background-color: #e0f6f4;
-}
-
-form dl {
- color: #333;
-}
-
-form dt {
- clear: both;
- float: left;
- min-width: 110px;
- margin-right: 10px;
- padding-top: 2px;
-}
-
-input#homepage {
- display: none;
-}
-
-div.error {
- margin: 5px 20px 0 0;
- padding: 5px;
- border: 1px solid #d00;
- font-weight: bold;
-}
-
-/* :::: INLINE COMMENTS :::: */
-
-div.inlinecomments {
- position: absolute;
- right: 20px;
-}
-
-div.inlinecomments a.bubble {
- display: block;
- float: right;
- background-image: url(style/comment.png);
- background-repeat: no-repeat;
- width: 25px;
- height: 25px;
- text-align: center;
- padding-top: 3px;
- font-size: 0.9em;
- line-height: 14px;
- font-weight: bold;
- color: black;
-}
-
-div.inlinecomments a.bubble span {
- display: none;
-}
-
-div.inlinecomments a.emptybubble {
- background-image: url(style/nocomment.png);
-}
-
-div.inlinecomments a.bubble:hover {
- background-image: url(style/hovercomment.png);
- text-decoration: none;
- color: #3ca0a4;
-}
-
-div.inlinecomments div.comments {
- float: right;
- margin: 25px 5px 0 0;
- max-width: 50em;
- min-width: 30em;
- border: 1px solid #2eabb0;
- background-color: #f2fbfd;
- z-index: 150;
-}
-
-div#comments {
- border: 1px solid #2eabb0;
- margin-top: 20px;
-}
-
-div#comments div.nocomments {
- padding: 10px;
- font-weight: bold;
-}
-
-div.inlinecomments div.comments h3,
-div#comments h3 {
- margin: 0;
- padding: 0;
- background-color: #2eabb0;
- color: white;
- border: none;
- padding: 3px;
-}
-
-div.inlinecomments div.comments div.actions {
- padding: 4px;
- margin: 0;
- border-top: none;
-}
-
-div#comments div.comment {
- margin: 10px;
- border: 1px solid #2eabb0;
-}
-
-div.inlinecomments div.comment h4,
-div.commentwindow div.comment h4,
-div#comments div.comment h4 {
- margin: 10px 0 0 0;
- background-color: #2eabb0;
- color: white;
- border: none;
- padding: 1px 4px 1px 4px;
-}
-
-div#comments div.comment h4 {
- margin: 0;
-}
-
-div#comments div.comment h4 a {
- color: #d5f4f4;
-}
-
-div.inlinecomments div.comment div.text,
-div.commentwindow div.comment div.text,
-div#comments div.comment div.text {
- margin: -5px 0 -5px 0;
- padding: 0 10px 0 10px;
-}
-
-div.inlinecomments div.comment div.meta,
-div.commentwindow div.comment div.meta,
-div#comments div.comment div.meta {
- text-align: right;
- padding: 2px 10px 2px 0;
- font-size: 95%;
- color: #538893;
- border-top: 1px solid #cbe7e5;
- background-color: #e0f6f4;
-}
-
-div.commentwindow {
- position: absolute;
- width: 500px;
- border: 1px solid #cbe7e5;
- background-color: #f2fbfd;
- display: none;
- z-index: 130;
-}
-
-div.commentwindow h3 {
- margin: 0;
- background-color: #2eabb0;
- color: white;
- border: none;
- padding: 5px;
- font-size: 1.5em;
- cursor: pointer;
-}
-
-div.commentwindow div.actions {
- margin: 10px -10px 0 -10px;
- padding: 4px 10px 4px 10px;
- color: #538893;
-}
-
-div.commentwindow div.actions input {
- border: 1px solid #2eabb0;
- background-color: white;
- color: #135355;
- cursor: pointer;
-}
-
-div.commentwindow div.form {
- padding: 0 10px 0 10px;
-}
-
-div.commentwindow div.form input,
-div.commentwindow div.form textarea {
- border: 1px solid #3c9ea2;
- background-color: white;
- color: black;
-}
-
-div.commentwindow div.error {
- margin: 10px 5px 10px 5px;
- background-color: #fbe5dc;
- display: none;
-}
-
-div.commentwindow div.form textarea {
- width: 99%;
-}
-
-div.commentwindow div.preview {
- margin: 10px 0 10px 0;
- background-color: #70d0d4;
- padding: 0 1px 1px 25px;
-}
-
-div.commentwindow div.preview h4 {
- margin: 0 0 -5px -20px;
- padding: 4px 0 0 4px;
- color: white;
- font-size: 1.3em;
-}
-
-div.commentwindow div.preview div.comment {
- background-color: #f2fbfd;
-}
-
-div.commentwindow div.preview div.comment h4 {
- margin: 10px 0 0 0!important;
- padding: 1px 4px 1px 4px!important;
- font-size: 1.2em;
-}
-
-/* :::: SUGGEST CHANGES :::: */
-div#suggest-changes-box input, div#suggest-changes-box textarea {
- border: 1px solid #ccc;
- background-color: white;
- color: black;
-}
-
-div#suggest-changes-box textarea {
- width: 99%;
- height: 400px;
-}
-
-
-/* :::: PREVIEW :::: */
-div.preview {
- background-image: url(style/preview.png);
- padding: 0 20px 20px 20px;
- margin-bottom: 30px;
-}
-
-
-/* :::: INDEX PAGE :::: */
-
-table.contentstable {
- width: 90%;
-}
-
-table.contentstable p.biglink {
- line-height: 150%;
-}
-
-a.biglink {
- font-size: 1.3em;
-}
-
-span.linkdescr {
- font-style: italic;
- padding-top: 5px;
- font-size: 90%;
-}
-
-/* :::: INDEX STYLES :::: */
-
-table.indextable td {
- text-align: left;
- vertical-align: top;
-}
-
-table.indextable dl, table.indextable dd {
- margin-top: 0;
- margin-bottom: 0;
-}
-
-table.indextable tr.pcap {
- height: 10px;
-}
-
-table.indextable tr.cap {
- margin-top: 10px;
- background-color: #f2f2f2;
-}
-
-img.toggler {
- margin-right: 3px;
- margin-top: 3px;
- cursor: pointer;
-}
-
-form.pfform {
- margin: 10px 0 20px 0;
-}
-
-/* :::: GLOBAL STYLES :::: */
-
-.docwarning {
- background-color: #ffe4e4;
- padding: 10px;
- margin: 0 -20px 0 -20px;
- border-bottom: 1px solid #f66;
-}
-
-p.subhead {
- font-weight: bold;
- margin-top: 20px;
-}
+/* -- body styles
----------------------------------------------------------- */

a {
color: #355f7c;
@@ -505,6 +117,11 @@
a:hover {
text-decoration: underline;
}
+
+div.body p, div.body dd, div.body li {
+ text-align: justify;
+ line-height: 130%;
+}

div.body h1,
div.body h2,
@@ -533,17 +150,6 @@
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
- visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink {
- visibility: visible;
}

a.headerlink:hover {
@@ -556,189 +162,45 @@
line-height: 130%;
}

-div.body p.caption {
- text-align: inherit;
+div.admonition p.admonition-title + p {
+ display: inline;
}

-div.body td {
- text-align: left;
-}
-
-ul.fakelist {
- list-style: none;
- margin: 10px 0 10px 20px;
- padding: 0;
-}
-
-.field-list ul {
- padding-left: 1em;
-}
-
-.first {
- margin-top: 0 !important;
-}
-
-/* "Footnotes" heading */
-p.rubric {
- margin-top: 30px;
- font-weight: bold;
-}
-
-/* "Topics" */
-
-div.topic {
+div.note {
background-color: #eee;
border: 1px solid #ccc;
- padding: 0 7px 0 7px;
- margin: 10px 0 10px 0;
-}
-
-p.topic-title {
- font-size: 1.1em;
- font-weight: bold;
- margin-top: 10px;
-}
-
-/* Admonitions */
-
-div.admonition {
- margin-top: 10px;
- margin-bottom: 10px;
- padding: 7px;
-}
-
-div.admonition dt {
- font-weight: bold;
-}
-
-div.admonition dl {
- margin-bottom: 0;
-}
-
-div.admonition p {
- display: inline;
}

div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
}
+
+div.topic {
+ background-color: #eee;
+}

div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
}
-
-div.note {
- background-color: #eee;
- border: 1px solid #ccc;
-}

p.admonition-title {
- margin: 0px 10px 5px 0px;
- font-weight: bold;
display: inline;
}

p.admonition-title:after {
content: ":";
}
-
-div.body p.centered {
- text-align: center;
- margin-top: 25px;
-}
-
-table.docutils {
- border: 0;
-}
-
-table.docutils td, table.docutils th {
- padding: 1px 8px 1px 0;
- border-top: 0;
- border-left: 0;
- border-right: 0;
- border-bottom: 1px solid #aaa;
-}
-
-table.field-list td, table.field-list th {
- border: 0 !important;
-}
-
-table.footnote td, table.footnote th {
- border: 0 !important;
-}
-
-.field-list ul {
- margin: 0;
- padding-left: 1em;
-}
-
-.field-list p {
- margin: 0;
-}
-
-dl {
- margin-bottom: 15px;
- clear: both;
-}
-
-dd p {
- margin-top: 0px;
-}
-
-dd ul, dd table {
- margin-bottom: 10px;
-}
-
-dd {
- margin-top: 3px;
- margin-bottom: 10px;
- margin-left: 30px;
-}
-
-.refcount {
- color: #060;
-}
-
-dt:target,
-.highlight {
- background-color: #fbe54e;
-}
-
-dl.glossary dt {
- font-weight: bold;
- font-size: 1.1em;
-}
-
-th {
- text-align: left;
- padding-right: 5px;
-}

pre {
padding: 5px;
- background-color: #efc;
- color: #333;
+ background-color: #eeffcc;
+ color: #333333;
+ line-height: 120%;
border: 1px solid #ac9;
border-left: none;
border-right: none;
- overflow: auto;
-}
-
-td.linenos pre {
- padding: 5px 0px;
- border: 0;
- background-color: transparent;
- color: #aaa;
-}
-
-table.highlighttable {
- margin-left: 0.5em;
-}
-
-table.highlighttable td {
- padding: 0 0.5em 0 0.5em;
}

tt {
@@ -747,87 +209,10 @@
font-size: 0.95em;
}

-tt.descname {
- background-color: transparent;
- font-weight: bold;
- font-size: 1.2em;
+.warning tt {
+ background: #efc2c2;
}

-tt.descclassname {
- background-color: transparent;
-}
-
-tt.xref, a tt {
- background-color: transparent;
- font-weight: bold;
-}
-
-.footnote:target { background-color: #ffa }
-
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
- background-color: transparent;
-}
-
-.optional {
- font-size: 1.3em;
-}
-
-.versionmodified {
- font-style: italic;
-}
-
-form.comment {
- margin: 0;
- padding: 10px 30px 10px 30px;
- background-color: #eee;
-}
-
-form.comment h3 {
- background-color: #326591;
- color: white;
- margin: -10px -30px 10px -30px;
- padding: 5px;
- font-size: 1.4em;
-}
-
-form.comment input,
-form.comment textarea {
- border: 1px solid #ccc;
- padding: 2px;
- font-family: sans-serif;
- font-size: 100%;
-}
-
-form.comment input[type="text"] {
- width: 240px;
-}
-
-form.comment textarea {
- width: 100%;
- height: 200px;
- margin-bottom: 10px;
-}
-
-.system-message {
- background-color: #fda;
- padding: 5px;
- border: 3px solid red;
-}
-
-/* :::: PRINT :::: */
-@media print {
- div.document,
- div.documentwrapper,
- div.bodywrapper {
- margin: 0;
- width : 100%;
- }
-
- div.sphinxsidebar,
- div.related,
- div.footer,
- div#comments div.new-comment-box,
- #top-link {
- display: none;
- }
-}
+.note tt {
+ background: #d6d6d6;
+}
=======================================
--- /doc/html/_static/doctools.js Fri Sep 5 18:30:25 2008
+++ /doc/html/_static/doctools.js Mon Jun 13 12:13:11 2011
@@ -94,31 +94,57 @@
var Documentation = {

init : function() {
- /* this.addContextElements(); -- now done statically */
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initModIndex();
- this.initComments();
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS : {},
+ PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+ LOCALE : 'unknown',
+
+ // gettext and ngettext don't access this so that the functions
+ // can savely bound to a different name (_ = Documentation.gettext)
+ gettext : function(string) {
+ var translated = Documentation.TRANSLATIONS[string];
+ if (typeof translated == 'undefined')
+ return string;
+ return (typeof translated == 'string') ? translated : translated[0];
+ },
+
+ ngettext : function(singular, plural, n) {
+ var translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated == 'undefined')
+ return (n == 1) ? singular : plural;
+ return translated[Documentation.PLURALEXPR(n)];
+ },
+
+ addTranslations : function(catalog) {
+ for (var key in catalog.messages)
+ this.TRANSLATIONS[key] = catalog.messages[key];
+ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr
+ ')');
+ this.LOCALE = catalog.locale;
},

/**
* add context elements like header anchor links
*/
addContextElements : function() {
- for (var i = 1; i <= 6; i++) {
- $('h' + i + '[@id]').each(function() {
- $('<a class="headerlink">\u00B6</a>').
- attr('href', '#' + this.id).
- attr('title', 'Permalink to this headline').
- appendTo(this);
- });
- }
- $('dt[@id]').each(function() {
+ $('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
- attr('title', 'Permalink to this definition').
+ attr('title', _('Permalink to this headline')).
appendTo(this);
});
+ $('dt[id]').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this definition')).
+ appendTo(this);
+ });
},

/**
@@ -145,7 +171,7 @@
});
}, 10);
$('<li class="highlight-link"><a href="javascript:Documentation.' +
- 'hideSearchWords()">Hide Search Matches</a></li>')
+ 'hideSearchWords()">' + _('Hide Search Matches') + '</a></li>')
.appendTo($('.sidebar .this-page-menu'));
}
},
@@ -168,37 +194,6 @@
}
},

- /**
- * init the inline comments
- */
- initComments : function() {
- $('.inlinecomments div.actions').each(function() {
- this.innerHTML += ' | ';
- $(this).append($('<a href="#">hide comments</a>').click(function() {
- $(this).parent().parent().toggle();
- return false;
- }));
- });
- $('.inlinecomments .comments').hide();
- $('.inlinecomments a.bubble').each(function() {
- $(this).click($(this).is('.emptybubble') ? function() {
- var params = $.getQueryParameters(this.href);
- Documentation.newComment(params.target[0]);
- return false;
- } : function() {
- $('.comments', $(this).parent().parent()[0]).toggle();
- return false;
- });
- });
- $('#comments div.actions a.newcomment').click(function() {
- Documentation.newComment();
- return false;
- });
- if (document.location.hash.match(/^#comment-/))
- $('.inlinecomments .comments ' + document.location.hash)
- .parent().toggle();
- },
-
/**
* helper function to hide the search marks again
*/
@@ -207,22 +202,6 @@
$('span.highlight').removeClass('highlight');
},

- /**
- * show the comment window for a certain id or the whole page.
- */
- newComment : function(id) {
- Documentation.CommentWindow.openFor(id || '');
- },
-
- /**
- * write a new comment from within a comment view box
- */
- newCommentFromBox : function(link) {
- var params = $.getQueryParameters(link.href);
- $(link).parent().parent().fadeOut('slow');
- this.newComment(params.target);
- },
-
/**
* make the url absolute
*/
@@ -242,110 +221,11 @@
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
- },
-
- /**
- * class that represents the comment window
- */
- CommentWindow : (function() {
- var openWindows = {};
-
- var Window = function(sectionID) {
- this.url = Documentation.makeURL('@comments/' +
Documentation.getCurrentURL()
- + '/?target=' + $.urlencode(sectionID) + '&mode=ajax');
- this.sectionID = sectionID;
-
- this.root = $('<div class="commentwindow"></div>');
- this.root.appendTo($('body'));
- this.title = $('<h3>New Comment</h3>').appendTo(this.root);
- this.body = $('<div class="form">please
wait...</div>').appendTo(this.root);
- this.resizeHandle = $('<div
class="resizehandle"></div>').appendTo(this.root);
-
- this.root.Draggable({
- handle: this.title[0]
- });
-
- this.root.css({
- left: window.innerWidth / 2 - $(this.root).width() / 2,
- top: window.scrollY + (window.innerHeight / 2 - 150)
- });
- this.root.fadeIn('slow');
- this.updateView();
- };
-
- Window.prototype.updateView = function(data) {
- var self = this;
- function update(data) {
- if (data.posted) {
- document.location.hash = '#comment-' + data.commentID;
- document.location.reload();
- }
- else {
- self.body.html(data.body);
- $('div.actions', self.body).append($('<input>')
- .attr('type', 'button')
- .attr('value', 'Close')
- .click(function() { self.close(); })
- );
- $('div.actions input[@name="preview"]')
- .attr('type', 'button')
- .click(function() { self.submitForm($('form', self.body)[0],
true); });
- $('form', self.body).bind("submit", function() {
- self.submitForm(this);
- return false;
- });
-
- if (data.error) {
- self.root.Highlight(1000, '#aadee1');
- $('div.error', self.root).slideDown(500);
- }
- }
- }
-
- if (typeof data == 'undefined')
- $.getJSON(this.url, function(json) { update(json); });
- else
- $.ajax({
- url: this.url,
- type: 'POST',
- dataType: 'json',
- data: data,
- success: function(json) { update(json); }
- });
- }
-
- Window.prototype.getFormValue = function(name) {
- return $('*[@name="' + name + '"]', this.body)[0].value;
- }
-
- Window.prototype.submitForm = function(form, previewMode) {
- this.updateView({
- author: form.author.value,
- author_mail: form.author_mail.value,
- title: form.title.value,
- comment_body: form.comment_body.value,
- preview: previewMode ? 'yes' : ''
- });
- }
-
- Window.prototype.close = function() {
- var self = this;
- delete openWindows[this.sectionID];
- this.root.fadeOut('slow', function() {
- self.root.remove();
- });
- }
-
- Window.openFor = function(sectionID) {
- if (sectionID in openWindows)
- return openWindows[sectionID];
- return new Window(sectionID);
- }
-
- return Window;
- })()
+ }
};

+// quick alias for translations
+_ = Documentation.gettext;

$(document).ready(function() {
Documentation.init();
=======================================
--- /doc/html/_static/jquery.js Fri Sep 5 18:30:25 2008
+++ /doc/html/_static/jquery.js Mon Jun 13 12:13:11 2011
@@ -1,32 +1,4376 @@
-/*
- * jQuery 1.2.3 - New Wave Javascript
+/*!
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
*
- * Copyright (c) 2008 John Resig (jquery.com)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
*
- * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
- * $Rev: 4663 $
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
*/
-(function(){if(window.jQuery)var _jQuery=window.jQuery;var
jQuery=window.jQuery=function(selector,context){return new
jQuery.prototype.init(selector,context);};if(window.$)var
_$=window.$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|
^#(\w+)$/;var
isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector|
|document;if(selector.nodeType){this[0]=selector;this.length=1;return
this;}else if(typeof selector=="string"){var
match=quickExpr.exec(selector);if(match&&(match[1]|
|!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var
elem=document.getElementById(match[3]);if(elem)if(elem.id!=match[3])return
jQuery().find(selector);else{this[0]=elem;this.length=1;return this;}else
-selector=[];}}else
-return new jQuery(context).find(selector);}else
if(jQuery.isFunction(selector))return new
jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return
this.setArray(selector.constructor==Array&&selector||(selector.jquery||
selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)|
|[selector]);},jquery:"1.2.3",size:function(){return
this.length;},length:0,get:function(num){return
num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var
ret=jQuery(elems);ret.prevObject=this;return
ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return
this;},each:function(callback,args){return
jQuery.each(this,callback,args);},index:function(elem){var
ret=-1;this.each(function(i){if(this==elem)ret=i;});return
ret;},attr:function(name,value,type){var
options=name;if(name.constructor==String)if(value==undefined)return
this.length&&jQuery[type||"attr"](this[0],name)||
undefined;else{options={};options[name]=value;}return
this.each(function(i){for(name in
options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'|
|key=='height')&&parseFloat(value)<0)value=undefined;return
this.attr(key,value,"curCSS");},text:function(text){if(typeof
text!="object"&&text!=null)return
this.empty().append((this[0]&&this[0].ownerDocument||
document).createTextNode(text));var ret="";jQuery.each(text||
this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return
ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var
elem=this;while(elem.firstChild)elem=elem.firstChild;return
elem;}).append(this);return this;},wrapInner:function(html){return
this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return
this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return
this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return
this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return
this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return
this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return
this.prevObject||jQuery([]);},find:function(selector){var
elems=jQuery.map(this,function(elem){return
jQuery.find(selector,elem);});return this.pushStack(/[^+>]
[^+>]/.test(selector)||
selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var
ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var
clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return
jQuery.clean([container.innerHTML])[0];}else
-return this.cloneNode(true);});var
clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var
events=jQuery.data(this,"events");for(var type in events)for(var handler in
events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return
ret;},filter:function(selector){return
this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return
selector.call(elem,i);})||
jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return
this.pushStack(jQuery.multiFilter(selector,this,true));else
-selector=jQuery.multiFilter(selector,this);var
isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return
this.filter(function(){return
isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return!selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName|
|
jQuery.nodeName(selector,"form"))?selector:[selector]));},is:function(selector){return
selector?jQuery.multiFilter(selector,this).length>0:false;},hasClass:function(selector){return
this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var
elem=this[0];if(jQuery.nodeName(elem,"select")){var
index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return
null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var
option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return
value;values.push(value);}}return values;}else
-return(this[0].value||"").replace(/\r/g,"");}return undefined;}return
this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|
checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0|
|jQuery.inArray(this.name,value)>=0);else
if(jQuery.nodeName(this,"select")){var
values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0|
|
jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
-this.value=value;});},html:function(value){return
value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return
this.after(value).remove();},eq:function(i){return
this.slice(i,i+1);},slice:function(){return
this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return
this.pushStack(jQuery.map(this,function(elem,i){return
callback.call(elem,i,elem);}));},andSelf:function(){return
this.add(this.prevObject);},data:function(key,value){var
parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var
data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length)data=jQuery.data(this[0],key);return
data==null&&parts[1]?this.data(parts[0]):data;}else
-return
this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return
this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var
clone=this.length>1,elems;return
this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var
obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]|
|this.appendChild(this.ownerDocument.createElement("tbody"));var
scripts=jQuery([]);jQuery.each(elems,function(){var
elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.prototype.init.prototype=jQuery.prototype;function
evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
-jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML|
|"");if(elem.parentNode)elem.parentNode.removeChild(elem);}jQuery.extend=jQuery.fn.extend=function(){var
target=arguments[0]||
{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]|
|{};i=2;}if(typeof target!="object"&&typeof
target!="function")target={};if(length==1){target=this;i=0;}for(;i<length;i++)if((options=arguments[i])!=null)for(var
name in
options){if(target===options[name])continue;if(deep&&options[name]&&typeof
options[name]=="object"&&target[name]&&!options[name].nodeType)target[name]=jQuery.extend(target[name],options[name]);else
if(options[name]!=undefined)target[name]=options[name];}return target;};var
expando="jQuery"+(new Date()).getTime(),uuid=0,windowData={};var
exclude=/z-?index|font-?weight|opacity|zoom|
line-?height/i;jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return
jQuery;},isFunction:function(fn){return!!fn&&typeof
fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/function/i.test(fn+"");},isXMLDoc:function(elem){return
elem.documentElement&&!elem.body||
elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var
head=document.getElementsByTagName("head")[0]||
document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
-script.appendChild(document.createTextNode(data));head.appendChild(script);head.removeChild(script);}},nodeName:function(elem,name){return
elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var
id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!=undefined)jQuery.cache[id][name]=data;return
name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var
id=elem[expando];if(name){if(jQuery.cache[id]){delete
jQuery.cache[id][name];name="";for(name
in
jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete
elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete
jQuery.cache[id];}},each:function(object,callback,args){if(args){if(object.length==undefined){for(var
name in object)if(callback.apply(object[name],args)===false)break;}else
-for(var
i=0,length=object.length;i<length;i++)if(callback.apply(object[i],args)===false)break;}else{if(object.length==undefined){for(var
name in
object)if(callback.call(object[name],name,object[name])===false)break;}else
-for(var
i=0,length=object.length,value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return
object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return
value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames|
|"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return
jQuery.inArray(className,(elem.className||
elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var
old={};for(var name in
options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var
name in
options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"|
|name=="height"){var
val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function
getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var
padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))|
|0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||
0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
-jQuery.swap(elem,props,getWH);return Math.max(0,val);}return
jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var
ret;function color(elem){if(!jQuery.browser.safari)return false;var
ret=document.defaultView.getComputedStyle(elem,null);return!ret||
ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return
ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var
save=elem.style.outline;elem.style.outline="0 solid
black";elem.style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&elem.style&&elem.style[name])ret=elem.style[name];else
if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var
getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var
swap=[],stack=[];for(var
a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var
i=0;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(getComputedStyle&&getComputedStyle.getPropertyValue(name))|
|"";for(var
i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else
if(elem.currentStyle){var
camelCase=name.replace(/\-(\w)/g,function(all,letter){return
letter.toUpperCase();});ret=elem.currentStyle[name]||
elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var
style=elem.style.left,runtimeStyle=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;elem.style.left=ret|
|
0;ret=elem.style.pixelLeft+"px";elem.style.left=style;elem.runtimeStyle.left=runtimeStyle;}}return
ret;},clean:function(elems,context){var ret=[];context=context||
document;if(typeof
context.createElement=='undefined')context=context.ownerDocument||
context[0]&&context[0].ownerDocument||
document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem=elem.toString();if(typeof
elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return
tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|
embed)$/i)?all:front+"></"+tag+">";});var
tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var
wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]|
|!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||
tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]|
|!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||
(!tags.indexOf("<td")|
|!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]|
|!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]|
|jQuery.browser.msie&&[1,"div<div>","</div>"]||
[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var
tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var
j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined|
|jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
-ret=jQuery.merge(ret,elem);});return
ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||
elem.nodeType==8)return undefined;var
fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return
elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return
jQuery.attr(elem.style,"cssText",value);else
if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"|
|name=="method"))return elem.getAttributeNode(name).nodeValue;else
if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type
property can't be
changed";elem.setAttribute(name,""+value);}if(jQuery.browser.msie&&/href|
src/.test(name)&&!jQuery.isXMLDoc(elem))return
elem.getAttribute(name,2);return
elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter|
|"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return
elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(all,letter){return
letter.toUpperCase();});if(value!=undefined)elem[name]=value;return
elem[name];}},trim:function(text){return(text||"").replace(/^\s+|
\s+$/g,"");},makeArray:function(array){var ret=[];if(typeof
array!="array")for(var
i=0,length=array.length;i<length;i++)ret.push(array[i]);else
-ret=array.slice(0);return ret;},inArray:function(elem,array){for(var
i=0,length=array.length;i<length;i++)if(array[i]==elem)return
i;return-1;},merge:function(first,second){if(jQuery.browser.msie){for(var
i=0;second[i];i++)if(second[i].nodeType!=8)first.push(second[i]);}else
-for(var i=0;second[i];i++)first.push(second[i]);return
first;},unique:function(array){var ret=[],done={};try{for(var
i=0,length=array.length;i<length;i++){var
id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return
ret;},grep:function(elems,callback,inv){var ret=[];for(var
i=0,length=elems.length;i<length;i++)if(!inv&&callback(elems[i],i)||
inv&&!callback(elems[i],i))ret.push(elems[i]);return
ret;},map:function(elems,callback){var ret=[];for(var
i=0,length=elems.length;i<length;i++){var
value=callback(elems[i],i);if(value!==null&&value!=undefined){if(value.constructor!=Array)value=[value];ret=ret.concat(value);}}return
ret;}});var
userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|
it|ra|ie)[\/: ]([\d.]+)/)||
[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|
webkit)/.test(userAgent)};var
styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie|
|
document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,innerHTML:"innerHTML",className:"className",value:"value",disabled:"disabled",checked:"checked",readonly:"readOnly",selected:"selected",maxlength:"maxLength",selectedIndex:"selectedIndex",defaultValue:"defaultValue",tagName:"tagName",nodeName:"nodeName"}});jQuery.each({parent:function(elem){return
elem.parentNode;},parents:function(elem){return
jQuery.dir(elem,"parentNode");},next:function(elem){return
jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return
jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return
jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return
jQuery.dir(elem,"previousSibling");},siblings:function(elem){return
jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return
jQuery.sibling(elem.firstChild);},contents:function(elem){return
jQuery.nodeName(elem,"iframe")?elem.contentDocument||
elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var
ret=jQuery.map(this,fn);if(selector&&typeof
selector=="string")ret=jQuery.multiFilter(selector,ret);return
this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var
args=arguments;return this.each(function(){for(var
i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector|
|
jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return
this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var
type=name.toLowerCase();jQuery.fn[type]=function(size){return
this[0]==window?jQuery.browser.opera&&document.body["client"+name]||
jQuery.browser.safari&&window["inner"+name]||
document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||
document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});var
chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|
\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new
RegExp("^>\\s*("+chars+"+)"),quickID=new
RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new
RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return
m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return
a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return
i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return
m[3]-0==i;},eq:function(a,i,m){return
m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return
i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return
i%2;},"first-child":function(a){return
a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return
jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return
a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent|
|a.innerText||jQuery(a).text()|
|"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type|
|jQuery.css(a,"display")=="none"||
jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return
a.disabled;},checked:function(a){return
a.checked;},selected:function(a){return a.selected||
jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type|
|jQuery.nodeName(a,"button");},input:function(a){return/input|select|
textarea|button/i.test(a.nodeName);},has:function(a,i,m){return
jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return
jQuery.grep(jQuery.timers,function(fn){return
a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*)
*('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new
RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var
old,cur=[];while(expr&&expr!=old){old=expr;var
f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return
cur;},find:function(t,context){if(typeof
t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context|
|document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var
r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var
m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var
i=0;ret[i];i++)for(var
c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||
c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var
merge={};nodeName=m[2].toUpperCase();m=m[1];for(var
j=0,rl=ret.length;j<rl;j++){var n=m=="~"||
m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var
id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||
n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var
re2=quickID;var
m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var
elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var
oid=elem.getElementById(m[2]);if((jQuery.browser.msie||
jQuery.browser.opera)&&oid&&typeof
oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]|
|jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var
tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||
m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var
tmp=[];for(var
i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var
val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return
done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var
i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass|
|not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var
last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var
i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else
if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var
tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var
a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|
selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||
type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||
type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||
type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else
if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|
-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"|
|!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||
1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var
node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var
c=1;for(var
n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var
add=false;if(first==0){if(node.nodeIndex==last)add=true;}else
if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var
fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof
fn=="string")fn=eval("false||
function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return
fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var
matched=[];var
cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return
matched;},nth:function(cur,result,dir,elem){result=result||1;var
num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return
cur;},sibling:function(n,elem){var
r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||
n!=elem))r.push(n);}return
r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3|
|
elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval!=undefined)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var
fn=handler;handler=function(){return
fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var
events=jQuery.data(elem,"events")||
jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||
jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||
jQuery.event.triggered)return
val;val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return
val;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var
parts=type.split(".");type=parts[0];handler.type=parts[1];var
handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]|
|
jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else
if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3|
|elem.nodeType==8)return;var
events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||
(typeof types=="string"&&types.charAt(0)=="."))for(var type in
events)this.remove(elem,type+(types|
|""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var
parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete
events[type][handler.guid];else
-for(handler in events[type])if(!parts[1]||
events[type][handler].type==parts[1])delete events[type][handler];for(ret
in events[type])break;if(!ret){if(!jQuery.event.special[type]||
jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else
if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete
events[type];}}});}for(ret in events)break;if(!ret){var
handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data|
|[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var
exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3|
|elem.nodeType==8)return undefined;var
val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]|
|!data[0].preventDefault;if(event)data.unshift(this.fix({type:type,target:elem}));data[0].type=type;if(exclusive)data[0].exclusive=true;if(jQuery.isFunction(jQuery.data(elem,"handle")))val=jQuery.data(elem,"handle").apply(elem,data);if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return
val;},handle:function(event){var val;event=jQuery.event.fix(event||
window.event||{});var parts=event.type.split(".");event.type=parts[0];var
handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var
j in handlers){var
handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive|
|handler.type==parts[1]){var
ret=handler.apply(this,args);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return
val;},fix:function(event){var
originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target)event.target=event.srcElement|
|
document;if(event.target.nodeType==3)event.target=originalEvent.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var
doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft|
|body&&body.scrollLeft||0)-(doc.clientLeft||
0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||
0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||
event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode|
|
event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return
event;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return
false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return
true;},teardown:function(){if(jQuery.browser.msie)return
false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return
true;},handler:function(event){if(withinElement(event,this))return
true;arguments[0].type="mouseenter";return
jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return
false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return
true;},teardown:function(){if(jQuery.browser.msie)return
false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return
true;},handler:function(event){if(withinElement(event,this))return
true;arguments[0].type="mouseleave";return
jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return
type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn|
|data,fn&&data);});},one:function(type,data,fn){return
this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn|
|
data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return
this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return
this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return
jQuery.event.trigger(type,data,this[0],false,fn);return
undefined;},toggle:function(){var args=arguments;return
this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return
args[this.lastToggle].apply(this,arguments)||
false;});},hover:function(fnOver,fnOut){return
this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
-jQuery.readyList.push(function(){return fn.call(this,jQuery);});return
this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var
readyBound=false;function
bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var
i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var
numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style,
link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return
fn?this.bind(name,fn):this.trigger(name);};});var
withinElement=function(event,elem){var
parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return
parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({load:function(url,params,callback){if(jQuery.isFunction(url))return
this.bind("load",url);var off=url.indexOf(" ");if(off>=0){var
selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||
function(){};var
type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var
self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"|
|
status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|
\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return
this;},serialize:function(){return
jQuery.param(this.serializeArray());},serializeArray:function(){return
this.map(function(){return
jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return
this.name&&!this.disabled&&(this.checked||/select|
textarea/i.test(this.nodeName)||/text|hidden|
password/i.test(this.type));}).map(function(i,elem){var
val=jQuery(this).val();return
val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return
this.bind(o,f);};});var jsc=(new
Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return
jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return
jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return
jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return
jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml,
text/xml",html:"text/html",script:"text/javascript,
application/javascript",json:"application/json,
text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){var
jsonp,jsre=/=\?(&|
$)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof
s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(s.type.toLowerCase()=="get"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp|
|"callback")+"=?";}else if(!s.data|
|!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp|
|"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)|
|
s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete
window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&s.type.toLowerCase()=="get"){var
ts=(new Date()).getTime();var ret=s.url.replace(/(\?|&)_=.*?(&|
$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&s.type.toLowerCase()=="get"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if((!s.url.indexOf("http")|
|!s.url.indexOf("//"))&&s.dataType=="script"&&s.type.toLowerCase()=="get"){var
head=document.getElementsByTagName("head")[0];var
script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var
done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState|
|this.readyState=="loaded"||
this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return
undefined;}var requestDone=false;var xml=window.ActiveXObject?new
ActiveXObject("Microsoft.XMLHTTP"):new
XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data)xml.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]|
|"Thu, 01 Jan 1970 00:00:00
GMT");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");xml.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+",
*/*":s.accepts._default);}catch(e){}if(s.beforeSend)s.beforeSend(xml);if(s.global)jQuery.event.trigger("ajaxSend",[xml,s]);var
onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4|
|
isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"|
|!jQuery.httpSuccess(xml)&&"error"||
s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"|
|"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType);}catch(e){status="parsererror";}}if(status=="success"){var
modRes;try{modRes=xml.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
-jQuery.handleError(s,xml,status);complete();if(s.async)xml=null;}};if(s.async){var
ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xml){xml.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xml.send(s.data);}catch(e){jQuery.handleError(s,xml,null,e);}if(!s.async)onreadystatechange();function
success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xml,s]);}function
complete(){if(s.complete)s.complete(xml,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return
xml;},handleError:function(s,xml,status,e){if(s.error)s.error(xml,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xml,s,e]);},active:0,httpSuccess:function(r){try{return!r.status&&location.protocol=="file:"|
|
(r.status>=200&&r.status<300)||r.status==304||r.status==1223||
jQuery.browser.safari&&r.status==undefined;}catch(e){}return
false;},httpNotModified:function(xml,url){try{var
xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||
xmlRes==jQuery.lastModified[url]||
jQuery.browser.safari&&xml.status==undefined;}catch(e){}return
false;},httpData:function(r,type){var
ct=r.getResponseHeader("content-type");var xml=type=="xml"|
|!type&&ct&&ct.indexOf("xml")>=0;var
data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return
data;},param:function(a){var s=[];if(a.constructor==Array||
a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
-for(var j in
a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
-s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return
s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return
speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock|
|"";if(jQuery.css(this,"display")=="none"){var
elem=jQuery("<"+this.tagName+"
/>").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return
speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock|
|
jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return
jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return
this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return
this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return
this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return
this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return
this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return
this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var
optall=jQuery.speed(speed,easing,callback);return
this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return
false;var opt=jQuery.extend({},optall);var
hidden=jQuery(this).is(":hidden"),self=this;for(var p in
prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return
jQuery.isFunction(opt.complete)&&opt.complete.apply(this);if(p=="height"||
p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var
e=new jQuery.fx(self,opt,name);if(/toggle|show|
hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var
parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||
0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]|
|"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||
1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
-e.custom(start,val,"");}});return
true;});},queue:function(type,fn){if(jQuery.isFunction(type)||
(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof
type=="string"&&!fn))return queue(this[0],type);return
this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.apply(this);}});},stop:function(clearQueue,gotoEnd){var
timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var
i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return
this;}});var queue=function(elem,type,array){if(!elem)return
undefined;type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||
array)q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[]);return
q;};jQuery.fn.dequeue=function(type){type=type||"fx";return
this.each(function(){var
q=queue(this,type);q.shift();if(q.length)q[0].apply(this);});};jQuery.extend({speed:function(speed,easing,fn){var
opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||
jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||
easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])|
|
400;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.apply(this);};return
opt;},easing:{linear:function(p,n,firstNum,diff){return
firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.apply(this.elem,[this.now,this]);(jQuery.fx.step[this.prop]|
|jQuery.fx.step._default)(this);if(this.prop=="height"||
this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return
this.elem[this.prop];var
r=parseFloat(jQuery.css(this.elem,this.prop,force));return
r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||
0;},custom:function(from,to,unit){this.startTime=(new
Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit|
|"px";this.now=this.start;this.pos=this.state=0;this.update();var
self=this;function t(gotoEnd){return
self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var
timers=jQuery.timers;for(var
i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"|
|
this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var
t=(new Date()).getTime();if(gotoEnd||
t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var
done=true;for(var i in
this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide|
|this.options.show)for(var p in
this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done&&jQuery.isFunction(this.options.complete))this.options.complete.apply(this.elem);return
false;}else{var
n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing|
|
(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return
true;}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}};jQuery.fn.offset=function(){var
left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var
parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),fixed=jQuery.css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var
box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|
d|h)$/i.test(offsetParent.tagName)||
safari&&!safari2)border(offsetParent);if(!fixed&&jQuery.css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|
html$/i.test(parent.tagName)){if(!/^inline|
table.*$/i.test(jQuery.css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&jQuery.css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed|
|jQuery.css(offsetChild,"position")=="absolute"))||
(mozilla&&jQuery.css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function
border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function
add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0;}return results;};})();
+(function(){
+
+var
+ // Will speed up references to window, and allows munging its name.
+ window = this,
+ // Will speed up references to undefined, and allows munging its name.
+ undefined,
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ jQuery = window.jQuery = window.$ = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ // Make sure that a selection was provided
+ selector = selector || document;
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this[0] = selector;
+ this.length = 1;
+ this.context = selector;
+ return this;
+ }
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ var match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] )
+ selector = jQuery.clean( [ match[1] ], context );
+
+ // HANDLE: $("#id")
+ else {
+ var elem = document.getElementById( match[3] );
+
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem && elem.id != match[3] )
+ return jQuery().find( selector );
+
+ // Otherwise, we inject the element directly into the jQuery object
+ var ret = jQuery( elem || [] );
+ ret.context = document;
+ ret.selector = selector;
+ return ret;
+ }
+
+ // HANDLE: $(expr, [context])
+ // (which is just equivalent to: $(content).find(expr)
+ } else
+ return jQuery( context ).find( selector );
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) )
+ return jQuery( document ).ready( selector );
+
+ // Make sure that old selector state is passed along
+ if ( selector.selector && selector.context ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return this.setArray(jQuery.isArray( selector ) ?
+ selector :
+ jQuery.makeArray(selector));
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.3.2",
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num === undefined ?
+
+ // Return a 'clean' array
+ Array.prototype.slice.call( this ) :
+
+ // Return just the object
+ this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery( elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" )
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ else if ( name )
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Force the current matched set of elements to become
+ // the specified array of elements (destroying the stack in the process)
+ // You should use pushStack() in order to do this, but maintain the stack
+ setArray: function( elems ) {
+ // Resetting the length to 0, then using the native Array push
+ // is a super-fast way to populate an object with array-like properties
+ this.length = 0;
+ Array.prototype.push.apply( this, elems );
+
+ return this;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem && elem.jquery ? elem[0] : elem
+ , this );
+ },
+
+ attr: function( name, value, type ) {
+ var options = name;
+
+ // Look for the case where we're accessing a style value
+ if ( typeof name === "string" )
+ if ( value === undefined )
+ return this[0] && jQuery[ type || "attr" ]( this[0], name );
+
+ else {
+ options = {};
+ options[ name ] = value;
+ }
+
+ // Check to see if we're setting style values
+ return this.each(function(i){
+ // Set all the styles
+ for ( name in options )
+ jQuery.attr(
+ type ?
+ this.style :
+ this,
+ name, jQuery.prop( this, options[ name ], type, i, name )
+ );
+ });
+ },
+
+ css: function( key, value ) {
+ // ignore negative width and height values
+ if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+ value = undefined;
+ return this.attr( key, value, "curCSS" );
+ },
+
+ text: function( text ) {
+ if ( typeof text !== "object" && text != null )
+ return this.empty().append( (this[0] && this[0].ownerDocument ||
document).createTextNode( text ) );
+
+ var ret = "";
+
+ jQuery.each( text || this, function(){
+ jQuery.each( this.childNodes, function(){
+ if ( this.nodeType != 8 )
+ ret += this.nodeType != 1 ?
+ this.nodeValue :
+ jQuery.fn.text( [ this ] );
+ });
+ });
+
+ return ret;
+ },
+
+ wrapAll: function( html ) {
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).clone();
+
+ if ( this[0].parentNode )
+ wrap.insertBefore( this[0] );
+
+ wrap.map(function(){
+ var elem = this;
+
+ while ( elem.firstChild )
+ elem = elem.firstChild;
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ return this.each(function(){
+ jQuery( this ).contents().wrapAll( html );
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function(){
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.appendChild( elem );
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.insertBefore( elem, this.firstChild );
+ });
+ },
+
+ before: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this );
+ });
+ },
+
+ after: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ },
+
+ end: function() {
+ return this.prevObject || jQuery( [] );
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: [].push,
+ sort: [].sort,
+ splice: [].splice,
+
+ find: function( selector ) {
+ if ( this.length === 1 ) {
+ var ret = this.pushStack( [], "find", selector );
+ ret.length = 0;
+ jQuery.find( selector, this[0], ret );
+ return ret;
+ } else {
+ return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
+ return jQuery.find( selector, elem );
+ })), "find", selector );
+ }
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function(){
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML;
+ if ( !html ) {
+ var div = this.ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|
null)"/g, "").replace(/^\s*/, "")])[0];
+ } else
+ return this.cloneNode(true);
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ var orig = this.find("*").andSelf(), i = 0;
+
+ ret.find("*").andSelf().each(function(){
+ if ( this.nodeName !== orig[i].nodeName )
+ return;
+
+ var events = jQuery.data( orig[i], "events" );
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[
type ][ handler ].data );
+ }
+ }
+
+ i++;
+ });
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ filter: function( selector ) {
+ return this.pushStack(
+ jQuery.isFunction( selector ) &&
+ jQuery.grep(this, function(elem, i){
+ return selector.call( elem, i );
+ }) ||
+
+ jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
+ return elem.nodeType === 1;
+ }) ), "filter", selector );
+ },
+
+ closest: function( selector ) {
+ var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) :
null,
+ closer = 0;
+
+ return this.map(function(){
+ var cur = this;
+ while ( cur && cur.ownerDocument ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
+ jQuery.data(cur, "closest", closer);
+ return cur;
+ }
+ cur = cur.parentNode;
+ closer++;
+ }
+ });
+ },
+
+ not: function( selector ) {
+ if ( typeof selector === "string" )
+ // test special case where just one selector is passed in
+ if ( isSimple.test( selector ) )
+ return this.pushStack( jQuery.multiFilter( selector, this, true
), "not", selector );
+ else
+ selector = jQuery.multiFilter( selector, this );
+
+ var isArrayLike = selector.length && selector[selector.length - 1] !==
undefined && !selector.nodeType;
+ return this.filter(function() {
+ return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this !=
selector;
+ });
+ },
+
+ add: function( selector ) {
+ return this.pushStack( jQuery.unique( jQuery.merge(
+ this.get(),
+ typeof selector === "string" ?
+ jQuery( selector ) :
+ jQuery.makeArray( selector )
+ )));
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.multiFilter( selector, this ).length > 0;
+ },
+
+ hasClass: function( selector ) {
+ return !!selector && this.is( "." + selector );
+ },
+
+ val: function( value ) {
+ if ( value === undefined ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if( jQuery.nodeName( elem, 'option' ) )
+ return (elem.attributes.value || {}).specified ? elem.value :
elem.text;
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected
+ if ( index < 0 )
+ return null;
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 :
options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ if ( option.selected ) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one )
+ return value;
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(/\r/g, "");
+
+ }
+
+ return undefined;
+ }
+
+ if ( typeof value === "number" )
+ value += '';
+
+ return this.each(function(){
+ if ( this.nodeType != 1 )
+ return;
+
+ if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
+ this.checked = (jQuery.inArray(this.value, value) >= 0 ||
+ jQuery.inArray(this.name, value) >= 0);
+
+ else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(value);
+
+ jQuery( "option", this ).each(function(){
+ this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
+ jQuery.inArray( this.text, values ) >= 0);
+ });
+
+ if ( !values.length )
+ this.selectedIndex = -1;
+
+ } else
+ this.value = value;
+ });
+ },
+
+ html: function( value ) {
+ return value === undefined ?
+ (this[0] ?
+ this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
+ null) :
+ this.empty().append( value );
+ },
+
+ replaceWith: function( value ) {
+ return this.after( value ).remove();
+ },
+
+ eq: function( i ) {
+ return this.slice( i, +i + 1 );
+ },
+
+ slice: function() {
+ return this.pushStack( Array.prototype.slice.apply( this, arguments ),
+ "slice", Array.prototype.slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function(elem, i){
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ },
+
+ domManip: function( args, table, callback ) {
+ if ( this[0] ) {
+ var fragment = (this[0].ownerDocument ||
this[0]).createDocumentFragment(),
+ scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]),
fragment ),
+ first = fragment.firstChild;
+
+ if ( first )
+ for ( var i = 0, l = this.length; i < l; i++ )
+ callback.call( root(this[i], first), this.length > 1 || i > 0 ?
+ fragment.cloneNode(true) : fragment );
+
+ if ( scripts )
+ jQuery.each( scripts, evalScript );
+ }
+
+ return this;
+
+ function root( elem, cur ) {
+ return table && jQuery.nodeName(elem, "table") &&
jQuery.nodeName(cur, "tr") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+ }
+ }
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+function evalScript( i, elem ) {
+ if ( elem.src )
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+
+ else
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || ""
);
+
+ if ( elem.parentNode )
+ elem.parentNode.removeChild( elem );
+}
+
+function now(){
+ return +new Date;
+}
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep =
false, options;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep
copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) )
+ target = {};
+
+ // extend jQuery itself if only one argument is passed
+ if ( length == i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ )
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null )
+ // Extend the base object
+ for ( var name in options ) {
+ var src = target[ name ], copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy )
+ continue;
+
+ // Recurse if we're merging object values
+ if ( deep && copy && typeof copy === "object" && !copy.nodeType )
+ target[ name ] = jQuery.extend( deep,
+ // Never move original objects, clone them
+ src || ( copy.length != null ? [ ] : { } )
+ , copy );
+
+ // Don't bring in undefined values
+ else if ( copy !== undefined )
+ target[ name ] = copy;
+
+ }
+
+ // Return the modified object
+ return target;
+};
+
+// exclude the following css properties to add px
+var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ // cache defaultView
+ defaultView = document.defaultView || {},
+ toString = Object.prototype.toString;
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep )
+ window.jQuery = _jQuery;
+
+ return jQuery;
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ // check if an element is in a (or is an) XML document
+ isXMLDoc: function( elem ) {
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
+ },
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && /\S/.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ //
http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] ||
document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+ if ( jQuery.support.scriptEval )
+ script.appendChild( document.createTextNode( data ) );
+ else
+ script.text = data;
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() ==
name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0, length = object.length;
+
+ if ( args ) {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.apply( object[ name ], args ) === false )
+ break;
+ } else
+ for ( ; i < length; )
+ if ( callback.apply( object[ i++ ], args ) === false )
+ break;
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.call( object[ name ], name, object[ name ] ) === false )
+ break;
+ } else
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value =
object[++i] ){}
+ }
+
+ return object;
+ },
+
+ prop: function( elem, value, type, i, name ) {
+ // Handle executable functions
+ if ( jQuery.isFunction( value ) )
+ value = value.call( elem, i );
+
+ // Handle passing in a number to a CSS property
+ return typeof value === "number" && type == "curCSS" && !exclude.test(
name ) ?
+ value + "px" :
+ value;
+ },
+
+ className: {
+ // internal only, use addClass("class")
+ add: function( elem, classNames ) {
+ jQuery.each((classNames || "").split(/\s+/), function(i, className){
+ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className,
className ) )
+ elem.className += (elem.className ? " " : "") + className;
+ });
+ },
+
+ // internal only, use removeClass("class")
+ remove: function( elem, classNames ) {
+ if (elem.nodeType == 1)
+ elem.className = classNames !== undefined ?
+ jQuery.grep(elem.className.split(/\s+/), function(className){
+ return !jQuery.className.has( classNames, className );
+ }).join(" ") :
+ "";
+ },
+
+ // internal only, use hasClass("class")
+ has: function( elem, className ) {
+ return elem && jQuery.inArray( className, (elem.className ||
elem).toString().split(/\s+/) ) > -1;
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct
calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( var name in options )
+ elem.style[ name ] = old[ name ];
+ },
+
+ css: function( elem, name, force, extra ) {
+ if ( name == "width" || name == "height" ) {
+ var val, props = { position: "absolute", visibility: "hidden",
display:"block" }, which = name == "width" ? [ "Left", "Right" ] :
[ "Top", "Bottom" ];
+
+ function getWH() {
+ val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" )
+ return;
+
+ jQuery.each( which, function() {
+ if ( !extra )
+ val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ if ( extra === "margin" )
+ val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+ else
+ val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width",
true)) || 0;
+ });
+ }
+
+ if ( elem.offsetWidth !== 0 )
+ getWH();
+ else
+ jQuery.swap( elem, props, getWH );
+
+ return Math.max(0, Math.round(val));
+ }
+
+ return jQuery.curCSS( elem, name, force );
+ },
+
+ curCSS: function( elem, name, force ) {
+ var ret, style = elem.style;
+
+ // We need to handle opacity special in IE
+ if ( name == "opacity" && !jQuery.support.opacity ) {
+ ret = jQuery.attr( style, "opacity" );
+
+ return ret == "" ?
+ "1" :
+ ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( name.match( /float/i ) )
+ name = styleFloat;
+
+ if ( !force && style && style[ name ] )
+ ret = style[ name ];
+
+ else if ( defaultView.getComputedStyle ) {
+
+ // Only "float" is needed here
+ if ( name.match( /float/i ) )
+ name = "float";
+
+ name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+
+ var computedStyle = defaultView.getComputedStyle( elem, null );
+
+ if ( computedStyle )
+ ret = computedStyle.getPropertyValue( name );
+
+ // We should always get a number back from opacity
+ if ( name == "opacity" && ret == "" )
+ ret = "1";
+
+ } else if ( elem.currentStyle ) {
+ var camelCase = name.replace(/\-(\w)/g, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = ret || 0;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret;
+ },
+
+ clean: function( elems, context, fragment ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns
typeof 'object'
+ if ( typeof context.createElement === "undefined" )
+ context = context.ownerDocument || context[0] &&
context[0].ownerDocument || document;
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
+ var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
+ if ( match )
+ return [ context.createElement( match[1] ) ];
+ }
+
+ var ret = [], scripts = [], div = context.createElement("div");
+
+ jQuery.each(elems, function(i, elem){
+ if ( typeof elem === "number" )
+ elem += '';
+
+ if ( !elem )
+ return;
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|
embed)$/i) ?
+ all :
+ front + "></" + tag + ">";
+ });
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
+
+ var wrap =
+ // option or optgroup
+ !tags.indexOf("<opt") &&
+ [ 1, "<select multiple='multiple'>", "</select>" ] ||
+
+ !tags.indexOf("<leg") &&
+ [ 1, "<fieldset>", "</fieldset>" ] ||
+
+ tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
+ [ 1, "<table>", "</table>" ] ||
+
+ !tags.indexOf("<tr") &&
+ [ 2, "<table><tbody>", "</tbody></table>" ] ||
+
+ // <thead> matched above
+ (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
+ [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+
+ !tags.indexOf("<col") &&
+ [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+
+ // IE can't serialize <link> and <script> tags normally
+ !jQuery.support.htmlSerialize &&
+ [ 1, "div<div>", "</div>" ] ||
+
+ [ 0, "", "" ];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( wrap[0]-- )
+ div = div.lastChild;
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = /<tbody/i.test(elem),
+ tbody = !tags.indexOf("<table") && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] == "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j )
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j
].childNodes.length )
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
+ div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ),
div.firstChild );
+
+ elem = jQuery.makeArray( div.childNodes );
+ }
+
+ if ( elem.nodeType )
+ ret.push( elem );
+ else
+ ret = jQuery.merge( ret, elem );
+
+ });
+
+ if ( fragment ) {
+ for ( var i = 0; ret[i]; i++ ) {
+ if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type ||
ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild(
ret[i] ) : ret[i] );
+ } else {
+ if ( ret[i].nodeType === 1 )
+ ret.splice.apply( ret, [i + 1,
0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ fragment.appendChild( ret[i] );
+ }
+ }
+
+ return scripts;
+ }
+
+ return ret;
+ },
+
+ attr: function( elem, name, value ) {
+ // don't set attributes on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
***The diff for this file has been truncated for email.***
=======================================
--- /doc/html/_static/searchtools.js Fri Sep 5 18:30:25 2008
+++ /doc/html/_static/searchtools.js Mon Jun 13 12:13:11 2011
@@ -5,24 +5,24 @@
* words. the first one is used to find the occurance, the
* latter for highlighting it.
*/
+
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
- var textLower = text.toLowerCase();
- var start = 0;
- $.each(keywords, function() {
- var i = textLower.indexOf(this.toLowerCase());
- if (i > -1) {
- start = i;
- }
- });
- start = Math.max(start - 120, 0);
- var excerpt = ((start > 0) ? '...' : '') +
- $.trim(text.substr(start, 240)) +
- ((start + 240 - text.length) ? '...' : '');
- var rv = $('<div class="context"></div>').text(excerpt);
- $.each(hlwords, function() {
- rv = rv.highlightText(this, 'highlight');
- });
- return rv;
+ var textLower = text.toLowerCase();
+ var start = 0;
+ $.each(keywords, function() {
+ var i = textLower.indexOf(this.toLowerCase());
+ if (i > -1)
+ start = i;
+ });
+ start = Math.max(start - 120, 0);
+ var excerpt = ((start > 0) ? '...' : '') +
+ $.trim(text.substr(start, 240)) +
+ ((start + 240 - text.length) ? '...' : '');
+ var rv = $('<div class="context"></div>').text(excerpt);
+ $.each(hlwords, function() {
+ rv = rv.highlightText(this, 'highlight');
+ });
+ return rv;
}

/**
@@ -30,193 +30,182 @@
*/
var PorterStemmer = function() {

- var step2list = {
- ational: 'ate',
- tional: 'tion',
- enci: 'ence',
- anci: 'ance',
- izer: 'ize',
- bli: 'ble',
- alli: 'al',
- entli: 'ent',
- eli: 'e',
- ousli: 'ous',
- ization: 'ize',
- ation: 'ate',
- ator: 'ate',
- alism: 'al',
- iveness: 'ive',
- fulness: 'ful',
- ousness: 'ous',
- aliti: 'al',
- iviti: 'ive',
- biliti: 'ble',
- logi: 'log'
- };
-
- var step3list = {
- icate: 'ic',
- ative: '',
- alize: 'al',
- iciti: 'ic',
- ical: 'ic',
- ful: '',
- ness: ''
- };
-
- var c = "[^aeiou]"; // consonant
- var v = "[aeiouy]"; // vowel
- var C = c + "[^aeiouy]*"; // consonant sequence
- var V = v + "[aeiou]*"; // vowel sequence
-
- var mgr0 = "^(" + C + ")?" + V + C; // [C]VC...
is m>0
- var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V]
is m=1
- var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC...
is m>1
- var s_v = "^(" + C + ")?" + v; // vowel in
stem
-
- this.stemWord = function (w) {
- var stem;
- var suffix;
- var firstch;
- var origword = w;
-
- if (w.length < 3) {
- return w;
- }
-
- var re;
- var re2;
- var re3;
- var re4;
-
- firstch = w.substr(0,1);
- if (firstch == "y") {
- w = firstch.toUpperCase() + w.substr(1);
- }
-
- // Step 1a
- re = /^(.+?)(ss|i)es$/;
- re2 = /^(.+?)([^s])s$/;
-
- if (re.test(w)) {
- w = w.replace(re,"$1$2");
- }
- else if (re2.test(w)) {
- w = w.replace(re2,"$1$2");
- }
-
- // Step 1b
- re = /^(.+?)eed$/;
- re2 = /^(.+?)(ed|ing)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- re = new RegExp(mgr0);
- if (re.test(fp[1])) {
- re = /.$/;
- w = w.replace(re,"");
- }
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1];
- re2 = new RegExp(s_v);
- if (re2.test(stem)) {
- w = stem;
- re2 = /(at|bl|iz)$/;
- re3 = new RegExp("([^aeiouylsz])\\1$");
- re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re2.test(w)) {
- w = w + "e";
- }
- else if (re3.test(w)) {
- re = /.$/; w = w.replace(re,"");
- }
- else if (re4.test(w)) {
- w = w + "e";
- }
- }
- }
-
- // Step 1c
- re = /^(.+?)y$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(s_v);
- if (re.test(stem)) { w = stem + "i"; }
- }
-
- // Step 2
- re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|
ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|
logi)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem)) {
- w = stem + step2list[suffix];
- }
- }
-
- // Step 3
- re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem)) {
- w = stem + step3list[suffix];
- }
- }
-
- // Step 4
- re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|
ism|ate|iti|ous|ive|ize)$/;
- re2 = /^(.+?)(s|t)(ion)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- if (re.test(stem)) {
- w = stem;
- }
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1] + fp[2];
- re2 = new RegExp(mgr1);
- if (re2.test(stem)) {
- w = stem;
- }
- }
-
- // Step 5
- re = /^(.+?)e$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- re2 = new RegExp(meq1);
- re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
- w = stem;
- }
- }
- re = /ll$/;
- re2 = new RegExp(mgr1);
- if (re.test(w) && re2.test(w)) {
- re = /.$/;
- w = w.replace(re,"");
- }
-
- // and turn initial Y back to y
- if (firstch == "y") {
- w = firstch.toLowerCase() + w.substr(1);
- }
- return w;
- }
-}
-
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is
m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is
m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC...
is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|
ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|
ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}


/**
@@ -224,181 +213,255 @@
*/
var Search = {

- init : function() {
- var params = $.getQueryParameters();
- if (params.q) {
- var query = params.q[0];
- $('input[@name="q"]')[0].value = query;
- this.performSearch(query);
- }
- },
-
- /**
- * perform a search for something
- */
- performSearch : function(query) {
- // create the required interface elements
- var out = $('#search-results');
- var title = $('<h2>Searching</h2>').appendTo(out);
- var dots = $('<span></span>').appendTo(title);
- var status = $('<p style="display: none"></p>').appendTo(out);
- var output = $('<ul class="search"/>').appendTo(out);
-
- // spawn a background runner for updating the dots
- // until the search has finished
- var pulseStatus = 0;
- function pulse() {
- pulseStatus = (pulseStatus + 1) % 4;
- var dotString = '';
- for (var i = 0; i < pulseStatus; i++) {
- dotString += '.';
- }
- dots.text(dotString);
- if (pulseStatus > -1) {
- window.setTimeout(pulse, 500);
- }
- };
- pulse();
-
- // stem the searchwords and add them to the
- // correct list
- var stemmer = new PorterStemmer();
- var searchwords = [];
- var excluded = [];
- var hlwords = [];
- var tmp = query.split(/\s+/);
- for (var i = 0; i < tmp.length; i++) {
- // stem the word
- var word = stemmer.stemWord(tmp[i]).toLowerCase();
- // select the correct list
- if (word[0] == '-') {
- var toAppend = excluded;
- word = word.substr(1);
- }
- else {
- var toAppend = searchwords;
- hlwords.push(tmp[i].toLowerCase());
- }
- // only add if not already in the list
- if (!$.contains(toAppend, word)) {
- toAppend.push(word);
- }
- };
- var highlightstring = '?highlight=' +
$.urlencode(hlwords.join(" "));
-
- console.debug('SEARCH: searching for:');
- console.info('required: ', searchwords);
- console.info('excluded: ', excluded);
-
- // fetch searchindex and perform search
- $.getJSON('searchindex.json', function(data) {
-
- // prepare search
- var filenames = data[0];
- var titles = data[1]
- var words = data[2];
- var fileMap = {};
- var files = null;
-
- // perform the search on the required words
- for (var i = 0; i < searchwords.length; i++) {
- var word = searchwords[i];
- // no match but word was a required one
- if ((files = words[word]) == null) {
- break;
- }
- // create the mapping
- for (var j = 0; j < files.length; j++) {
- var file = files[j];
- if (file in fileMap) {
- fileMap[file].push(word);
- }
- else {
- fileMap[file] = [word];
- }
- }
- }
-
- // now check if the files are in the correct
- // areas and if the don't contain excluded words
- var results = [];
- for (var file in fileMap) {
- var valid = true;
-
- // check if all requirements are matched
- if (fileMap[file].length != searchwords.length) {
- continue;
- }
- // ensure that none of the excluded words is in the
- // search result.
- for (var i = 0; i < excluded.length; i++) {
- if ($.contains(words[excluded[i]] || [], file)) {
- valid = false;
- break;
- }
- }
-
- // if we have still a valid result we can add it
- // to the result list
- if (valid) {
- results.push([filenames[file], titles[file]]);
- }
- }
-
- // delete unused variables in order to not waste
- // memory until list is retrieved completely
- delete filenames, titles, words, data;
-
- // now sort the results by title
- results.sort(function(a, b) {
- var left = a[1].toLowerCase();
- var right = b[1].toLowerCase();
- return (left > right) ? -1 : ((left < right) ? 1 :
0);
- });
-
- // print the results
- var resultCount = results.length;
- function displayNextItem() {
- // results left, load the summary and display it
- if (results.length) {
- var item = results.pop();
- var listItem = $('<li style="display:none"></li>');
- listItem.append($('<a/>').attr(
- 'href',
- item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
- highlightstring).html(item[1]));
- $.get('_sources/' + item[0] + '.txt',
function(data) {
- listItem.append($.makeSearchSummary(data,
searchwords, hlwords));
- output.append(listItem);
- listItem.slideDown(10, function() {
- displayNextItem();
- });
- });
- }
- // search finished, update title and status message
- else {
- pulseStatus = -1;
- title.text('Search Results');
- if (!resultCount) {
- status.text('Your search did not match any
documents. ' +
- 'Please make sure that all words
are spelled ' +
- 'correctly and that you\'ve
selected enough ' +
- 'categories.');
- }
- else {
- status.text('Search finished, found ' +
resultCount +
- ' page' + (resultCount !=
1 ? 's' : '') +
- ' matching the search query.');
- }
- status.fadeIn(500);
- }
- }
- displayNextItem();
- });
+ _index : null,
+ _queued_query : null,
+ _pulse_status : -1,
+
+ init : function() {
+ var params = $.getQueryParameters();
+ if (params.q) {
+ var query = params.q[0];
+ $('input[name="q"]')[0].value = query;
+ this.performSearch(query);
+ }
+ },
+
+ /**
+ * Sets the index
+ */
+ setIndex : function(index) {
+ var q;
+ this._index = index;
+ if ((q = this._queued_query) !== null) {
+ this._queued_query = null;
+ Search.query(q);
+ }
+ },
+
+ hasIndex : function() {
+ return this._index !== null;
+ },
+
+ deferQuery : function(query) {
+ this._queued_query = query;
+ },
+
+ stopPulse : function() {
+ this._pulse_status = 0;
+ },
+
+ startPulse : function() {
+ if (this._pulse_status >= 0)
+ return;
+ function pulse() {
+ Search._pulse_status = (Search._pulse_status + 1) % 4;
+ var dotString = '';
+ for (var i = 0; i < Search._pulse_status; i++)
+ dotString += '.';
+ Search.dots.text(dotString);
+ if (Search._pulse_status > -1)
+ window.setTimeout(pulse, 500);
+ };
+ pulse();
+ },
+
+ /**
+ * perform a search for something
+ */
+ performSearch : function(query) {
+ // create the required interface elements
+ this.out = $('#search-results');
+ this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+ this.dots = $('<span></span>').appendTo(this.title);
+ this.status = $('<p style="display: none"></p>').appendTo(this.out);
+ this.output = $('<ul class="search"/>').appendTo(this.out);
+
+ $('#search-progress').text(_('Preparing search...'));
+ this.startPulse();
+
+ // index already loaded, the browser was quick!
+ if (this.hasIndex())
+ this.query(query);
+ else
+ this.deferQuery(query);
+ },
+
+ query : function(query) {
+ // stem the searchterms and add them to the
+ // correct list
+ var stemmer = new PorterStemmer();
+ var searchterms = [];
+ var excluded = [];
+ var hlterms = [];
+ var tmp = query.split(/\s+/);
+ var object = (tmp.length == 1) ? tmp[0].toLowerCase() : null;
+ for (var i = 0; i < tmp.length; i++) {
+ // stem the word
+ var word = stemmer.stemWord(tmp[i]).toLowerCase();
+ // select the correct list
+ if (word[0] == '-') {
+ var toAppend = excluded;
+ word = word.substr(1);
+ }
+ else {
+ var toAppend = searchterms;
+ hlterms.push(tmp[i].toLowerCase());
+ }
+ // only add if not already in the list
+ if (!$.contains(toAppend, word))
+ toAppend.push(word);
+ };
+ var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+ console.debug('SEARCH: searching for:');
+ console.info('required: ', searchterms);
+ console.info('excluded: ', excluded);
+
+ // prepare search
+ var filenames = this._index.filenames;
+ var titles = this._index.titles;
+ var terms = this._index.terms;
+ var descrefs = this._index.descrefs;
+ var modules = this._index.modules;
+ var desctypes = this._index.desctypes;
+ var fileMap = {};
+ var files = null;
+ var objectResults = [];
+ var regularResults = [];
+ $('#search-progress').empty();
+
+ // lookup as object
+ if (object != null) {
+ for (var module in modules) {
+ if (module.indexOf(object) > -1) {
+ fn = modules[module];
+ descr = _('module, in ') + titles[fn];
+ objectResults.push([filenames[fn], module, '#module-'+module,
descr]);
+ }
+ }
+ for (var prefix in descrefs) {
+ for (var name in descrefs[prefix]) {
+ var fullname = (prefix ? prefix + '.' : '') + name;
+ if (fullname.toLowerCase().indexOf(object) > -1) {
+ match = descrefs[prefix][name];
+ descr = desctypes[match[1]] + _(', in ') + titles[match[0]];
+ objectResults.push([filenames[match[0]],
fullname, '#'+fullname, descr]);
+ }
+ }
+ }
}

+ // sort results descending
+ objectResults.sort(function(a, b) {
+ return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+ });
+
+
+ // perform the search on the required terms
+ for (var i = 0; i < searchterms.length; i++) {
+ var word = searchterms[i];
+ // no match but word was a required one
+ if ((files = terms[word]) == null)
+ break;
+ if (files.length == undefined) {
+ files = [files];
+ }
+ // create the mapping
+ for (var j = 0; j < files.length; j++) {
+ var file = files[j];
+ if (file in fileMap)
+ fileMap[file].push(word);
+ else
+ fileMap[file] = [word];
+ }
+ }
+
+ // now check if the files don't contain excluded terms
+ for (var file in fileMap) {
+ var valid = true;
+
+ // check if all requirements are matched
+ if (fileMap[file].length != searchterms.length)
+ continue;
+
+ // ensure that none of the excluded terms is in the
+ // search result.
+ for (var i = 0; i < excluded.length; i++) {
+ if (terms[excluded[i]] == file ||
+ $.contains(terms[excluded[i]] || [], file)) {
+ valid = false;
+ break;
+ }
+ }
+
+ // if we have still a valid result we can add it
+ // to the result list
+ if (valid)
+ regularResults.push([filenames[file], titles[file], '', null]);
+ }
+
+ // delete unused variables in order to not waste
+ // memory until list is retrieved completely
+ delete filenames, titles, terms;
+
+ // now sort the regular results descending by title
+ regularResults.sort(function(a, b) {
+ var left = a[1].toLowerCase();
+ var right = b[1].toLowerCase();
+ return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ });
+
+ // combine both
+ var results = regularResults.concat(objectResults);
+
+ // print the results
+ var resultCount = results.length;
+ function displayNextItem() {
+ // results left, load the summary and display it
+ if (results.length) {
+ var item = results.pop();
+ var listItem = $('<li style="display:none"></li>');
+ listItem.append($('<a/>').attr(
+ 'href',
+ item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+ highlightstring + item[2]).html(item[1]));
+ if (item[3]) {
+ listItem.append($('<span> (' + item[3] + ')</span>'));
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+ $.get('_sources/' + item[0] + '.txt', function(data) {
+ listItem.append($.makeSearchSummary(data, searchterms,
hlterms));
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ });
+ } else {
+ // no source available, just display title
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }
+ }
+ // search finished, update title and status message
+ else {
+ Search.stopPulse();
+ Search.title.text(_('Search Results'));
+ if (!resultCount)
+ Search.status.text(_('Your search did not match any documents.
Please make sure that all words are spelled correctly and that you\'ve
selected enough categories.'));
+ else
+ Search.status.text(_('Search finished, found %s page(s)
matching the search query.').replace('%s', resultCount));
+ Search.status.fadeIn(500);
+ }
+ }
+ displayNextItem();
+ }
}

$(document).ready(function() {
- Search.init();
- });
+ Search.init();
+});
=======================================
--- /doc/html/genindex.html Fri Sep 5 21:46:32 2008
+++ /doc/html/genindex.html Mon Jun 13 12:13:11 2011
@@ -1,39 +1,40 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="http://www.w3.org/1999/xhtml">
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<title>Index &mdash; httplib2 v0.4 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '0.4',
- COLLAPSE_MODINDEX: false,
- FILE_SUFFIX: ''
+ URL_ROOT: '#',
+ VERSION: '0.4',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/interface.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="contents" title="Global table of contents"
href="contents.html" />
- <link rel="index" title="Global index" href="" />
- <link rel="search" title="Search" href="search.html" />
- <link rel="top" title="httplib2 v0.4 documentation" href="index.html"
/>
+ <link rel="top" title="httplib2 v0.4 documentation" href="index.html"
/>
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
- <a href="" title="General Index"
+ <a href="#" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="modindex.html" title="Global Module Index"
accesskey="M">modules</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
- </div>
+ </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
@@ -116,7 +117,8 @@
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
<dl>

-<dt><a href="libhttplib2.html#httplib2.Response.previous">previous
(httplib2.Response attribute)</a></dt></dl></td><td width="33%"
valign="top"><dl>
+<dt><a href="libhttplib2.html#httplib2.Response.previous">previous
(httplib2.Response attribute)</a></dt>
+<dt><a href="libhttplib2.html#httplib2.ProxyInfo">ProxyInfo (class in
httplib2)</a></dt></dl></td><td width="33%" valign="top"><dl>
</dl></td></tr></table>

<h2 id="R">R</h2>
@@ -163,13 +165,21 @@
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">

-
+
+
+ <div id="searchbox" style="display: none">
<h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" size="18" /> <input
type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" size="18" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+ </div>
+ <script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
@@ -178,18 +188,18 @@
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
- <a href="" title="General Index"
- accesskey="I">index</a></li>
+ <a href="#" title="General Index"
+ >index</a></li>
<li class="right" >
<a href="modindex.html" title="Global Module Index"
- accesskey="M">modules</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ >modules</a> |</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2008, Joe Gregorio.
- Last updated on Sep 06, 2008.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ Last updated on Jun 13, 2011.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
</div>
</body>
</html>
=======================================
--- /doc/html/index.html Fri Sep 5 21:46:32 2008
+++ /doc/html/index.html Mon Jun 13 12:13:11 2011
@@ -1,26 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="http://www.w3.org/1999/xhtml">
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<title>The httplib2 Library &mdash; httplib2 v0.4 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '0.4',
- COLLAPSE_MODINDEX: false,
- FILE_SUFFIX: ''
+ URL_ROOT: '#',
+ VERSION: '0.4',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/interface.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="contents" title="Global table of contents"
href="contents.html" />
- <link rel="index" title="Global index" href="genindex.html" />
- <link rel="search" title="Search" href="search.html" />
- <link rel="top" title="httplib2 v0.4 documentation" href="" />
- <link rel="next" title="httplib2 A comprehensive HTTP client library."
href="libhttplib2.html" />
+ <link rel="top" title="httplib2 v0.4 documentation" href="#" />
+ <link rel="next" title="httplib2 A comprehensive HTTP client library."
href="libhttplib2.html" />
</head>
<body>
<div class="related">
@@ -35,17 +35,17 @@
<li class="right" >
<a href="libhttplib2.html" title="httplib2 A comprehensive HTTP
client library."
accesskey="N">next</a> |</li>
- <li><a href="">httplib2 v0.4 documentation</a> &raquo;</li>
+ <li><a href="#">httplib2 v0.4 documentation</a> &raquo;</li>
</ul>
- </div>
+ </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">

-
<div class="section" id="the-httplib2-library">
-<h1 id="the-httplib2-library">The httplib2 Library<a class="headerlink"
href="#the-httplib2-library" title="Permalink to this headline">¶</a></h1>
+<h1>The httplib2 Library<a class="headerlink" href="#the-httplib2-library"
title="Permalink to this headline">¶</a></h1>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@@ -58,21 +58,21 @@
</table>
<div class="topic">
<p class="topic-title first">Abstract</p>
-<p>The <a title="" class="reference external" href="libhttplib2.html"><tt
class="xref docutils literal"><span class="pre">httplib2</span></tt></a>
module is a comprehensive HTTP client library that handles
+<p>The <a title="" class="reference external"
href="libhttplib2.html#module-httplib2"><tt class="xref docutils
literal"><span class="pre">httplib2</span></tt></a> module is a
comprehensive HTTP client library that handles
caching, keep-alive, compression, redirects and many kinds of
authentication.</p>
</div>
<p>Contents:</p>
<ul>
-<li><a class="reference external" href="libhttplib2.html"><tt
class="docutils literal"><span class="pre">httplib2</span></tt> A
comprehensive HTTP client library.</a><ul>
-<li><a class="reference external" href="libhttplib2.html#id1">Http
Objects</a></li>
-<li><a class="reference external" href="libhttplib2.html#id2">Cache
Objects</a></li>
-<li><a class="reference external" href="libhttplib2.html#id3">Response
Objects</a></li>
-<li><a class="reference external"
href="libhttplib2.html#examples">Examples</a></li>
+<li class="toctree-l1"><a class="reference external"
href="libhttplib2.html"><tt class="docutils literal"><span
class="pre">httplib2</span></tt> A comprehensive HTTP client
library.</a><ul>
+<li class="toctree-l2"><a class="reference external"
href="libhttplib2.html#http-objects">Http Objects</a></li>
+<li class="toctree-l2"><a class="reference external"
href="libhttplib2.html#cache-objects">Cache Objects</a></li>
+<li class="toctree-l2"><a class="reference external"
href="libhttplib2.html#response-objects">Response Objects</a></li>
+<li class="toctree-l2"><a class="reference external"
href="libhttplib2.html#examples">Examples</a></li>
</ul>
</li>
</ul>
<div class="section" id="indices-and-tables">
-<h2 id="indices-and-tables">Indices and tables<a class="headerlink"
href="#indices-and-tables" title="Permalink to this headline">¶</a></h2>
+<h2>Indices and tables<a class="headerlink" href="#indices-and-tables"
title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference external"
href="genindex.html"><em>Index</em></a></li>
<li><a class="reference external" href="modindex.html"><em>Module
Index</em></a></li>
@@ -87,26 +87,35 @@
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
- <h3>Table Of Contents</h3>
+ <h3><a href="#">Table Of Contents</a></h3>
<ul>
-<li><a class="reference external" href="">The httplib2 Library</a><ul>
+<li><a class="reference external" href="#">The httplib2 Library</a><ul>
<li><a class="reference external" href="#indices-and-tables">Indices and
tables</a></li>
</ul>
</li>
</ul>

<h4>Next topic</h4>
- <p class="topless"><a href="libhttplib2.html" title="next
chapter"><tt class="docutils literal"><span
class="pre">httplib2</span></tt> A comprehensive HTTP client
library.</a></p>
+ <p class="topless"><a href="libhttplib2.html"
+ title="next chapter"><tt class="docutils
literal"><span class="pre">httplib2</span></tt> A comprehensive HTTP
client library.</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
- <li><a href="_sources/index.txt">Show Source</a></li>
+ <li><a href="_sources/index.txt"
+ rel="nofollow">Show Source</a></li>
</ul>
+ <div id="searchbox" style="display: none">
<h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" size="18" /> <input
type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" size="18" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+ </div>
+ <script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
@@ -116,20 +125,20 @@
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
+ >index</a></li>
<li class="right" >
<a href="modindex.html" title="Global Module Index"
- accesskey="M">modules</a> |</li>
+ >modules</a> |</li>
<li class="right" >
<a href="libhttplib2.html" title="httplib2 A comprehensive HTTP
client library."
- accesskey="N">next</a> |</li>
- <li><a href="">httplib2 v0.4 documentation</a> &raquo;</li>
+ >next</a> |</li>
+ <li><a href="#">httplib2 v0.4 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2008, Joe Gregorio.
- Last updated on Sep 06, 2008.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ Last updated on Jun 13, 2011.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
</div>
</body>
</html>
=======================================
--- /doc/html/libhttplib2.html Sat Sep 6 08:03:26 2008
+++ /doc/html/libhttplib2.html Mon Jun 13 12:13:11 2011
@@ -1,26 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="http://www.w3.org/1999/xhtml">
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<title>httplib2 A comprehensive HTTP client library. &mdash; httplib2
v0.4 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '0.4',
- COLLAPSE_MODINDEX: false,
- FILE_SUFFIX: ''
+ URL_ROOT: '#',
+ VERSION: '0.4',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/interface.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="contents" title="Global table of contents"
href="contents.html" />
- <link rel="index" title="Global index" href="genindex.html" />
- <link rel="search" title="Search" href="search.html" />
<link rel="top" title="httplib2 v0.4 documentation" href="index.html"
/>
- <link rel="prev" title="The httplib2 Library" href="index.html" />
+ <link rel="prev" title="The httplib2 Library" href="index.html" />
</head>
<body>
<div class="related">
@@ -35,17 +35,17 @@
<li class="right" >
<a href="index.html" title="The httplib2 Library"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
- </div>
+ </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">

-
<div class="section" id="module-httplib2">
-<h1 id="module-httplib2"><tt class="xref docutils literal"><span
class="pre">httplib2</span></tt> A comprehensive HTTP client library.<a
class="headerlink" href="#module-httplib2" title="Permalink to this
headline">¶</a></h1>
+<h1><tt class="xref docutils literal"><span
class="pre">httplib2</span></tt> A comprehensive HTTP client library.<a
class="headerlink" href="#module-httplib2" title="Permalink to this
headline">¶</a></h1>
<p>The <tt class="xref docutils literal"><span
class="pre">httplib2</span></tt> module is a comprehensive HTTP client
library with the
following features:</p>
<dl class="describe">
@@ -105,7 +105,7 @@
<p>The <tt class="xref docutils literal"><span
class="pre">httplib2</span></tt> module defines the following variables:</p>
<dl class="data">
<dt id="httplib2.debuglevel">
-<!--[httplib2.debuglevel]--><tt class="descclassname">httplib2.</tt><tt
class="descname">debuglevel</tt><a class="headerlink"
href="#httplib2.debuglevel" title="Permalink to this definition">¶</a></dt>
+<tt class="descclassname">httplib2.</tt><tt
class="descname">debuglevel</tt><a class="headerlink"
href="#httplib2.debuglevel" title="Permalink to this definition">¶</a></dt>
<dd>The amount of debugging information to print. The default is
0.</dd></dl>

<p>The <tt class="xref docutils literal"><span
class="pre">httplib2</span></tt> module may raise the following Exceptions.
Note that there
@@ -114,66 +114,78 @@
<a title="httplib2.Http.force_exception_to_status_code" class="reference
internal" href="#httplib2.Http.force_exception_to_status_code"><tt
class="xref docutils literal"><span
class="pre">Http.force_exception_to_status_code</span></tt></a></p>
<dl class="exception">
<dt id="httplib2.HttpLib2Error">
-<!--[httplib2.HttpLib2Error]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">HttpLib2Error</tt><a class="headerlink"
href="#httplib2.HttpLib2Error" title="Permalink to this
definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">HttpLib2Error</tt><a class="headerlink"
href="#httplib2.HttpLib2Error" title="Permalink to this
definition">¶</a></dt>
<dd>The Base Exception for all exceptions raised by httplib2.</dd></dl>

<dl class="exception">
<dt id="httplib2.RedirectMissingLocation">
-<!--[httplib2.RedirectMissingLocation]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">RedirectMissingLocation</tt><a class="headerlink"
href="#httplib2.RedirectMissingLocation" title="Permalink to this
definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">RedirectMissingLocation</tt><a class="headerlink"
href="#httplib2.RedirectMissingLocation" title="Permalink to this
definition">¶</a></dt>
<dd>A 3xx redirect response code was provided but no Location: header was
provided
to point to the new location.</dd></dl>

<dl class="exception">
<dt id="httplib2.RedirectLimit">
-<!--[httplib2.RedirectLimit]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">RedirectLimit</tt><a class="headerlink"
href="#httplib2.RedirectLimit" title="Permalink to this
definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">RedirectLimit</tt><a class="headerlink"
href="#httplib2.RedirectLimit" title="Permalink to this
definition">¶</a></dt>
<dd>The maximum number of redirections was reached without coming to a
final URI.</dd></dl>

<dl class="exception">
<dt id="httplib2.ServerNotFoundError">
-<!--[httplib2.ServerNotFoundError]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">ServerNotFoundError</tt><a class="headerlink"
href="#httplib2.ServerNotFoundError" title="Permalink to this
definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">ServerNotFoundError</tt><a class="headerlink"
href="#httplib2.ServerNotFoundError" title="Permalink to this
definition">¶</a></dt>
<dd>Unable to resolve the host name given.</dd></dl>

<dl class="exception">
<dt id="httplib2.RelativeURIError">
-<!--[httplib2.RelativeURIError]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">RelativeURIError</tt><a class="headerlink"
href="#httplib2.RelativeURIError" title="Permalink to this
definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">RelativeURIError</tt><a class="headerlink"
href="#httplib2.RelativeURIError" title="Permalink to this
definition">¶</a></dt>
<dd>A relative, as opposed to an absolute URI, was passed into
request().</dd></dl>

<dl class="exception">
<dt id="httplib2.FailedToDecompressContent">
-<!--[httplib2.FailedToDecompressContent]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">FailedToDecompressContent</tt><a class="headerlink"
href="#httplib2.FailedToDecompressContent" title="Permalink to this
definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">FailedToDecompressContent</tt><a class="headerlink"
href="#httplib2.FailedToDecompressContent" title="Permalink to this
definition">¶</a></dt>
<dd>The headers claimed that the content of the response was compressed
but the
decompression algorithm applied to the content failed.</dd></dl>

<dl class="exception">
<dt id="httplib2.UnimplementedDigestAuthOptionError">
-<!--[httplib2.UnimplementedDigestAuthOptionError]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">UnimplementedDigestAuthOptionError</tt><a
class="headerlink" href="#httplib2.UnimplementedDigestAuthOptionError"
title="Permalink to this definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">UnimplementedDigestAuthOptionError</tt><a
class="headerlink" href="#httplib2.UnimplementedDigestAuthOptionError"
title="Permalink to this definition">¶</a></dt>
<dd>The server requested a type of Digest authentication that we are
unfamiliar
with.</dd></dl>

<dl class="exception">
<dt id="httplib2.UnimplementedHmacDigestAuthOptionError">
-<!--[httplib2.UnimplementedHmacDigestAuthOptionError]-->exception <tt
class="descclassname">httplib2.</tt><tt
class="descname">UnimplementedHmacDigestAuthOptionError</tt><a
class="headerlink" href="#httplib2.UnimplementedHmacDigestAuthOptionError"
title="Permalink to this definition">¶</a></dt>
+<em class="property">exception </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">UnimplementedHmacDigestAuthOptionError</tt><a
class="headerlink" href="#httplib2.UnimplementedHmacDigestAuthOptionError"
title="Permalink to this definition">¶</a></dt>
<dd>The server requested a type of HMACDigest authentication that we are
unfamiliar
with.</dd></dl>

<dl class="class">
<dt id="httplib2.Http">
-<!--[httplib2.Http]-->class <tt class="descclassname">httplib2.</tt><tt
class="descname">Http</tt><big>(</big><span
class="optional">[</span><em>cache=None</em><span
class="optional">]</span><span class="optional">[</span>,
<em>timeout=None</em><span class="optional">]</span><big>)</big><a
class="headerlink" href="#httplib2.Http" title="Permalink to this
definition">¶</a></dt>
+<em class="property">class </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">Http</tt><big>(</big><span
class="optional">[</span><em>cache=None</em><span
class="optional">]</span><span class="optional">[</span>,
<em>timeout=None</em><span class="optional">]</span><span
class="optional">[</span>, <em>proxy_info=None</em><span
class="optional">]</span><span class="optional">[</span>,
<em>ca_certs=None</em><span class="optional">]</span><span
class="optional">[</span>,
<em>disable_ssl_certificate_validation=False</em><span
class="optional">]</span><big>)</big><a class="headerlink"
href="#httplib2.Http" title="Permalink to this definition">¶</a></dt>
<dd>The class that represents a client HTTP interface. The <em>cache</em>
parameter is
either the name of a directory to be used as a flat file cache, or it must
an
object that implements the required caching interface. The
<em>timeout</em> parameter
-is the socket level timeout.</dd></dl>
+is the socket level timeout. The <em>ca_certs</em> parameter is the
filename of the
+CA certificates to use. If none is given a default set is used. The
+<em>disable_ssl_certificate_validation</em> boolean flag determines if ssl
certificate validation
+is done. The <em>proxy_info</em> parameter is an object of
type :class:ProxyInfo.</dd></dl>
+
+<dl class="class">
+<dt id="httplib2.ProxyInfo">
+<em class="property">class </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">ProxyInfo</tt><big>(</big><em>proxy_type</em>,
<em>proxy_host</em>, <em>proxy_port</em><span class="optional">[</span>,
<em>proxy_rdns=None</em><span class="optional">]</span><span
class="optional">[</span>, <em>proxy_user=None</em><span
class="optional">]</span><span class="optional">[</span>,
<em>proxy_pass=None</em><span class="optional">]</span><big>)</big><a
class="headerlink" href="#httplib2.ProxyInfo" title="Permalink to this
definition">¶</a></dt>
+<dd><p>Collect information required to use a proxy.
+The parameter proxy_type must be set to one of socks.PROXY_TYPE_XXX
+constants. For example:</p>
+<p>p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP,
proxy_host=&#8217;localhost&#8217;, proxy_port=8000)</p>
+</dd></dl>

<dl class="class">
<dt id="httplib2.Response">
-<!--[httplib2.Response]-->class <tt
class="descclassname">httplib2.</tt><tt
class="descname">Response</tt><big>(</big><em>info</em><big>)</big><a
class="headerlink" href="#httplib2.Response" title="Permalink to this
definition">¶</a></dt>
+<em class="property">class </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">Response</tt><big>(</big><em>info</em><big>)</big><a
class="headerlink" href="#httplib2.Response" title="Permalink to this
definition">¶</a></dt>
<dd>Response is a subclass of <tt class="xref docutils literal"><span
class="pre">dict</span></tt> and instances of this class are
returned from calls to Http.request. The <em>info</em> parameter is
either an
<tt class="xref docutils literal"><span
class="pre">rfc822.Message</span></tt> or an <tt class="xref docutils
literal"><span class="pre">httplib.HTTPResponse</span></tt>
object.</dd></dl>

<dl class="class">
<dt id="httplib2.FileCache">
-<!--[httplib2.FileCache]-->class <tt
class="descclassname">httplib2.</tt><tt
class="descname">FileCache</tt><big>(</big><em>dir_name</em><span
class="optional">[</span>, <em>safe=safename</em><span
class="optional">]</span><big>)</big><a class="headerlink"
href="#httplib2.FileCache" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><tt
class="descclassname">httplib2.</tt><tt
class="descname">FileCache</tt><big>(</big><em>dir_name</em><span
class="optional">[</span>, <em>safe=safename</em><span
class="optional">]</span><big>)</big><a class="headerlink"
href="#httplib2.FileCache" title="Permalink to this definition">¶</a></dt>
<dd>FileCache implements a Cache as a directory of files. The
<em>dir_name</em> parameter
is the name of the directory to use. If the directory does not exist then
FileCache attempts to create the directory. The optional <em>safe</em>
parameter is a
@@ -182,11 +194,11 @@
constructor of <a title="httplib2.Http" class="reference internal"
href="#httplib2.Http"><tt class="xref docutils literal"><span
class="pre">Http</span></tt></a>.</dd></dl>

<p>Http objects have the following methods:</p>
-<div class="section" id="id1">
-<span id="http-objects"></span><h2 id="id1"><span
id="http-objects"></span>Http Objects<a class="headerlink" href="#id1"
title="Permalink to this headline">¶</a></h2>
+<div class="section" id="http-objects">
+<span id="id1"></span><h2>Http Objects<a class="headerlink"
href="#http-objects" title="Permalink to this headline">¶</a></h2>
<dl class="method">
<dt id="httplib2.Http.request">
-<!--[httplib2.Http.request]--><tt class="descclassname">Http.</tt><tt
class="descname">request</tt><big>(</big><em>uri</em><span
class="optional">[</span>, <em>method=&quot;GET&quot;</em>,
<em>body=None</em>, <em>headers=None</em>,
<em>redirections=DEFAULT_MAX_REDIRECTS</em>,
<em>connection_type=None</em><span class="optional">]</span><big>)</big><a
class="headerlink" href="#httplib2.Http.request" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">request</tt><big>(</big><em>uri</em><span
class="optional">[</span>, <em>method=&quot;GET&quot;</em>,
<em>body=None</em>, <em>headers=None</em>,
<em>redirections=DEFAULT_MAX_REDIRECTS</em>,
<em>connection_type=None</em><span class="optional">]</span><big>)</big><a
class="headerlink" href="#httplib2.Http.request" title="Permalink to this
definition">¶</a></dt>
<dd><p>Performs a single HTTP request. The <em>uri</em> is the URI of the
HTTP resource and
can begin with either <tt class="docutils literal"><span
class="pre">http</span></tt> or <tt class="docutils literal"><span
class="pre">https</span></tt>. The value of <em>uri</em> must be an
absolute URI.</p>
@@ -207,7 +219,7 @@

<dl class="method">
<dt id="httplib2.Http.add_credentials">
-<!--[httplib2.Http.add_credentials]--><tt
class="descclassname">Http.</tt><tt
class="descname">add_credentials</tt><big>(</big><em>name</em>,
<em>password</em><span class="optional">[</span>, <em>domain=None</em><span
class="optional">]</span><big>)</big><a class="headerlink"
href="#httplib2.Http.add_credentials" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">add_credentials</tt><big>(</big><em>name</em>,
<em>password</em><span class="optional">[</span>, <em>domain=None</em><span
class="optional">]</span><big>)</big><a class="headerlink"
href="#httplib2.Http.add_credentials" title="Permalink to this
definition">¶</a></dt>
<dd>Adds a name and password that will be used when a request requires
authentication. Supplying the optional <em>domain</em> name will restrict
these
credentials to only be sent to the specified domain. If <em>domain</em> is
not
@@ -216,19 +228,19 @@

<dl class="method">
<dt id="httplib2.Http.add_certificate">
-<!--[httplib2.Http.add_certificate]--><tt
class="descclassname">Http.</tt><tt
class="descname">add_certificate</tt><big>(</big><em>key</em>,
<em>cert</em>, <em>domain</em><big>)</big><a class="headerlink"
href="#httplib2.Http.add_certificate" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">add_certificate</tt><big>(</big><em>key</em>,
<em>cert</em>, <em>domain</em><big>)</big><a class="headerlink"
href="#httplib2.Http.add_certificate" title="Permalink to this
definition">¶</a></dt>
<dd>Add a <em>key</em> and <em>cert</em> that will be used for an SSL
connection to the specified
domain. <em>keyfile</em> is the name of a PEM formatted file that
contains your
private key. <em>certfile</em> is a PEM formatted certificate chain
file.</dd></dl>

<dl class="method">
<dt id="httplib2.Http.clear_credentials">
-<!--[httplib2.Http.clear_credentials]--><tt
class="descclassname">Http.</tt><tt
class="descname">clear_credentials</tt><big>(</big><big>)</big><a
class="headerlink" href="#httplib2.Http.clear_credentials" title="Permalink
to this definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">clear_credentials</tt><big>(</big><big>)</big><a
class="headerlink" href="#httplib2.Http.clear_credentials" title="Permalink
to this definition">¶</a></dt>
<dd>Remove all the names and passwords used for authentication.</dd></dl>

<dl class="attribute">
<dt id="httplib2.Http.follow_redirects">
-<!--[httplib2.Http.follow_redirects]--><tt
class="descclassname">Http.</tt><tt
class="descname">follow_redirects</tt><a class="headerlink"
href="#httplib2.Http.follow_redirects" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">follow_redirects</tt><a class="headerlink"
href="#httplib2.Http.follow_redirects" title="Permalink to this
definition">¶</a></dt>
<dd>If <tt class="xref docutils literal"><span
class="pre">True</span></tt>, which is the default, safe redirects are
followed, where safe means
that the client is only doing a <tt class="docutils literal"><span
class="pre">GET</span></tt> or <tt class="docutils literal"><span
class="pre">HEAD</span></tt> on the URI to which it is
being redirected. If <tt class="xref docutils literal"><span
class="pre">False</span></tt> then no redirects are followed. Note that a
False
@@ -238,7 +250,7 @@

<dl class="attribute">
<dt id="httplib2.Http.follow_all_redirects">
-<!--[httplib2.Http.follow_all_redirects]--><tt
class="descclassname">Http.</tt><tt
class="descname">follow_all_redirects</tt><a class="headerlink"
href="#httplib2.Http.follow_all_redirects" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">follow_all_redirects</tt><a class="headerlink"
href="#httplib2.Http.follow_all_redirects" title="Permalink to this
definition">¶</a></dt>
<dd>If <tt class="xref docutils literal"><span
class="pre">False</span></tt>, which is the default, only safe redirects
are followed, where safe
means that the client is only doing a <tt class="docutils literal"><span
class="pre">GET</span></tt> or <tt class="docutils literal"><span
class="pre">HEAD</span></tt> on the URI to which it
is being redirected. If <tt class="xref docutils literal"><span
class="pre">True</span></tt> then all redirects are followed. Note that a
@@ -248,7 +260,7 @@

<dl class="attribute">
<dt id="httplib2.Http.force_exception_to_status_code">
-<!--[httplib2.Http.force_exception_to_status_code]--><tt
class="descclassname">Http.</tt><tt
class="descname">force_exception_to_status_code</tt><a class="headerlink"
href="#httplib2.Http.force_exception_to_status_code" title="Permalink to
this definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">force_exception_to_status_code</tt><a class="headerlink"
href="#httplib2.Http.force_exception_to_status_code" title="Permalink to
this definition">¶</a></dt>
<dd><p>If <tt class="xref docutils literal"><span
class="pre">True</span></tt> then no <tt class="xref docutils
literal"><span class="pre">httplib2</span></tt> exceptions will be
thrown. Instead, those error conditions will be turned into <a
title="httplib2.Response" class="reference internal"
href="#httplib2.Response"><tt class="xref docutils literal"><span
class="pre">Response</span></tt></a>
objects that will be returned normally.</p>
@@ -257,7 +269,7 @@

<dl class="attribute">
<dt id="httplib2.Http.optimistic_concurrency_methods">
-<!--[httplib2.Http.optimistic_concurrency_methods]--><tt
class="descclassname">Http.</tt><tt
class="descname">optimistic_concurrency_methods</tt><a class="headerlink"
href="#httplib2.Http.optimistic_concurrency_methods" title="Permalink to
this definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">optimistic_concurrency_methods</tt><a class="headerlink"
href="#httplib2.Http.optimistic_concurrency_methods" title="Permalink to
this definition">¶</a></dt>
<dd>By default a list that only contains &#8220;PUT&#8221;, this attribute
controls which methods will get &#8216;if-match&#8217; headers attached
to them from cached responses with etags. You can append
@@ -266,7 +278,7 @@

<dl class="attribute">
<dt id="httplib2.Http.ignore_etag">
-<!--[httplib2.Http.ignore_etag]--><tt class="descclassname">Http.</tt><tt
class="descname">ignore_etag</tt><a class="headerlink"
href="#httplib2.Http.ignore_etag" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Http.</tt><tt
class="descname">ignore_etag</tt><a class="headerlink"
href="#httplib2.Http.ignore_etag" title="Permalink to this
definition">¶</a></dt>
<dd>Defaults to <tt class="xref docutils literal"><span
class="pre">False</span></tt>. If <tt class="xref docutils literal"><span
class="pre">True</span></tt>, then any etags present in the cached
response are ignored when processing the current request, i.e. httplib2
does
<strong>not</strong> use &#8216;if-match&#8217; for PUT or
&#8216;if-none-match&#8217; when GET or HEAD requests are
@@ -277,52 +289,52 @@
in an object that supports the following methods. Note that the <tt
class="xref docutils literal"><span class="pre">memcache</span></tt>
module supports this interface natively.</p>
</div>
-<div class="section" id="id2">
-<span id="cache-objects"></span><h2 id="id2"><span
id="cache-objects"></span>Cache Objects<a class="headerlink" href="#id2"
title="Permalink to this headline">¶</a></h2>
+<div class="section" id="cache-objects">
+<span id="id2"></span><h2>Cache Objects<a class="headerlink"
href="#cache-objects" title="Permalink to this headline">¶</a></h2>
<dl class="method">
<dt id="httplib2.Cache.get">
-<!--[httplib2.Cache.get]--><tt class="descclassname">Cache.</tt><tt
class="descname">get</tt><big>(</big><em>key</em><big>)</big><a
class="headerlink" href="#httplib2.Cache.get" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Cache.</tt><tt
class="descname">get</tt><big>(</big><em>key</em><big>)</big><a
class="headerlink" href="#httplib2.Cache.get" title="Permalink to this
definition">¶</a></dt>
<dd>Takes a string <em>key</em> and returns the value as a
string.</dd></dl>

<dl class="method">
<dt id="httplib2.Cache.set">
-<!--[httplib2.Cache.set]--><tt class="descclassname">Cache.</tt><tt
class="descname">set</tt><big>(</big><em>key</em>,
<em>value</em><big>)</big><a class="headerlink" href="#httplib2.Cache.set"
title="Permalink to this definition">¶</a></dt>
+<tt class="descclassname">Cache.</tt><tt
class="descname">set</tt><big>(</big><em>key</em>,
<em>value</em><big>)</big><a class="headerlink" href="#httplib2.Cache.set"
title="Permalink to this definition">¶</a></dt>
<dd>Takes a string <em>key</em> and <em>value</em> and stores it in the
cache.</dd></dl>

<dl class="method">
<dt id="httplib2.Cache.delete">
-<!--[httplib2.Cache.delete]--><tt class="descclassname">Cache.</tt><tt
class="descname">delete</tt><big>(</big><em>key</em><big>)</big><a
class="headerlink" href="#httplib2.Cache.delete" title="Permalink to this
definition">¶</a></dt>
+<tt class="descclassname">Cache.</tt><tt
class="descname">delete</tt><big>(</big><em>key</em><big>)</big><a
class="headerlink" href="#httplib2.Cache.delete" title="Permalink to this
definition">¶</a></dt>
<dd>Deletes the cached value stored at <em>key</em>. The value of
<em>key</em> is a string.</dd></dl>

<p>Response objects are derived from <tt class="xref docutils
literal"><span class="pre">dict</span></tt> and map header names (lower case
with the trailing colon removed) to header values. In addition to the dict
methods a Response object also has:</p>
</div>
-<div class="section" id="id3">
-<span id="response-objects"></span><h2 id="id3"><span
id="response-objects"></span>Response Objects<a class="headerlink"
href="#id3" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="response-objects">
+<span id="id3"></span><h2>Response Objects<a class="headerlink"
href="#response-objects" title="Permalink to this headline">¶</a></h2>
<dl class="attribute">
<dt id="httplib2.Response.fromcache">
-<!--[httplib2.Response.fromcache]--><tt
class="descclassname">Response.</tt><tt class="descname">fromcache</tt><a
class="headerlink" href="#httplib2.Response.fromcache" title="Permalink to
this definition">¶</a></dt>
+<tt class="descclassname">Response.</tt><tt
class="descname">fromcache</tt><a class="headerlink"
href="#httplib2.Response.fromcache" title="Permalink to this
definition">¶</a></dt>
<dd>If <tt class="docutils literal"><span class="pre">true</span></tt> the
the response was returned from the cache.</dd></dl>

<dl class="attribute">
<dt id="httplib2.Response.version">
-<!--[httplib2.Response.version]--><tt
class="descclassname">Response.</tt><tt class="descname">version</tt><a
class="headerlink" href="#httplib2.Response.version" title="Permalink to
this definition">¶</a></dt>
+<tt class="descclassname">Response.</tt><tt
class="descname">version</tt><a class="headerlink"
href="#httplib2.Response.version" title="Permalink to this
definition">¶</a></dt>
<dd>The version of HTTP that the server supports. A value of 11 means
&#8216;1.1&#8217;.</dd></dl>

<dl class="attribute">
<dt id="httplib2.Response.status">
-<!--[httplib2.Response.status]--><tt
class="descclassname">Response.</tt><tt class="descname">status</tt><a
class="headerlink" href="#httplib2.Response.status" title="Permalink to
this definition">¶</a></dt>
+<tt class="descclassname">Response.</tt><tt class="descname">status</tt><a
class="headerlink" href="#httplib2.Response.status" title="Permalink to
this definition">¶</a></dt>
<dd>The numerical HTTP status code returned in the response.</dd></dl>

<dl class="attribute">
<dt id="httplib2.Response.reason">
-<!--[httplib2.Response.reason]--><tt
class="descclassname">Response.</tt><tt class="descname">reason</tt><a
class="headerlink" href="#httplib2.Response.reason" title="Permalink to
this definition">¶</a></dt>
+<tt class="descclassname">Response.</tt><tt class="descname">reason</tt><a
class="headerlink" href="#httplib2.Response.reason" title="Permalink to
this definition">¶</a></dt>
<dd>The human readable component of the HTTP response status
code.</dd></dl>

<dl class="attribute">
<dt id="httplib2.Response.previous">
-<!--[httplib2.Response.previous]--><tt
class="descclassname">Response.</tt><tt class="descname">previous</tt><a
class="headerlink" href="#httplib2.Response.previous" title="Permalink to
this definition">¶</a></dt>
+<tt class="descclassname">Response.</tt><tt
class="descname">previous</tt><a class="headerlink"
href="#httplib2.Response.previous" title="Permalink to this
definition">¶</a></dt>
<dd>If redirects are followed then the <a title="httplib2.Response"
class="reference internal" href="#httplib2.Response"><tt class="xref
docutils literal"><span class="pre">Response</span></tt></a> object
returned is just for
the very last HTTP request and <em>previous</em> points to the previous
<a title="httplib2.Response" class="reference internal"
href="#httplib2.Response"><tt class="xref docutils literal"><span
class="pre">Response</span></tt></a> object. In this manner they form a
chain going back through
@@ -341,26 +353,28 @@
<p>To do a simple <tt class="docutils literal"><span
class="pre">GET</span></tt> request just supply the absolute URI of the
resource:</p>
</div>
<div class="section" id="examples">
-<span id="httplib2-example"></span><h2 id="examples"><span
id="httplib2-example"></span>Examples<a class="headerlink" href="#examples"
title="Permalink to this headline">¶</a></h2>
-<div class="highlight"><pre><span class="kn">import</span> <span
class="nn">httplib2</span>
+<span id="httplib2-example"></span><h2>Examples<a class="headerlink"
href="#examples" title="Permalink to this headline">¶</a></h2>
+<div class="highlight-python"><div class="highlight"><pre><span
class="kn">import</span> <span class="nn">httplib2</span>
<span class="n">h</span> <span class="o">=</span> <span
class="n">httplib2</span><span class="o">.</span><span
class="n">Http</span><span class="p">()</span>
<span class="n">resp</span><span class="p">,</span> <span
class="n">content</span> <span class="o">=</span> <span
class="n">h</span><span class="o">.</span><span
class="n">request</span><span class="p">(</span><span
class="s">&quot;http://bitworking.org/&quot;</span><span class="p">)</span>
-<span class="k">assert</span> <span class="n">resp</span><span
class="o">.</span><span class="n">status</span> <span class="o">==</span>
<span class="mf">200</span>
+<span class="k">assert</span> <span class="n">resp</span><span
class="o">.</span><span class="n">status</span> <span class="o">==</span>
<span class="mi">200</span>
<span class="k">assert</span> <span class="n">resp</span><span
class="p">[</span><span class="s">&#39;content-type&#39;</span><span
class="p">]</span> <span class="o">==</span> <span
class="s">&#39;text/html&#39;</span>
</pre></div>
+</div>
<p>Here is more complex example that does a PUT of some text to a
resource that
requires authentication. The Http instance also uses a file cache in the
directory <tt class="docutils literal"><span
class="pre">.cache</span></tt>.</p>
-<div class="highlight"><pre><span class="kn">import</span> <span
class="nn">httplib2</span>
+<div class="highlight-python"><div class="highlight"><pre><span
class="kn">import</span> <span class="nn">httplib2</span>
<span class="n">h</span> <span class="o">=</span> <span
class="n">httplib2</span><span class="o">.</span><span
class="n">Http</span><span class="p">(</span><span
class="s">&quot;.cache&quot;</span><span class="p">)</span>
<span class="n">h</span><span class="o">.</span><span
class="n">add_credentials</span><span class="p">(</span><span
class="s">&#39;name&#39;</span><span class="p">,</span> <span
class="s">&#39;password&#39;</span><span class="p">)</span>
<span class="n">resp</span><span class="p">,</span> <span
class="n">content</span> <span class="o">=</span> <span
class="n">h</span><span class="o">.</span><span
class="n">request</span><span class="p">(</span><span
class="s">&quot;https://example.org/chap/2&quot;</span><span
class="p">,</span>
<span class="s">&quot;PUT&quot;</span><span class="p">,</span> <span
class="n">body</span><span class="o">=</span><span class="s">&quot;This is
text&quot;</span><span class="p">,</span>
<span class="n">headers</span><span class="o">=</span><span
class="p">{</span><span class="s">&#39;content-type&#39;</span><span
class="p">:</span><span class="s">&#39;text/plain&#39;</span><span
class="p">}</span> <span class="p">)</span>
</pre></div>
+</div>
<p>Here is an example that connects to a server that supports the Atom
Publishing
Protocol.</p>
-<div class="highlight"><pre><span class="kn">import</span> <span
class="nn">httplib2</span>
+<div class="highlight-python"><div class="highlight"><pre><span
class="kn">import</span> <span class="nn">httplib2</span>
<span class="n">h</span> <span class="o">=</span> <span
class="n">httplib2</span><span class="o">.</span><span
class="n">Http</span><span class="p">()</span>
<span class="n">h</span><span class="o">.</span><span
class="n">add_credentials</span><span class="p">(</span><span
class="n">myname</span><span class="p">,</span> <span
class="n">mypasswd</span><span class="p">)</span>
<span class="n">h</span><span class="o">.</span><span
class="n">follow_all_redirects</span> <span class="o">=</span> <span
class="bp">True</span>
@@ -377,11 +391,12 @@
<span class="n">uri</span> <span class="o">=</span> <span
class="s">&quot;http://www.example.com/collection/&quot;</span>
<span class="n">resp</span><span class="p">,</span> <span
class="n">content</span> <span class="o">=</span> <span
class="n">h</span><span class="o">.</span><span
class="n">request</span><span class="p">(</span><span
class="n">uri</span><span class="p">,</span> <span
class="s">&quot;POST&quot;</span><span class="p">,</span> <span
class="n">body</span><span class="o">=</span><span
class="n">body</span><span class="p">,</span> <span
class="n">headers</span><span class="o">=</span><span
class="n">headers</span><span class="p">)</span>
</pre></div>
+</div>
<p>Here is an example of providing data to an HTML form processor. In this
case we
presume this is a POST form. We need to take our data and format it as
&#8220;application/x-www-form-urlencoded&#8221; data and use that as a
body for a POST
request.</p>
-<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span
class="kn">import</span> <span class="nn">httplib2</span>
+<div class="highlight-python"><div class="highlight"><pre><span
class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span
class="nn">httplib2</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span
class="nn">urllib</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">data</span> <span
class="o">=</span> <span class="p">{</span><span
class="s">&#39;name&#39;</span><span class="p">:</span> <span
class="s">&#39;fred&#39;</span><span class="p">,</span> <span
class="s">&#39;address&#39;</span><span class="p">:</span> <span
class="s">&#39;123 shady lane&#39;</span><span class="p">}</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span> <span
class="o">=</span> <span class="n">urllib</span><span
class="o">.</span><span class="n">urlencode</span><span
class="p">(</span><span class="n">data</span><span class="p">)</span>
@@ -392,6 +407,7 @@
</pre></div>
</div>
</div>
+</div>


</div>
@@ -399,29 +415,38 @@
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
- <h3>Table Of Contents</h3>
+ <h3><a href="index.html">Table Of Contents</a></h3>
<ul>
-<li><a class="reference external" href=""><tt class="docutils
literal"><span class="pre">httplib2</span></tt> A comprehensive HTTP
client library.</a><ul>
-<li><a class="reference external" href="#id1">Http Objects</a></li>
-<li><a class="reference external" href="#id2">Cache Objects</a></li>
-<li><a class="reference external" href="#id3">Response Objects</a></li>
+<li><a class="reference external" href="#"><tt class="docutils
literal"><span class="pre">httplib2</span></tt> A comprehensive HTTP
client library.</a><ul>
+<li><a class="reference external" href="#http-objects">Http
Objects</a></li>
+<li><a class="reference external" href="#cache-objects">Cache
Objects</a></li>
+<li><a class="reference external" href="#response-objects">Response
Objects</a></li>
<li><a class="reference external" href="#examples">Examples</a></li>
</ul>
</li>
</ul>

<h4>Previous topic</h4>
- <p class="topless"><a href="index.html" title="previous
chapter">The httplib2 Library</a></p>
+ <p class="topless"><a href="index.html"
+ title="previous chapter">The httplib2
Library</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
- <li><a href="_sources/libhttplib2.txt">Show Source</a></li>
+ <li><a href="_sources/libhttplib2.txt"
+ rel="nofollow">Show Source</a></li>
</ul>
+ <div id="searchbox" style="display: none">
<h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" size="18" /> <input
type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" size="18" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+ </div>
+ <script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
@@ -431,20 +456,20 @@
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
+ >index</a></li>
<li class="right" >
<a href="modindex.html" title="Global Module Index"
- accesskey="M">modules</a> |</li>
+ >modules</a> |</li>
<li class="right" >
<a href="index.html" title="The httplib2 Library"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ >previous</a> |</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2008, Joe Gregorio.
- Last updated on Sep 06, 2008.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ Last updated on Jun 13, 2011.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
</div>
</body>
</html>
=======================================
--- /doc/html/modindex.html Fri Sep 5 21:46:32 2008
+++ /doc/html/modindex.html Mon Jun 13 12:13:11 2011
@@ -1,25 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="http://www.w3.org/1999/xhtml">
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<title>Global Module Index &mdash; httplib2 v0.4 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '0.4',
- COLLAPSE_MODINDEX: false,
- FILE_SUFFIX: ''
+ URL_ROOT: '#',
+ VERSION: '0.4',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/interface.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="contents" title="Global table of contents"
href="contents.html" />
- <link rel="index" title="Global index" href="genindex.html" />
- <link rel="search" title="Search" href="search.html" />
<link rel="top" title="httplib2 v0.4 documentation" href="index.html"
/>
+

<script type="text/javascript">
DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX = true;
@@ -35,11 +36,12 @@
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
- <a href="" title="Global Module Index"
+ <a href="#" title="Global Module Index"
accesskey="M">modules</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
- </div>
+ </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
@@ -47,8 +49,6 @@


<h1 id="global-module-index">Global Module Index</h1>
-
-
<a href="#cap-H"><strong>H</strong></a>
<hr/>

@@ -66,12 +66,19 @@
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
+ <div id="searchbox" style="display: none">
<h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" size="18" /> <input
type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" size="18" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+ </div>
+ <script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
@@ -81,17 +88,17 @@
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
+ >index</a></li>
<li class="right" >
- <a href="" title="Global Module Index"
- accesskey="M">modules</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ <a href="#" title="Global Module Index"
+ >modules</a> |</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2008, Joe Gregorio.
- Last updated on Sep 06, 2008.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ Last updated on Jun 13, 2011.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
</div>
</body>
</html>
=======================================
--- /doc/html/search.html Fri Sep 5 21:46:32 2008
+++ /doc/html/search.html Mon Jun 13 12:13:11 2011
@@ -1,27 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
xmlns="http://www.w3.org/1999/xhtml">
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
<title>Search &mdash; httplib2 v0.4 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '0.4',
- COLLAPSE_MODINDEX: false,
- FILE_SUFFIX: ''
+ URL_ROOT: '#',
+ VERSION: '0.4',
+ COLLAPSE_MODINDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/interface.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="contents" title="Global table of contents"
href="contents.html" />
- <link rel="index" title="Global index" href="genindex.html" />
- <link rel="search" title="Search" href="" />
- <link rel="top" title="httplib2 v0.4 documentation" href="index.html"
/>
<script type="text/javascript" src="_static/searchtools.js"></script>
-
+ <link rel="top" title="httplib2 v0.4 documentation" href="index.html"
/>
</head>
<body>
<div class="related">
@@ -33,24 +32,33 @@
<li class="right" >
<a href="modindex.html" title="Global Module Index"
accesskey="M">modules</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
- </div>
+ </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">

<h1 id="search-documentation">Search</h1>
+ <div id="fallback" class="admonition warning">
+ <script type="text/javascript">$('#fallback').hide();</script>
+ <p>
+ Please activate JavaScript to enable the search
+ functionality.
+ </p>
+ </div>
<p>
From here you can search these documents. Enter your search
words into the box below and click "search". Note that the search
function will automatically search for all of the words. Pages
- containing less words won't appear in the result list.
+ containing fewer words won't appear in the result list.
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="submit" value="search" />
+ <span id="search-progress" style="padding-left: 10px"></span>
</form>

<div id="search-results">
@@ -71,17 +79,20 @@
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
+ >index</a></li>
<li class="right" >
<a href="modindex.html" title="Global Module Index"
- accesskey="M">modules</a> |</li>
- <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
+ >modules</a> |</li>
+ <li><a href="index.html">httplib2 v0.4 documentation</a>
&raquo;</li>
</ul>
</div>
+
<div class="footer">
&copy; Copyright 2008, Joe Gregorio.
- Last updated on Sep 06, 2008.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+ Last updated on Jun 13, 2011.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
</div>
+ <script type="text/javascript" src="searchindex.js"></script>
+
</body>
</html>
=======================================
--- /doc/libhttplib2.rst Sat Sep 6 08:02:44 2008
+++ /doc/libhttplib2.rst Mon Jun 13 12:13:11 2011
@@ -187,14 +187,25 @@
.. % type name like methoddesc.


-.. class:: Http([cache=None], [timeout=None])
+.. class:: Http([cache=None], [timeout=None], [proxy_info=None],
[ca_certs=None], [disable_ssl_certificate_validation=False])

The class that represents a client HTTP interface. The *cache*
parameter is
either the name of a directory to be used as a flat file cache, or it
must an
object that implements the required caching interface. The *timeout*
parameter
- is the socket level timeout.
+ is the socket level timeout. The *ca_certs* parameter is the filename
of the
+ CA certificates to use. If none is given a default set is used. The
+ *disable_ssl_certificate_validation* boolean flag determines if ssl
certificate validation
+ is done. The *proxy_info* parameter is an object of
type :class:ProxyInfo.


+.. class:: ProxyInfo(proxy_type, proxy_host, proxy_port,
[proxy_rdns=None], [proxy_user=None], [proxy_pass=None])
+
+ Collect information required to use a proxy.
+ The parameter proxy_type must be set to one of socks.PROXY_TYPE_XXX
+ constants. For example: ::
+
+ p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost',
proxy_port=8000)
+
.. class:: Response(info)

Response is a subclass of :class:`dict` and instances of this class are
Reply all
Reply to author
Forward
0 new messages