remove old pages
authorNIIBE Yutaka <gniibe@fsij.org>
Wed, 4 Jun 2014 00:55:32 +0000 (09:55 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Wed, 4 Jun 2014 00:55:32 +0000 (09:55 +0900)
77 files changed:
css/fsij_weblog.css [deleted file]
gnuk/rss [deleted file]
monthly-meetings/2013/GNU30-Final-Program [deleted file]
monthly-meetings/index.html [deleted file]
monthly-meetings/rss [deleted file]
news/index.html [deleted file]
news/rss [deleted file]
tracdata/asc.png [deleted file]
tracdata/css/code.css [deleted file]
tracdata/css/trac.css [deleted file]
tracdata/css/wiki.css [deleted file]
tracdata/desc.png [deleted file]
tracdata/dots.gif [deleted file]
tracdata/edit_toolbar.png [deleted file]
tracdata/envelope.png [deleted file]
tracdata/extlink.gif [deleted file]
tracdata/feed.png [deleted file]
tracdata/ics.png [deleted file]
tracdata/imggrid.png [deleted file]
tracdata/js/jquery.js [deleted file]
tracdata/js/trac.js [deleted file]
tracdata/topbar_gradient.png [deleted file]
tracdata/topbar_gradient2.png [deleted file]
wiki/2002-10-21-Seminar [deleted file]
wiki/2002-10-21-seminar [deleted file]
wiki/2002-10-22 [deleted file]
wiki/20051203-boardmeeting [deleted file]
wiki/ADMC2005-Report [deleted file]
wiki/BoardOfDirectors [deleted file]
wiki/BoardOfDirectors.en [deleted file]
wiki/BoardOfDirectorsMeetingMinutes [deleted file]
wiki/Contact [deleted file]
wiki/FSIJ-FAQ-1 [deleted file]
wiki/GSoC2008 [deleted file]
wiki/Join [deleted file]
wiki/MonthlyMeeting2007Apr [deleted file]
wiki/MonthlyMeeting2007Aug [deleted file]
wiki/MonthlyMeeting2007Dec [deleted file]
wiki/MonthlyMeeting2007Feb [deleted file]
wiki/MonthlyMeeting2007Jan [deleted file]
wiki/MonthlyMeeting2007Jul [deleted file]
wiki/MonthlyMeeting2007Jun [deleted file]
wiki/MonthlyMeeting2007Mar [deleted file]
wiki/MonthlyMeeting2007Nov [deleted file]
wiki/MonthlyMeeting2007Oct [deleted file]
wiki/MonthlyMeeting2007Sep [deleted file]
wiki/MonthlyMeeting2008Apr [deleted file]
wiki/MonthlyMeeting2008Aug [deleted file]
wiki/MonthlyMeeting2008Dec [deleted file]
wiki/MonthlyMeeting2008Feb [deleted file]
wiki/MonthlyMeeting2008Jan [deleted file]
wiki/MonthlyMeeting2008Jun [deleted file]
wiki/MonthlyMeeting2008Mar [deleted file]
wiki/MonthlyMeeting2008May [deleted file]
wiki/MonthlyMeeting2008Nov [deleted file]
wiki/MonthlyMeeting2008Oct [deleted file]
wiki/MonthlyMeeting2008Sep [deleted file]
wiki/MonthlyMeeting2009Apr [deleted file]
wiki/MonthlyMeeting2009Aug [deleted file]
wiki/MonthlyMeeting2009Feb [deleted file]
wiki/MonthlyMeeting2009Jan [deleted file]
wiki/MonthlyMeeting2009Jul [deleted file]
wiki/MonthlyMeeting2009Jun [deleted file]
wiki/MonthlyMeeting2009Mar [deleted file]
wiki/MonthlyMeeting2009May [deleted file]
wiki/MonthlyMeetingPlan [deleted file]
wiki/MonthlyMeetingRecord2006 [deleted file]
wiki/MonthlyMeetingRecord2007 [deleted file]
wiki/MonthlyMeetingRecord2009 [deleted file]
wiki/PastEvents [deleted file]
wiki/PressConference1 [deleted file]
wiki/RecentChanges [deleted file]
wiki/RichardMStallmanTalk [deleted file]
wiki/Teikan [deleted file]
wiki/TitleIndex [deleted file]
wiki/WikiStart [deleted file]
wiki/WikiStart.en [deleted file]

diff --git a/css/fsij_weblog.css b/css/fsij_weblog.css
deleted file mode 100644 (file)
index 74dd7eb..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-body {
-  font-family: helvetica, sans-serif;
-  line-height: 1.3em;
-  color: #222;
-  background-color: #DDD;
-  margin: 0em;
-  padding: .5em;
-}
-
-div.page-title {
-  background-repeat: no-repeat;
-  background-position: 140px 0px;
-  background-color: #FFF;
-  height: 100px;
-  width: 38em;
-  max-width: 38em;
-  margin-left: .5em;
-  margin-top: .5em;
-  padding: 1em;
-  border-bottom: .75em solid #036;
-  color: #036;
-}
-
-div.container {
-  position: relative;
-  width: 40em;
-  max-width: 40em;
-  padding: 0em;
-  margin-left: 0.5em;
-  margin-right: 0em;
-  background-color: #000;
-}
-
-div.sidebar {
-  position: absolute;
-  width: 6em;
-  max-width: 7em;
-  left: 0em;
-  padding: .67em;
-  background-color: #DDD;
-  color: #000;
-  border: 1px solid #036;
-  border-top: none;
-}
-
-div.page-content {
-  width: 31.5em;
-  max-width: 31.5em;
-  margin: 0em;
-  margin-left: 0em;
-  padding: .5em;
-  padding-left: 8em;
-  background-color: #FFF;
-  padding-bottom: 1em;
-}
-
-div.entry_navi {
-  font-size: small;
-}
-
-th.field-name {
-  text-align: left;
-}
-
-img {
-  border: none;
-  padding: .1em;
-}
-
-a {
-  text-decoration: none;
-  font-weight: bold;
-  color: #036;
-}
-
-a:link    { color: #036; }
-a:visited { color: #467; }
-a:hover   { color: #07D; }
-a:focus   { color: #07D; }
-
-table {
-  empty-cells: show;
-}
-
-.title {
-  width: 100%;
-  padding: 0em;
-  padding-bottom: .3em;
-  border-bottom: 1px solid #036;
-  margin-bottom: 0.7em;
-}
-
-.name, h1.index {
-  vertical-align: top;
-  font-weight: bold;
-  color: #337;
-  font-size: 150%;
-}
-
-.name { float: left; }
-
-.buttons {
-  float: right;
-  font-size: .67em;
-  text-align: right;
-}
-
-.clearing {
-  clear: both;
-}
-
-h1.name {
-  margin: 0em;
-}
-
-blockquote {  font-style: italic; }
-
-pre {
-  margin: .3em;
-  padding: .3em;
-  background-color: #DDD;
-  border: 1px dotted #036;
-  font-family: courier, courier new, monospace;
-  line-height: 100%;
-  white-space: pre;
-  width: 98%;
-  overflow: auto;
-}
-
-code {
-  color: #024;
-}
-
-li {
-  margin-bottom: .67em;
-}
-
-table.index {
-  width: 100%;
-  table-layout: fixed;
-  empty-cells: show;
-}
-
-h3.index {
-  color: #222;
-}
-
-tr.index-row-stripe-1 {
-  background-color: #DDD;
-}
-
-.content h1 {
-  margin-left: 0em;
-  font-size: 130%;
-}
-
-.content h2 {
-  margin-left: 0em;
-  font-size: 120%;
-}
-
-.content h3 {
-  margin-left: 0em;
-  font-size: 115%;
-}
-
-div.content {
-  padding-bottom: 1em;
-}
-
-.readmore {
-  text-align: right;
-}
-
-/* system section */
-#system div.page-title {
-  background-repeat: no-repeat;
-  background-position: 0px 0px;
-  background-color: #FFF;
-  height: 100px;
-  width: 38em;
-  max-width: 38em;
-  margin-left: .5em;
-  margin-top: .5em;
-  padding: 1em;
-  border-bottom: .75em solid #630;
-  color: #630;
-  text-align: right
-}
-
-#system .page-description {
-  background-color: #FFF;
-  padding: .3em;
-}
-
-#system div.sidebar {
-  position: absolute;
-  width: 6em;
-  max-width: 7em;
-  right: 0em;
-  margin-right: 0em;
-  left: auto;
-  padding: .67em;
-  background-color: #ECA;
-  color: #000;
-  border: 1px solid #630;
-  border-top: none;
-}
-
-#system div.page-content {
-  width: 31.5em;
-  max-width: 31.5em;
-  margin: 0em;
-  margin-left: 0em;
-  padding: .5em;
-  padding-right: 8em;
-  background-color: #FFF;
-  padding-bottom: 1em;
-}
-
-#system .title {
-  width: 100%;
-  padding: 0em;
-  padding-bottom: .3em;
-  border-bottom: 1px solid #063;
-  margin-bottom: 0.7em;
-}
-
-#system .name {
-  color: #733;
-}
-
-#system a {
-  text-decoration: none;
-  font-weight: bold;
-  color: #630;
-}
-
-#system a:link    { color: #630; }
-#system a:visited { color: #764; }
-#system a:hover   { color: #D70; }
-#system a:focus   { color: #D70; }
-
-/* news section */
-#news div.page-title {
-  background-repeat: no-repeat;
-  background-position: 140px 15px;
-  background-color: #FFF;
-  height: 100px;
-  width: 38em;
-  max-width: 38em;
-  margin-left: .5em;
-  margin-top: .5em;
-  padding: 1em;
-  border-bottom: .75em solid #360;
-  color: #360;
-}
-
-#news .page-description {
-  background-color: #FFF;
-  padding: .3em;
-}
-
-#news div.sidebar {
-  position: absolute;
-  width: 6em;
-  max-width: 7em;
-  left: 0em;
-  padding: .67em;
-  background-color: #CEA;
-  color: #000;
-  border: 1px solid #360;
-  border-top: none;
-}
-
-#news div.page-content {
-  width: 31.5em;
-  max-width: 31.5em;
-  margin: 0em;
-  margin-left: 0em;
-  padding: .5em;
-  padding-left: 8em;
-  background-color: #FFF;
-  padding-bottom: 1em;
-}
-
-#news .title {
-  width: 100%;
-  padding: 0em;
-  padding-bottom: .3em;
-  border-bottom: 1px solid #630;
-  margin-bottom: 0.7em;
-}
-
-#news .name {
-  color: #373;
-}
-
-#news a {
-  text-decoration: none;
-  font-weight: bold;
-  color: #360;
-}
-
-#news a:link    { color: #360; }
-#news a:visited { color: #674; }
-#news a:hover   { color: #7D0; }
-#news a:focus   { color: #7D0; }
diff --git a/gnuk/rss b/gnuk/rss
deleted file mode 100644 (file)
index a766dcb..0000000
--- a/gnuk/rss
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<rss version="2.0" 
-   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" 
-   xmlns:html="http://www.w3.org/1999/html" 
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
-   xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
-<channel>
-   <title>Gnuk</title>
-   <link>http://www.fsij.org</link>
-   <description>Gnuk, Cryptographic USB Token</description>
-   <language>ja</language>
-   <copyright>Copyright 2010 Free Software Initiative of Japan</copyright>
-   <ttl>60</ttl>
-   <pubDate>Wed, 12 Mar 2014 07:32 GMT</pubDate>
-   <managingEditor>webmaster@fsij.org</managingEditor>
-   <generator>PyBlosxom http://pyblosxom.sourceforge.net/ 1.4.3 01/10/2008</generator>
-<item>
-   <title>Version 1.1.2</title>
-   <guid isPermaLink="false">gnuk/version1_1_2</guid>
-   <link>http://www.fsij.org/gnuk/version1_1_2</link>
-   <description><![CDATA[
-<p>Gnuk version 1.1.2 is released.</p>
-<p>This is another experimental release of version 1.1.x series.</p>
-<p>Because of the incompatible change to 1.0 series, please refer new
-documentation for instructions of how to use Gnuk Token.
-(New documentation can be used for 1.0.x, too.)</p>
-<ul class="simple">
-<li>Gnuk Documentation: <a class="reference external" href="http://www.fsij.org/doc-gnuk/">http://www.fsij.org/doc-gnuk/</a></li>
-</ul>
-<p class="readmore"><a href="/gnuk/version1_1_2">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org"></category>
-   <pubDate>Wed, 12 Mar 2014 07:32 GMT</pubDate>
-</item>
-<item>
-   <title>Version 1.1.1</title>
-   <guid isPermaLink="false">gnuk/version1_1_1</guid>
-   <link>http://www.fsij.org/gnuk/version1_1_1</link>
-   <description><![CDATA[
-<p>Gnuk version 1.1.1 is released.</p>
-<p>This is another experimental release of version 1.1.x series.</p>
-<p>Because of the incompatible change to 1.0 series, please refer new
-documentation of 1.1.1 for instructions of how to use Gnuk Token.
-(New documentation can be used for 1.0.x, too.)</p>
-<ul class="simple">
-<li>Gnuk Documentation: <a class="reference external" href="http://www.fsij.org/doc-gnuk/">http://www.fsij.org/doc-gnuk/</a></li>
-</ul>
-<p class="readmore"><a href="/gnuk/version1_1_1">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org"></category>
-   <pubDate>Wed, 25 Dec 2013 04:37 GMT</pubDate>
-</item>
-<item>
-   <title>Version 1.1.0</title>
-   <guid isPermaLink="false">gnuk/version1_1_0</guid>
-   <link>http://www.fsij.org/gnuk/version1_1_0</link>
-   <description><![CDATA[
-<p>Gnuk version 1.1.0 is released.</p>
-<p>This is an experimental first release of version 1.1.x series.  Major
-changes include: replacing thread library to Chopstx, upgrade of the
-NeuG routine to the one of NeuG 1.0, and an incompatible change to
-support overriding key.</p>
-<p>Because of the incompatible change, please refer new documentation of
-1.1.0 for instructions of how to use Gnuk Token.  (New documentation
-can be used for 1.0.x, too.)</p>
-<ul class="simple">
-<li>Gnuk Documentation: <a class="reference external" href="http://www.fsij.org/doc-gnuk/">http://www.fsij.org/doc-gnuk/</a></li>
-</ul>
-<p class="readmore"><a href="/gnuk/version1_1_0">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org"></category>
-   <pubDate>Fri, 20 Dec 2013 12:28 GMT</pubDate>
-</item>
-<item>
-   <title>NeuG Version 1.0</title>
-   <guid isPermaLink="false">gnuk/neug_version1_0</guid>
-   <link>http://www.fsij.org/gnuk/neug_version1_0</link>
-   <description><![CDATA[
-<p>Version 1.0 of NeuG has been released.</p>
-<p>NeuG is an implementation of True Random Number Generator based on quantization error of ADC of STM32F103.</p>
-<p class="readmore"><a href="/gnuk/neug_version1_0">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org"></category>
-   <pubDate>Mon, 11 Nov 2013 03:58 GMT</pubDate>
-</item>
-<item>
-   <title>NeuG Version 0.11</title>
-   <guid isPermaLink="false">gnuk/neug_version0_11</guid>
-   <link>http://www.fsij.org/gnuk/neug_version0_11</link>
-   <description><![CDATA[
-<p>Version 0.11 of NeuG has been released.</p>
-<p>NeuG is an implementation of True Random Number Generator based on quantization error of ADC of STM32F103.</p>
-<p class="readmore"><a href="/gnuk/neug_version0_11">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org"></category>
-   <pubDate>Mon, 02 Sep 2013 04:51 GMT</pubDate>
-</item>
-</channel>
-</rss>
diff --git a/monthly-meetings/2013/GNU30-Final-Program b/monthly-meetings/2013/GNU30-Final-Program
deleted file mode 100644 (file)
index e92bd88..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      lang="ja" xml:lang="ja">
-<head>
-  <meta name="author" content="FSIJ Getsureikai Staff (getsureikai-2006@fsij.org)" />
-  <meta name="description" content="Monthly Meetings by FSIJ" />
-  <meta name="generator" content="pyblosxom" />
-  <meta name="ICBM" content="35.68592,139.7679" />
-  <link rel="home" href="/" />
-  <link rel="top" href="/" />
-  <link rel="shortcut icon" href="/images/favicon.ico" />
-  <link rel="icon" href="/images/favicon.ico" />
-  <title>FSIJ 月例会</title>
-  <link rel="stylesheet" type="text/css" media="all" href="/css/fsij_weblog.css" />
-  <link rel="alternate" type="application/rss+xml" href="/monthly-meetings/rss" />
-</head>
-
-<body id="monthly-meetings">
-<!-- header -->
-<div class="page-title" style="background-image: url(/images/nectec200711.jpg);">
-  <h1><a href="/monthly-meetings/" id="page-title">FSIJ 月例会</a></h1>
-  <span class="page-description">Monthly Meetings by FSIJ</span>
-</div>
-
-<div class="container">
-<!-- navigation menu -->
-  <div class="sidebar">
-    <a href="/">FSIJ Home</a><br/>
-    <a href=/monthly-meetings/join>参加する</a><br/><a href=/monthly-meetings/misc>月例会について</a><br/><a href=/monthly-meetings/place>場所</a><br/>
-    <a href="/monthly-meetings/rss">RSS<img width=20px style="vertical-align:bottom" src="/images/Feed-icon.png" /></a><br/>
-    <br/>
-    <a href="http://pyblosxom.sourceforge.net/"><img width=60px src="/images/pb_pyblosxom.gif" /></a>
-  </div>
-
-<!-- content -->
-  <div class="page-content">
-<div class="title">
-  <h1 class="name"><a href="/monthly-meetings/2013/GNU30-Final-Program"></a></h1>
-  <span class="buttons"> 2013-10-03</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="gnu">
-<h1>GNUプロジェクトについて知るワークショップ (記録)</h1>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">日時:</th><td class="field-body">2013年09月29日(日曜日)13:30 〜 18:50</td>
-</tr>
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">レンタルスペース 糀屋箱機構 creator district cue702
-<a class="reference external" href="http://www.koujiyahakokikou.com/2010/09/creator-district-cue702_10.html">http://www.koujiyahakokikou.com/2010/09/creator-district-cue702_10.html</a></td>
-</tr>
-<tr class="field"><th class="field-name">住所:</th><td class="field-body">東京都渋谷区渋谷1-17-1 TOC第2ビル7階 702</td>
-</tr>
-<tr class="field"><th class="field-name">人数:</th><td class="field-body">応募合計 19名 / 当日 18名</td>
-</tr>
-</tbody>
-</table>
-<p>GNUプロジェクト30周年を記念して、FSIJでもワークショップ形式の集いを開催しました。
-その記録です。</p>
-
-</div>
-<div class="section" id="id1">
-<h1>発表リスト</h1>
-<ul class="simple">
-<li>GNU宣言のg新しい日本語訳 : g新部裕</li>
-<li>「ハッカーは、クラッカーじゃない。」の30年 :  山根信二</li>
-<li>NSAのバックドアとフリーソフトウェア ( <a class="reference external" href="http://h2np.net/docs/NSAandFreeSoftware.pdf">HS</a> ) : すずきひろのぶ</li>
-</ul>
-<ul class="simple">
-<li>GNUは衰退しました :  八田真行</li>
-<li>GNUの読み方とGNUのロゴの日本語版 : g新部裕</li>
-<li>私が見てきたGNU --- とある雑誌編集者の回想 : 風穴江</li>
-<li>プログラミング言語 Ruby に GMP を組み込む ( <a class="reference external" href="http://www.a-k-r.org/pub/2013-09-29-gnu-30th-akr.pdf">AKR</a> ) : 田中 哲</li>
-</ul>
-<ul class="simple">
-<li>技術的希望リスト、過去、現在 : 引地信之</li>
-<li>GNUの読み方とGNUのロゴの日本語版 :  g新部 裕</li>
-<li>歴史のメタファを考える ( <a class="reference external" href="http://h2np.net/docs/k2-fsij-workshop2013.pdf">K2</a> ) : 岸田孝一</li>
-</ul>
-<ul class="simple">
-<li>自由ソフトウェアによるライブストリーミング ( <a class="reference external" href="https://docs.google.com/presentation/d/1BzZZ12RqF_5nqj2CLp-9uZpTDnUURGBanvn6LJy0QPI/edit?usp=sharing">KNOK</a> ) : 野首貴嗣</li>
-</ul>
-<ul class="simple">
-<li>Gnuk, GnuPG, そしてGNUプロジェクト : g新部 裕</li>
-<li>GCCプロジェクト史 : 小島 一元</li>
-<li>パネルディスカッション : これからの自由ソフトウェア運動について / 司会 風穴江 / パネラー  八田真行  山根信二  すずきひろのぶ</li>
-</ul>
-</div>
-<div class="section" id="id2">
-<h1>実施概要</h1>
-<p>ワークショップでの応募(ポジションペーパー必須)では11名の応募があった。
-当日一名急病により欠席し、10名がプレゼンテーションを行った。
-締め切った後、席に余裕があったので、観覧を募った所、8名の応募があった。</p>
-<p>各自のテーマに関してはプレゼンテーションを行い質疑応答を行った。
-プレゼンテーション終了後にパネルディスカッション(40分)を行った。
-会場の状況は自由なソフトウェアを用いて中継を行った。</p>
-<p>担当: FSIJ 鈴木 &lt;hironobu-at-fsij.org&gt;</p>
-</div>
-
-</div>
-<div class="entry_navi"><a href="/monthly-meetings/2013/Oct">&lt;10月の技術講座</a> | <a href="/monthly-meetings/2013/Dec">12月の技術講座&gt;</a></div>
-  </div>  <!-- page-content -->
-</div>
-</body>
-</html>
diff --git a/monthly-meetings/index.html b/monthly-meetings/index.html
deleted file mode 100644 (file)
index 568e406..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      lang="ja" xml:lang="ja">
-<head>
-  <meta name="author" content="FSIJ Getsureikai Staff (getsureikai-2006@fsij.org)" />
-  <meta name="description" content="Monthly Meetings by FSIJ" />
-  <meta name="generator" content="pyblosxom" />
-  <meta name="ICBM" content="35.68592,139.7679" />
-  <link rel="home" href="/" />
-  <link rel="top" href="/" />
-  <link rel="shortcut icon" href="/images/favicon.ico" />
-  <link rel="icon" href="/images/favicon.ico" />
-  <title>FSIJ 月例会</title>
-  <link rel="stylesheet" type="text/css" media="all" href="/css/fsij_weblog.css" />
-  <link rel="alternate" type="application/rss+xml" href="/monthly-meetings/rss" />
-</head>
-
-<body id="monthly-meetings">
-<!-- header -->
-<div class="page-title" style="background-image: url(/images/nectec200711.jpg);">
-  <h1><a href="/monthly-meetings/" id="page-title">FSIJ 月例会</a></h1>
-  <span class="page-description">Monthly Meetings by FSIJ</span>
-</div>
-
-<div class="container">
-<!-- navigation menu -->
-  <div class="sidebar">
-    <a href="/">FSIJ Home</a><br/>
-    <a href=/monthly-meetings/join>参加する</a><br/><a href=/monthly-meetings/misc>月例会について</a><br/><a href=/monthly-meetings/place>場所</a><br/>
-    <a href="/monthly-meetings/rss">RSS<img width=20px style="vertical-align:bottom" src="/images/Feed-icon.png" /></a><br/>
-    <br/>
-    <a href="http://pyblosxom.sourceforge.net/"><img width=60px src="/images/pb_pyblosxom.gif" /></a>
-  </div>
-
-<!-- content -->
-  <div class="page-content">
-<div class="title">
-  <h1 class="name"><a href="/monthly-meetings/2014/May">5月の技術講座</a></h1>
-  <span class="buttons"> 2014-05-07</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="id2">
-<h1>テーマ: 自由なコンピューティング&amp;自由なネットワークとサイト運用</h1>
-<p>開催日時 2014年5月28日(水曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第三会議室</td>
-</tr>
-</tbody>
-</table>
-<p>2014年5月よりFSIJのサイト運用を移行することになりました。</p>
-<p>これまでコロケーションサービスを利用し、自身のコンピュータでネットワークサービスを運用してきました。</p>
-<p>今後は、管理の権限が集中することを避けられる分散型の運用を行います。</p>
-<p>そこで、今月の会では、自由なコンピューティングを理念とし、自由なネットワークを標榜する場合、どのようなことが問題になるのかを議論します。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/May">more &raquo;</a></p>
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/monthly-meetings/2014/Apr">4月の技術講座</a></h1>
-  <span class="buttons"> 2014-04-04</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="ed25519eddsa">
-<h1>テーマ: 楕円曲線暗号Ed25519とEdDSA</h1>
-<p>開催日時 2014年4月21日(月曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>楕円曲線暗号の最近のトピックスについて議論します。</p>
-<p>Edwards形式を用いた楕円曲線Ed25519と電子署名のEdDSAを、特にOpenSSH や GnuPG での利用についての観点から考察します。</p>
-<p>具体的な実装については、Ref10と呼ばれる参照実装、libgcryptでの実装、Gnukでの実装の3つを議論します。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/Apr">more &raquo;</a></p>
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/monthly-meetings/2014/Feb">2月の集まり</a></h1>
-  <span class="buttons"> 2014-02-19</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="www-gnu-org">
-<h1>テーマ: www.gnu.orgの日本語訳について</h1>
-<p>開催日時 2014年2月26日(水曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>GNUプロジェクト は今年、開始から30周年です。2012年より新体制でwww.gnu.orgのウェブサイトの日本語訳の作業を行い、この体制で3年目を迎えました。</p>
-<p>www.gnu.org の日本語訳について議論し、作業の改善をはかります。</p>
-<p>www.gnu.orgの翻訳作業の関係者だけでなく、GNUプロジェクトについて知りたい方、自由ソフトウェア運動に関心のある方、ほかの日本語翻訳に関係している方など、広く参加を募ります。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/Feb">more &raquo;</a></p>
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/monthly-meetings/2014/Jan">1月の技術講座</a></h1>
-  <span class="buttons"> 2014-01-09</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="polarssl-gnupg">
-<h1>テーマ: PolarSSL, GnuPG とその脆弱性対応</h1>
-<p>開催日時 2014年1月29日(水曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>RSAの計算に関連した三つの脆弱性の問題について紹介し、その対策を討議します。
-ひとつは PolarSSL で CVE-2013-5915 です。
-ほかの二つは GnuPGの関連で CVE-2013-4242, CVE-2013-4576 です。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/Jan">more &raquo;</a></p>
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/monthly-meetings/2013/Dec">12月の技術講座</a></h1>
-  <span class="buttons"> 2013-11-12</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="id2">
-<h1>テーマ: オレオレ電話局を作ってみた</h1>
-<p>開催日時 2013年12月2日(月曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>自由なソフトウェアを利用したインターネット・テレフォニー環境について
-デモを交えてお話します。</p>
-<p class="readmore"><a href="/monthly-meetings/2013/Dec">more &raquo;</a></p>
-</div>
-<div class="entry_navi"></div>
-  </div>  <!-- page-content -->
-</div>
-</body>
-</html>
diff --git a/monthly-meetings/rss b/monthly-meetings/rss
deleted file mode 100644 (file)
index 0a88128..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<rss version="2.0" 
-   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" 
-   xmlns:html="http://www.w3.org/1999/html" 
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
-   xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
-<channel>
-   <title>FSIJ 月例会</title>
-   <link>http://www.fsij.org</link>
-   <description>Monthly Meetings by FSIJ</description>
-   <language>ja</language>
-   <copyright>Copyright 2009, 2010 Free Software Initiative of Japan</copyright>
-   <ttl>60</ttl>
-   <pubDate>Wed, 07 May 2014 03:56 GMT</pubDate>
-   <managingEditor>getsureikai-2006@fsij.org</managingEditor>
-   <generator>PyBlosxom http://pyblosxom.sourceforge.net/ 1.4.3 01/10/2008</generator>
-<item>
-   <title>5月の技術講座</title>
-   <guid isPermaLink="false">monthly-meetings/2014/May</guid>
-   <link>http://www.fsij.org/monthly-meetings/2014/May</link>
-   <description><![CDATA[
-<div class="section" id="id2">
-<h1>テーマ: 自由なコンピューティング&amp;自由なネットワークとサイト運用</h1>
-<p>開催日時 2014年5月28日(水曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第三会議室</td>
-</tr>
-</tbody>
-</table>
-<p>2014年5月よりFSIJのサイト運用を移行することになりました。</p>
-<p>これまでコロケーションサービスを利用し、自身のコンピュータでネットワークサービスを運用してきました。</p>
-<p>今後は、管理の権限が集中することを避けられる分散型の運用を行います。</p>
-<p>そこで、今月の会では、自由なコンピューティングを理念とし、自由なネットワークを標榜する場合、どのようなことが問題になるのかを議論します。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/May">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org">/2014</category>
-   <pubDate>Wed, 07 May 2014 03:56 GMT</pubDate>
-</item>
-<item>
-   <title>4月の技術講座</title>
-   <guid isPermaLink="false">monthly-meetings/2014/Apr</guid>
-   <link>http://www.fsij.org/monthly-meetings/2014/Apr</link>
-   <description><![CDATA[
-<div class="section" id="ed25519eddsa">
-<h1>テーマ: 楕円曲線暗号Ed25519とEdDSA</h1>
-<p>開催日時 2014年4月21日(月曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>楕円曲線暗号の最近のトピックスについて議論します。</p>
-<p>Edwards形式を用いた楕円曲線Ed25519と電子署名のEdDSAを、特にOpenSSH や GnuPG での利用についての観点から考察します。</p>
-<p>具体的な実装については、Ref10と呼ばれる参照実装、libgcryptでの実装、Gnukでの実装の3つを議論します。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/Apr">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org">/2014</category>
-   <pubDate>Fri, 04 Apr 2014 06:46 GMT</pubDate>
-</item>
-<item>
-   <title>2月の集まり</title>
-   <guid isPermaLink="false">monthly-meetings/2014/Feb</guid>
-   <link>http://www.fsij.org/monthly-meetings/2014/Feb</link>
-   <description><![CDATA[
-<div class="section" id="www-gnu-org">
-<h1>テーマ: www.gnu.orgの日本語訳について</h1>
-<p>開催日時 2014年2月26日(水曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>GNUプロジェクト は今年、開始から30周年です。2012年より新体制でwww.gnu.orgのウェブサイトの日本語訳の作業を行い、この体制で3年目を迎えました。</p>
-<p>www.gnu.org の日本語訳について議論し、作業の改善をはかります。</p>
-<p>www.gnu.orgの翻訳作業の関係者だけでなく、GNUプロジェクトについて知りたい方、自由ソフトウェア運動に関心のある方、ほかの日本語翻訳に関係している方など、広く参加を募ります。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/Feb">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org">/2014</category>
-   <pubDate>Wed, 19 Feb 2014 04:19 GMT</pubDate>
-</item>
-<item>
-   <title>1月の技術講座</title>
-   <guid isPermaLink="false">monthly-meetings/2014/Jan</guid>
-   <link>http://www.fsij.org/monthly-meetings/2014/Jan</link>
-   <description><![CDATA[
-<div class="section" id="polarssl-gnupg">
-<h1>テーマ: PolarSSL, GnuPG とその脆弱性対応</h1>
-<p>開催日時 2014年1月29日(水曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>RSAの計算に関連した三つの脆弱性の問題について紹介し、その対策を討議します。
-ひとつは PolarSSL で CVE-2013-5915 です。
-ほかの二つは GnuPGの関連で CVE-2013-4242, CVE-2013-4576 です。</p>
-<p class="readmore"><a href="/monthly-meetings/2014/Jan">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org">/2014</category>
-   <pubDate>Thu, 09 Jan 2014 02:15 GMT</pubDate>
-</item>
-<item>
-   <title>12月の技術講座</title>
-   <guid isPermaLink="false">monthly-meetings/2013/Dec</guid>
-   <link>http://www.fsij.org/monthly-meetings/2013/Dec</link>
-   <description><![CDATA[
-<div class="section" id="id2">
-<h1>テーマ: オレオレ電話局を作ってみた</h1>
-<p>開催日時 2013年12月2日(月曜日)18:30 〜 19:45</p>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">場所:</th><td class="field-body">東京体育館第四会議室</td>
-</tr>
-</tbody>
-</table>
-<p>自由なソフトウェアを利用したインターネット・テレフォニー環境について
-デモを交えてお話します。</p>
-<p class="readmore"><a href="/monthly-meetings/2013/Dec">more &raquo;</a></p>
-]]></description>
-   <category domain="http://www.fsij.org">/2013</category>
-   <pubDate>Tue, 12 Nov 2013 08:08 GMT</pubDate>
-</item>
-</channel>
-</rss>
diff --git a/news/index.html b/news/index.html
deleted file mode 100644 (file)
index 7f35eb6..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      lang="ja" xml:lang="ja">
-<head>
-  <meta name="author" content="FSIJ webmasters (webmaster@fsij.org)" />
-  <meta name="description" content="FSIJ News" />
-  <meta name="generator" content="pyblosxom" />
-  <meta name="ICBM" content="35.68592,139.7679" />
-  <link rel="home" href="/" />
-  <link rel="top" href="/" />
-  <link rel="shortcut icon" href="/images/favicon.ico" />
-  <link rel="icon" href="/images/favicon.ico" />
-  <title>News</title>
-  <link rel="stylesheet" type="text/css" media="all" href="/css/fsij_weblog.css" />
-  <link rel="alternate" type="application/rss+xml" href="/news/rss" />
-</head>
-
-<body id="news">
-<!-- header -->
-<div class="page-title" style="background-image: url(/images/spain200606.jpg);">
-  <h1><a href="/news/" id="page-title">News</a></h1>
-  <span class="page-description">FSIJ News</span>
-</div>
-
-<div class="container">
-<!-- navigation menu -->
-  <div class="sidebar">
-    <a href="/">FSIJ Home</a><br/>
-    
-    <a href="/news/rss">RSS<img width=20px style="vertical-align:bottom" src="/images/Feed-icon.png" /></a><br/>
-    <br/>
-    <a href="http://pyblosxom.sourceforge.net/"><img width=60px src="/images/pb_pyblosxom.gif" /></a>
-  </div>
-
-<!-- content -->
-  <div class="page-content">
-<div class="title">
-  <h1 class="name"><a href="/news/2010/fossasia">FOSS Asia 2010</a></h1>
-  <span class="buttons"> 2010-11-08</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <p>ホーチミンで開催される FOSS Asia に FSIJ から g新部が参加して、Gnuk の発表を行い、Debian 関係者と討議します。</p>
-<p>日本からは矢吹さんも参加します。</p>
-
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/news/2010/usb-vendor-id">FSIJ は USB Implementers Forum に加盟しました</a></h1>
-  <span class="buttons"> 2010-09-13</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <p>FSIJ は USB Implementers Forum (以下 USB-IF): <a class="reference external" href="http://www.usb.org/">http://www.usb.org/</a> にこのたび加盟しました。</p>
-<p>これにあわせて下記のVendor ID を取得しました。</p>
-<blockquote>
-<p>十進: 9035</p>
-<p>16進: 234B</p>
-</blockquote>
-<p>このVendor IDを使って、FSIJ USB Token version 2 は製作される予定です。</p>
-
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/news/2010/openinventionnetwork">FSIJ はOpen Inventionnetworkに加盟しました</a></h1>
-  <span class="buttons"> 2010-08-18</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="fsij-open-inventionnetwork">
-<h1>FSIJ はOpen Inventionnetworkに加盟しました</h1>
-<p>FSIJ はこのたび Open Invention Network: <a class="reference external" href="http://www.openinventionnetwork.com/">http://www.openinventionnetwork.com/</a> へ加盟しました。</p>
-<p>ソフトウェア特許は自由ソフトウェアだけでなくソフトウェア一般にとって、やっかいな問題の一つです。この問題は日本国内だけにとどまらずグローバルな問題です。</p>
-</div>
-<div class="section" id="id1">
-<h1>参考情報</h1>
-<p>これまで自由ソフトウェア運動はソフトウェア特許の問題に対して闘ってきています。
-これまでの取り組みのなかから重要なものを下記に示しますので参考にしてください。</p>
-<blockquote>
-<p>o League for Programming Freedom: <a class="reference external" href="http://progfree.org/">http://progfree.org/</a></p>
-<p>o Foundation for a Free Information Infrastructure: <a class="reference external" href="http://www.ffii.org/">http://www.ffii.org/</a></p>
-<p>o End Software Patents (FSF の活動): <a class="reference external" href="http://en.swpat.org/">http://en.swpat.org/</a></p>
-</blockquote>
-</div>
-
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/news/2010/project-anthy">仮名漢字変換ライブラリ Anthy</a></h1>
-  <span class="buttons"> 2010-06-29</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <p>2010年度から FSIJ は仮名漢字変換ライブラリ Anthy の開発を進めます。</p>
-<div class="section" id="fsij">
-<h1>FSIJ によるこれまでのサポート</h1>
-<p>これまで FSIJ は、未踏ソフトウェア創造事業、CodeFest (日本国内、海外), Google 夏休みコード道場、および Google SoC を通じて間接的に関わり、 Anthy の開発をサポートして来ました。</p>
-</div>
-<div class="section" id="id1">
-<h1>2010年度からのサポート</h1>
-<p>既に始めていますが、FSIJ は、Anthy の開発について、開発の主体となることを含めて、推進していきます。</p>
-<p>新しく FSIJ の活動により書かれた code は FSIJ が著作権を持ち、自由ソフトウェアとして配布されます。加えて、希望者がいれば、FSIJ は開発貢献者からの著作権の譲渡を受け付けます。</p>
-<p>カンファレンスなどの旅費、開発に必要な機器について FSIJ の費用負担を予算として用意します。</p>
-<p>自由ソフトウェアの活動として、著作権について FSIJ で体制を整えます。</p>
-</div>
-<div class="section" id="id2">
-<h1>ソフトウェア特許に対して</h1>
-<p>ソフトウェア特許の問題は日本国内だけにとどまらずグローバルな問題です。ソフトウェア特許に対する対策としてFSIJは、Open Invention Network: <a class="reference external" href="http://www.openinventionnetwork.com/">http://www.openinventionnetwork.com/</a> へ加盟する予定です。</p>
-</div>
-<div class="section" id="id3">
-<h1>よくある質問に対する回答のようなもの</h1>
-<p>開発のリソースについては、リポジトリは Debian のサーバ、メーリングリストは sourceforge.jp を使ってます。これについては、変更有りません。</p>
-<p>Anthy の開発に参加するに際して、FSIJ の会員になる必要はありません。</p>
-<p>また、FSIJ の自由ソフトウェア運動としての方向性や、主張に必ずしも同意しなくても問題ありません。</p>
-<p>自由ソフトウェアの活動として、これまでどおり Anthy の開発にご理解とご協力をお願いします。</p>
-</div>
-
-</div>
-<div class="entry_navi"></div>
-<div class="title">
-  <h1 class="name"><a href="/news/2010/agm">2010年度通常総会、成立しました。</a></h1>
-  <span class="buttons">gniibe 2010-06-21</span>
-  <br class="clearing" />
-</div>
-
-<div class="content">
-  <div class="section" id="id2">
-<h1>2010年度通常総会</h1>
-<p>2010年度通常総会は6/19(土)13:00より開催されました。22名の参加(うち、11名議長委任)で成立し、議案3件、それぞれ承認されました。</p>
-<blockquote>
-<ul class="simple">
-<li>2009年度活動報告</li>
-<li>2010年度活動計画</li>
-<li>2010年度役員</li>
-</ul>
-</blockquote>
-</div>
-<div class="section" id="id3">
-<h1>活動に関する改善など</h1>
-<p>通常総会で寄せられた意見に対して、活動の改善を行います。</p>
-<ol class="arabic">
-<li><p class="first">今年度から、ソフトウェア開発を推進します。</p>
-<blockquote>
-<ul>
-<li><p class="first">仮名漢字変換ソフトウェア Anthy</p>
-<p>関連して下記のソフトウェア/データも開発/保守します。</p>
-<ul class="simple">
-<li>Emacs 日本語入力サポート Egg</li>
-<li>郵便番号データ</li>
-</ul>
-</li>
-<li><p class="first">まだ名前がない NPO 管理ソフトウェア</p>
-</li>
-<li><p class="first">もう一個くらい</p>
-</li>
-</ul>
-</blockquote>
-</li>
-<li><p class="first">今年度は会費の処理を改善します。</p>
-<blockquote>
-<ul class="simple">
-<li>正会員への会費請求は(年度末ではなく)できるだけ早くします。</li>
-<li>会費をいくら支払うべきか個々の会員にわかりやすく伝えます。</li>
-<li>年度末をその年度の会費請求の締切りにします。</li>
-</ul>
-</blockquote>
-</li>
-<li><p class="first">Web の内容を更新します。</p>
-<blockquote>
-<ul class="simple">
-<li>これまでやってきた活動がわかるようにします。
-忘れちゃったかもしれない活動:<ul>
-<li>IPv6 アプリケーション開発</li>
-<li>自由フォント研究開発</li>
-</ul>
-</li>
-<li>現在進めている活動がわかるようにします。</li>
-</ul>
-</blockquote>
-</li>
-</ol>
-</div>
-
-</div>
-<div class="entry_navi"></div>
-  </div>  <!-- page-content -->
-</div>
-</body>
-</html>
diff --git a/news/rss b/news/rss
deleted file mode 100644 (file)
index 1b3a186..0000000
--- a/news/rss
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<rss version="2.0" 
-   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" 
-   xmlns:html="http://www.w3.org/1999/html" 
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
-   xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
-<channel>
-   <title>News</title>
-   <link>http://www.fsij.org</link>
-   <description>FSIJ News</description>
-   <language>ja</language>
-   <copyright>Copyright 2010 Free Software Initiative of Japan</copyright>
-   <ttl>60</ttl>
-   <pubDate>Mon, 08 Nov 2010 07:37 GMT</pubDate>
-   <managingEditor>webmaster@fsij.org</managingEditor>
-   <generator>PyBlosxom http://pyblosxom.sourceforge.net/ 1.4.3 01/10/2008</generator>
-<item>
-   <title>FOSS Asia 2010</title>
-   <guid isPermaLink="false">news/2010/fossasia</guid>
-   <link>http://www.fsij.org/news/2010/fossasia</link>
-   <description><![CDATA[
-<p>ホーチミンで開催される FOSS Asia に FSIJ から g新部が参加して、Gnuk の発表を行い、Debian 関係者と討議します。</p>
-<p>日本からは矢吹さんも参加します。</p>
-
-]]></description>
-   <category domain="http://www.fsij.org">/2010</category>
-   <pubDate>Mon, 08 Nov 2010 07:37 GMT</pubDate>
-</item>
-<item>
-   <title>FSIJ は USB Implementers Forum に加盟しました</title>
-   <guid isPermaLink="false">news/2010/usb-vendor-id</guid>
-   <link>http://www.fsij.org/news/2010/usb-vendor-id</link>
-   <description><![CDATA[
-<p>FSIJ は USB Implementers Forum (以下 USB-IF): <a class="reference external" href="http://www.usb.org/">http://www.usb.org/</a> にこのたび加盟しました。</p>
-<p>これにあわせて下記のVendor ID を取得しました。</p>
-<blockquote>
-<p>十進: 9035</p>
-<p>16進: 234B</p>
-</blockquote>
-<p>このVendor IDを使って、FSIJ USB Token version 2 は製作される予定です。</p>
-
-]]></description>
-   <category domain="http://www.fsij.org">/2010</category>
-   <pubDate>Mon, 13 Sep 2010 01:58 GMT</pubDate>
-</item>
-<item>
-   <title>FSIJ はOpen Inventionnetworkに加盟しました</title>
-   <guid isPermaLink="false">news/2010/openinventionnetwork</guid>
-   <link>http://www.fsij.org/news/2010/openinventionnetwork</link>
-   <description><![CDATA[
-<div class="section" id="fsij-open-inventionnetwork">
-<h1>FSIJ はOpen Inventionnetworkに加盟しました</h1>
-<p>FSIJ はこのたび Open Invention Network: <a class="reference external" href="http://www.openinventionnetwork.com/">http://www.openinventionnetwork.com/</a> へ加盟しました。</p>
-<p>ソフトウェア特許は自由ソフトウェアだけでなくソフトウェア一般にとって、やっかいな問題の一つです。この問題は日本国内だけにとどまらずグローバルな問題です。</p>
-</div>
-<div class="section" id="id1">
-<h1>参考情報</h1>
-<p>これまで自由ソフトウェア運動はソフトウェア特許の問題に対して闘ってきています。
-これまでの取り組みのなかから重要なものを下記に示しますので参考にしてください。</p>
-<blockquote>
-<p>o League for Programming Freedom: <a class="reference external" href="http://progfree.org/">http://progfree.org/</a></p>
-<p>o Foundation for a Free Information Infrastructure: <a class="reference external" href="http://www.ffii.org/">http://www.ffii.org/</a></p>
-<p>o End Software Patents (FSF の活動): <a class="reference external" href="http://en.swpat.org/">http://en.swpat.org/</a></p>
-</blockquote>
-</div>
-
-]]></description>
-   <category domain="http://www.fsij.org">/2010</category>
-   <pubDate>Wed, 18 Aug 2010 12:04 GMT</pubDate>
-</item>
-<item>
-   <title>仮名漢字変換ライブラリ Anthy</title>
-   <guid isPermaLink="false">news/2010/project-anthy</guid>
-   <link>http://www.fsij.org/news/2010/project-anthy</link>
-   <description><![CDATA[
-<p>2010年度から FSIJ は仮名漢字変換ライブラリ Anthy の開発を進めます。</p>
-<div class="section" id="fsij">
-<h1>FSIJ によるこれまでのサポート</h1>
-<p>これまで FSIJ は、未踏ソフトウェア創造事業、CodeFest (日本国内、海外), Google 夏休みコード道場、および Google SoC を通じて間接的に関わり、 Anthy の開発をサポートして来ました。</p>
-</div>
-<div class="section" id="id1">
-<h1>2010年度からのサポート</h1>
-<p>既に始めていますが、FSIJ は、Anthy の開発について、開発の主体となることを含めて、推進していきます。</p>
-<p>新しく FSIJ の活動により書かれた code は FSIJ が著作権を持ち、自由ソフトウェアとして配布されます。加えて、希望者がいれば、FSIJ は開発貢献者からの著作権の譲渡を受け付けます。</p>
-<p>カンファレンスなどの旅費、開発に必要な機器について FSIJ の費用負担を予算として用意します。</p>
-<p>自由ソフトウェアの活動として、著作権について FSIJ で体制を整えます。</p>
-</div>
-<div class="section" id="id2">
-<h1>ソフトウェア特許に対して</h1>
-<p>ソフトウェア特許の問題は日本国内だけにとどまらずグローバルな問題です。ソフトウェア特許に対する対策としてFSIJは、Open Invention Network: <a class="reference external" href="http://www.openinventionnetwork.com/">http://www.openinventionnetwork.com/</a> へ加盟する予定です。</p>
-</div>
-<div class="section" id="id3">
-<h1>よくある質問に対する回答のようなもの</h1>
-<p>開発のリソースについては、リポジトリは Debian のサーバ、メーリングリストは sourceforge.jp を使ってます。これについては、変更有りません。</p>
-<p>Anthy の開発に参加するに際して、FSIJ の会員になる必要はありません。</p>
-<p>また、FSIJ の自由ソフトウェア運動としての方向性や、主張に必ずしも同意しなくても問題ありません。</p>
-<p>自由ソフトウェアの活動として、これまでどおり Anthy の開発にご理解とご協力をお願いします。</p>
-</div>
-
-]]></description>
-   <category domain="http://www.fsij.org">/2010</category>
-   <pubDate>Tue, 29 Jun 2010 04:02 GMT</pubDate>
-</item>
-<item>
-   <title>2010年度通常総会、成立しました。</title>
-   <guid isPermaLink="false">news/2010/agm</guid>
-   <link>http://www.fsij.org/news/2010/agm</link>
-   <description><![CDATA[
-<div class="section" id="id2">
-<h1>2010年度通常総会</h1>
-<p>2010年度通常総会は6/19(土)13:00より開催されました。22名の参加(うち、11名議長委任)で成立し、議案3件、それぞれ承認されました。</p>
-<blockquote>
-<ul class="simple">
-<li>2009年度活動報告</li>
-<li>2010年度活動計画</li>
-<li>2010年度役員</li>
-</ul>
-</blockquote>
-</div>
-<div class="section" id="id3">
-<h1>活動に関する改善など</h1>
-<p>通常総会で寄せられた意見に対して、活動の改善を行います。</p>
-<ol class="arabic">
-<li><p class="first">今年度から、ソフトウェア開発を推進します。</p>
-<blockquote>
-<ul>
-<li><p class="first">仮名漢字変換ソフトウェア Anthy</p>
-<p>関連して下記のソフトウェア/データも開発/保守します。</p>
-<ul class="simple">
-<li>Emacs 日本語入力サポート Egg</li>
-<li>郵便番号データ</li>
-</ul>
-</li>
-<li><p class="first">まだ名前がない NPO 管理ソフトウェア</p>
-</li>
-<li><p class="first">もう一個くらい</p>
-</li>
-</ul>
-</blockquote>
-</li>
-<li><p class="first">今年度は会費の処理を改善します。</p>
-<blockquote>
-<ul class="simple">
-<li>正会員への会費請求は(年度末ではなく)できるだけ早くします。</li>
-<li>会費をいくら支払うべきか個々の会員にわかりやすく伝えます。</li>
-<li>年度末をその年度の会費請求の締切りにします。</li>
-</ul>
-</blockquote>
-</li>
-<li><p class="first">Web の内容を更新します。</p>
-<blockquote>
-<ul class="simple">
-<li>これまでやってきた活動がわかるようにします。
-忘れちゃったかもしれない活動:<ul>
-<li>IPv6 アプリケーション開発</li>
-<li>自由フォント研究開発</li>
-</ul>
-</li>
-<li>現在進めている活動がわかるようにします。</li>
-</ul>
-</blockquote>
-</li>
-</ol>
-</div>
-
-]]></description>
-   <category domain="http://www.fsij.org">/2010</category>
-   <pubDate>Mon, 21 Jun 2010 06:52 GMT</pubDate>
-</item>
-</channel>
-</rss>
diff --git a/tracdata/asc.png b/tracdata/asc.png
deleted file mode 100644 (file)
index 486b731..0000000
Binary files a/tracdata/asc.png and /dev/null differ
diff --git a/tracdata/css/code.css b/tracdata/css/code.css
deleted file mode 100644 (file)
index 015e02c..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-div.code {
- background: #f7f7f7;
- border: 1px solid #d7d7d7;
- margin: 1em 1.75em;
- padding: .25em;
- overflow: auto
-}
-
-div.code pre { margin: 0; }
-
-table.code {
- border: 1px solid #ddd;
- border-spacing: 0;
- border-top: 0;
- border-collapse: collapse; 
- empty-cells: show;
- font-size: 12px;
- line-height: 130%;
- padding: 0;
- margin: 0 auto;
- table-layout: fixed;
- width: 100%;
-}
-table.code th {
- border-right: 1px solid #d7d7d7;
- border-bottom: 1px solid #998;
- font-size: 11px;
-}
-table.code th.lineno { width: 4em }
-table.code thead th {
- background: #eee;
- border-top: 1px solid #d7d7d7;
- color: #999;
- padding: 0 .25em;
- text-align: center;
- white-space: nowrap;
-}
-table.code tbody th {
- background: #eed;
- color: #886;
- font-weight: normal;
- padding: 0 .5em;
- text-align: right;
- vertical-align: top;
-}
-table.code tbody th :link, table.code tbody th :visited {
- border: none;
- color: #886;
- text-decoration: none;
-}
-table.code tbody th :link:hover, table.code tbody th :visited:hover {
- color: #000;
-}
-table.code td {
- font: normal 11px monospace;
- overflow: hidden;
- padding: 1px 2px;
- vertical-align: top;
-}
-table.code tr.hilite th {
- background: #ccf;
-}
-table.code tr.hilite td {
- background: #ddf;
-}
-.image-file { background: #eee; padding: .3em }
-.image-file img { background: url(../imggrid.png) }
-
-/* Default */
-.code-block span { font-family: monospace; }
-
-/* Comments */
-.code-comment, .css_comment, .c_comment, .c_commentdoc, .c_commentline,
-.c_commentlinedoc, .h_comment,.pl_commentline, .p_commentblock,
-.p_commentline, .hphp_comment, .hphp_commentblock, .hphp_commentline,
-.yaml_comment {
- color: #998; 
- font-style: italic;
-}
-
-/* Language keyword */
-.code-keyword, .pl_word  { color: #789; font-weight: bold }
-
-/* Type */
-.code-type, .c_word, .c_word2, .p_classname, .hphp_classname{
- color: #468;
- font-weight: bold;
-}
-
-/* Function */
-.code-func, .p_defname {
- color: #900;
- font-weight: bold;
- border-bottom: none;
-}
-
-/* Pre-processor */
-.code-prep, .c_preprocessor, .pl_preprocessor, .yaml_identifier {
- color: #999;
- font-weight: bold;
-}
-
-/* Language construct */
-.code-lang, .p_word { color: #000; font-weight: bold }
-
-/* String */
-.code-string, .c_string, .c_stringeol, .css_doublestring, .css_singlestring,
-.h_singlestring, .h_doublestring, .pl_string, .pl_string_q, .pl_string_qq,
-.pl_string_qr, .pl_string_qw, .pl_string_qx, .pl_backticks, .pl_character,
-.p_string, .p_stringeol, .hphp_string, .hphp_stringeol, .hphp_triple,
-.hphp_tripledouble, .p_character, .p_triple, .p_tripledouble {
- color: #b84;
- font-weight: normal;
-}
-
-/* Variable name */
-.code-var { color: #f9f }
-
-/* SilverCity-specific styles */
-.css_id, .css_class, .css_pseudoclass, .css_tag { color: #900000 }
-.css_directive { color: #009000; font-weight: bold }
-.css_important { color: blue }
-.css_operator { color: #000090; font-weight: bold }
-.css_tag { font-weight: bold }
-.css_unknown_identifier, .css_unknown_pseudoclass { color: red }
-.css_value { color: navy }
-.c_commentdockeyword { color: navy; font-weight: bold }
-.c_commentdockeyworderror { color: red; font-weight: bold }
-.c_character, .c_regex, .c_uuid, .c_verbatim { color: olive }
-.c_number { color: #099 }
-.h_asp { color: #ff0 }
-.h_aspat { color: #ffdf00 }
-.h_attribute { color: teal }
-.h_attributeunknown { color: red }
-.h_cdata { color: #373 }
-.h_entity { color: purple }
-.h_number { color: #099 }
-.h_other { color: purple }
-.h_script, .h_tag, .h_tagend { color: navy }
-.h_tagunknown { color: red }
-.h_xmlend, .h_xmlstart { color: blue }
-.pl_datasection { color: olive }
-.pl_error { color: red; font-weight: bold }
-.pl_hash { color: #000 }
-.pl_here_delim, .pl_here_q, .pl_here_qq, .pl_here_qx, .pl_longquote { color: olive }
-.pl_number { color: #099 }
-.pl_pod { font-style: italic }
-.pl_regex, .pl_regsubst { color: olive }
-.p_number { color: #099 }
-.hphp_character { color: olive }
-.hphp_defname { color: #099; font-weight: bold }
-.hphp_number { color: #099 }
-.hphp_word { color: navy; font-weight: bold }
-.yaml_document { color: gray; font-style: italic }
-.yaml_keyword { color: #808 }
-.yaml_number { color: #800 }
-.yaml_reference { color: #088 }
-.v_comment { color: gray; font-style: italic }
-.v_commentline, .v_commentlinebang { color: red; font-style: italic }
-.v_number, .v_preprocessor { color: #099 }
-.v_string, .v_stringeol { color: olive }
-.v_user{ color: blue; font-weight: bold }
-.v_word, .v_word3 { color: navy; font-weight: bold }
-.v_word2 { color: green; font-weight: bold }
diff --git a/tracdata/css/trac.css b/tracdata/css/trac.css
deleted file mode 100644 (file)
index f2840d0..0000000
+++ /dev/null
@@ -1,574 +0,0 @@
-body { background: #fff; color: #000; margin: 10px; padding: 0; }
-body, th, td {
- font: normal 13px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif;
-}
-h1, h2, h3, h4 {
- font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif;
- font-weight: bold;
- letter-spacing: -0.018em;
- page-break-after: avoid;
-}
-h1 { font-size: 19px; margin: .15em 1em 0.5em 0 }
-h2 { font-size: 16px }
-h3 { font-size: 14px }
-hr { border: none;  border-top: 1px solid #ccb; margin: 2em 0 }
-address { font-style: normal }
-img { border: none }
-
-.underline { text-decoration: underline }
-ol.loweralpha { list-style-type: lower-alpha }
-ol.upperalpha { list-style-type: upper-alpha }
-ol.lowerroman { list-style-type: lower-roman }
-ol.upperroman { list-style-type: upper-roman }
-ol.arabic     { list-style-type: decimal }
-
-/* Link styles */
-:link, :visited {
- text-decoration: none;
- color: #b00;
- border-bottom: 1px dotted #bbb;
-}
-:link:hover, :visited:hover { background-color: #eee; color: #555 }
-h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited,
-h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited {
- color: inherit;
-}
-
-/* Heading anchors */
-.anchor:link, .anchor:visited {
- border: none;
- color: #d7d7d7;
- font-size: .8em;
- vertical-align: text-top;
-}
-* > .anchor:link, * > .anchor:visited {
- visibility: hidden;
-}
-h1:hover .anchor, h2:hover .anchor, h3:hover .anchor,
-h4:hover .anchor, h5:hover .anchor, h6:hover .anchor {
- visibility: visible;
-}
-
-@media screen {
- a.ext-link .icon {
-  background: url(../extlink.gif) left center no-repeat;
-  padding-left: 16px;
- }
- a.mail-link .icon {
-  background: url(../envelope.png) left center no-repeat;
-  padding-left: 16px;
- }
-}
-
-/* Forms */
-input, textarea, select { margin: 2px }
-input, select { vertical-align: middle }
-input[type=button], input[type=submit], input[type=reset] {
- background: #eee;
- color: #222;
- border: 1px outset #ccc;
- padding: .1em .5em;
-}
-input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
- background: #ccb;
-}
-input[type=button][disabled], input[type=submit][disabled],
-input[type=reset][disabled] {
- background: #f6f6f6;
- border-style: solid;
- color: #999;
-}
-input[type=text], input.textwidget, textarea { border: 1px solid #d7d7d7 }
-input[type=text], input.textwidget { padding: .25em .5em }
-input[type=text]:focus, input.textwidget:focus, textarea:focus {
- border: 1px solid #886;
-}
-option { border-bottom: 1px dotted #d7d7d7 }
-fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 1em 0 }
-form p.hint, form span.hint { color: #666; font-size: 85%; font-style: italic; margin: .5em 0;
-  padding-left: 1em;
-}
-fieldset.iefix {
-  background: transparent;
-  border: none;
-  padding: 0;
-  margin: 0;
-}
-* html fieldset.iefix { width: 98% }
-fieldset.iefix p { margin: 0 }
-legend { color: #999; padding: 0 .25em; font-size: 90%; font-weight: bold }
-label.disabled { color: #d7d7d7 }
-.buttons { margin: .5em .5em .5em 0 }
-.buttons form, .buttons form div { display: inline }
-.buttons input { margin: 1em .5em .1em 0 }
-.inlinebuttons input { 
- font-size: 70%;
- border-width: 1px;
- border-style: dotted;
- margin: 0 .1em;
- padding: 0.1em;
- background: none;
-}
-
-/* Header */
-#header hr { display: none }
-#header h1 { margin: 1.5em 0 -1.5em; }
-#header img { border: none; margin: 0 0 0 /*was: -3em*/} 
-#header :link, #header :visited, #header :link:hover, #header :visited:hover {
- background: transparent;
- color: #555;
- margin-bottom: 2px;
- border: none;
-}
-#header h1 :link:hover, #header h1 :visited:hover { color: #000 }
-
-/* Quick search */
-#search {
- clear: both;
- font-size: 10px;
- height: 2.2em;
- margin: 0 0 1em;
- text-align: right;
-}
-#search input { font-size: 10px }
-#search label { display: none }
-
-/* Navigation */
-.nav h2, .nav hr { display: none }
-.nav ul { font-size: 10px; list-style: none; margin: 0; text-align: right }
-.nav li {
- border-right: 1px solid #d7d7d7;
- display: inline;
- padding: 0 .75em;
- white-space: nowrap;
-}
-.nav li.last { border-right: none }
-
-/* Main navigation bar */
-#mainnav {
- background: #f7f7f7 url(../topbar_gradient.png) 0 0;
- border: 1px solid #000;
- font: normal 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;
- margin: 2em /* .66em */ 0 2em /* .33em */;
- padding: .2em 0;
-}
-#mainnav li { border-right: none; padding: .25em 0 }
-#mainnav :link, #mainnav :visited {
- background: url(../dots.gif) 0 0 no-repeat;
- border-right: 1px solid #fff;
- border-bottom: none;
- border-left: 1px solid #555;
- color: #000;
- padding: .2em 20px;
-}
-* html #mainnav :link, * html #mainnav :visited { background-position: 1px 0 }
-#mainnav :link:hover, #mainnav :visited:hover {
- background-color: #ccc;
- border-right: 1px solid #ddd;
-}
-#mainnav .active :link, #mainnav .active :visited {
- background: #333 url(../topbar_gradient2.png) 0 0 repeat-x;
- border-top: none;
- border-right: 1px solid #000;
- color: #eee;
- font-weight: bold;
-}
-#mainnav .active :link:hover, #mainnav .active :visited:hover {
- border-right: 1px solid #000;
-}
-
-/* Context-dependent navigation links */
-#ctxtnav { height: 1em }
-#ctxtnav li ul {
- background: #f7f7f7;
- color: #ccc;
- border: 1px solid;
- padding: 0;
- display: inline;
- margin: 0;
-}
-#ctxtnav li li { padding: 0; }
-#ctxtnav li li :link, #ctxtnav li li :visited { padding: 0 1em }
-#ctxtnav li li :link:hover, #ctxtnav li li :visited:hover {
- background: #bba;
- color: #fff;
-}
-
-/* Alternate links */
-#altlinks { clear: both; text-align: center }
-#altlinks h3 { font-size: 12px; letter-spacing: normal; margin: 0 }
-#altlinks ul { list-style: none; margin: 0; padding: 0 0 1em }
-#altlinks li {
- border-right: 1px solid #d7d7d7;
- display: inline;
- font-size: 11px;
- line-height: 1.5;
- padding: 0 1em;
- white-space: nowrap;
-}
-#altlinks li.last { border-right: none }
-#altlinks li :link, #altlinks li :visited {
- background-repeat: no-repeat;
- color: #666;
- border: none;
- padding: 0 0 2px;
-}
-#altlinks li a.ics { background-image: url(../ics.png); padding-left: 22px }
-#altlinks li a.rss { background-image: url(../feed.png); padding-left: 20px }
-
-/* Footer */
-#footer {
-  clear: both;
-  color: #bbb;
-  font-size: 10px;
-  border-top: 1px solid;
-  height: 31px;
-  padding: .25em 0;
-}
-#footer :link, #footer :visited { color: #bbb; }
-#footer hr { display: none }
-#footer #tracpowered { border: 0; float: left }
-#footer #tracpowered:hover { background: transparent }
-#footer p { margin: 0 }
-#footer p.left {
-  float: left;
-  margin-left: 1em;
-  padding: 0 1em;
-  border-left: 1px solid #d7d7d7;
-  border-right: 1px solid #d7d7d7;
-}
-#footer p.right {
-  float: right;
-  text-align: right;
-}
-
-#content { padding-bottom: 2em; position: relative }
-
-#help {
- clear: both;
- color: #999;
- font-size: 90%;
- margin: 1em;
- text-align: right;
-}
-#help :link, #help :visited { cursor: help }
-#help hr { display: none }
-
-/* Page preferences form */
-#prefs {
- background: #f7f7f0;
- border: 1px outset #998;
- float: right;
- font-size: 9px;
- padding: .8em;
- position: relative;
- margin: 0 1em 1em;
-}
-* html #prefs { width: 26em } /* Set width only for IE */
-#prefs input, #prefs select { font-size: 9px; vertical-align: middle }
-#prefs fieldset {
- background: transparent;
- border: none;
- margin: .5em;
- padding: 0;
-}
-#prefs fieldset legend {
- background: transparent;
- color: #000;
- font-size: 9px;
- font-weight: normal;
- margin: 0 0 0 -1.5em;
- padding: 0;
-}
-#prefs .buttons { text-align: right }
-
-/* Version information (browser, wiki, attachments) */
-#info {
- margin: 1em 0 0 0;
- background: #f7f7f0;
- border: 1px solid #d7d7d7;
- border-collapse: collapse;
- border-spacing: 0;
- clear: both;
- width: 100%;
-}
-#info th, #info td { font-size: 85%; padding: 2px .5em; vertical-align: top }
-#info th { font-weight: bold; text-align: left; white-space: nowrap }
-#info td.message { width: 100% }
-#info .message ul { padding: 0; margin: 0 2em }
-#info .message p { margin: 0; padding: 0 }
-
-/* Wiki */
-.wikipage { padding-left: 18px }
-.wikipage h1, .wikipage h2, .wikipage h3 { margin-left: -18px }
-
-a.missing:link, a.missing:visited, span.missing { color: #998 }
-a.missing:link, a.missing:visited { background: #fafaf0 }
-a.missing:hover { color: #000 }
-a.closed:link, a.closed:visited { text-decoration: line-through }
-span.closed { text-decoration: line-through }
-span.forbidden, a.forbidden { background: #fafaf0; color: #998; }
-
-/* User-selectable styles for blocks */
-.important {
- background: #fcb;
- border: 1px dotted #d00;
- color: #500;
- padding: 0 .5em 0 .5em;
- margin: .5em;
-}
-
-dl.wiki dt { font-weight: bold }
-dl.compact dt { float: left; padding-right: .5em }
-dl.compact dd { margin: 0; padding: 0 }
-
-pre.wiki, pre.literal-block {
- background: #f7f7f7;
- border: 1px solid #d7d7d7;
- margin: 1em 1.75em;
- padding: .25em;
- overflow: auto;
-}
-
-blockquote.citation { 
- margin: -0.6em 0;
- border-style: solid; 
- border-width: 0 0 0 2px; 
- padding-left: .5em;
- border-color: #b44; 
-}
-.citation blockquote.citation { border-color: #4b4; }
-.citation .citation blockquote.citation { border-color: #44b; }
-.citation .citation .citation blockquote.citation { border-color: #c55; }
-
-table.wiki {
- border: 2px solid #ccc;
- border-collapse: collapse;
- border-spacing: 0;
-}
-table.wiki td { border: 1px solid #ccc;  padding: .1em .25em; }
-
-.wikitoolbar {
- border: solid #d7d7d7;
- border-width: 1px 1px 1px 0;
- height: 18px;
- width: 234px;
-}
-.wikitoolbar :link, .wikitoolbar :visited {
- background: transparent url(../edit_toolbar.png) no-repeat;
- border: 1px solid #fff;
- border-left-color: #d7d7d7;
- cursor: default;
- display: block;
- float: left;
- width: 24px;
- height: 16px;
-}
-.wikitoolbar :link:hover, .wikitoolbar :visited:hover {
- background-color: transparent;
- border: 1px solid #fb2;
-}
-.wikitoolbar a#em { background-position: 0 0 }
-.wikitoolbar a#strong { background-position: 0 -16px }
-.wikitoolbar a#heading { background-position: 0 -32px }
-.wikitoolbar a#link { background-position: 0 -48px }
-.wikitoolbar a#code { background-position: 0 -64px }
-.wikitoolbar a#hr { background-position: 0 -80px }
-.wikitoolbar a#np { background-position: 0 -96px }
-.wikitoolbar a#br { background-position: 0 -112px }
-.wikitoolbar a#img { background-position: 0 -128px }
-
-/* Styles for the form for adding attachments. */
-#attachment .field { margin-top: 1.3em }
-#attachment label { padding-left: .2em }
-#attachment fieldset { margin-top: 2em }
-#attachment fieldset .field { float: left; margin: 0 1em .5em 0 }
-#attachment .options { float: left; padding: 0 0 1em 1em }
-#attachment br { clear: left }
-.attachment #preview { margin-top: 1em }
-
-/* Styles for the list of attachments. */
-#attachments { border: 1px outset #996; padding: 1em }
-#attachments .attachments { margin-left: 2em; padding: 0 }
-#attachments dt { display: list-item; list-style: square; }
-#attachments dd { font-style: italic; margin-left: 0; padding-left: 0; }
-
-/* Styles for tabular listings such as those used for displaying directory
-   contents and report results. */
-table.listing {
- clear: both;
- border-bottom: 1px solid #d7d7d7;
- border-collapse: collapse;
- border-spacing: 0;
- margin-top: 1em;
- width: 100%;
-}
-table.listing th { text-align: left; padding: 0 1em .1em 0; font-size: 12px }
-table.listing thead { background: #f7f7f0 }
-table.listing thead th {
- border: 1px solid #d7d7d7;
- border-bottom-color: #999;
- font-size: 11px;
- font-weight: bold;
- padding: 2px .5em;
- vertical-align: bottom;
-}
-table.listing thead th :link:hover, table.listing thead th :visited:hover {
- background-color: transparent;
-}
-table.listing thead th a { border: none; padding-right: 12px }
-table.listing th.asc a, table.listing th.desc a { font-weight: bold }
-table.listing th.asc a, table.listing th.desc a {
- background-position: 100% 50%;
- background-repeat: no-repeat;
-}
-table.listing th.asc a { background-image: url(../asc.png) }
-table.listing th.desc a { background-image: url(../desc.png) }
-table.listing tbody td, table.listing tbody th {
- border: 1px dotted #ddd;
- padding: .3em .5em;
- vertical-align: top;
-}
-table.listing tbody td a:hover, table.listing tbody th a:hover {
- background-color: transparent;
-}
-table.listing tbody tr { border-top: 1px solid #ddd }
-table.listing tbody tr.even { background-color: #fcfcfc }
-table.listing tbody tr.odd { background-color: #f7f7f7 }
-table.listing tbody tr:hover { background: #eed !important }
-table.listing tbody tr.focus { background: #ddf !important }
-
-/* Styles for the page history table
-   (extends the styles for "table.listing") */
-#fieldhist td { padding: 0 .5em }
-#fieldhist td.date, #fieldhist td.diff, #fieldhist td.version,
-#fieldhist td.author {
- white-space: nowrap;
-}
-#fieldhist td.version { text-align: center }
-#fieldhist td.comment { width: 100% }
-
-/* Auto-completion interface */
-.suggestions { background: #fff; border: 1px solid #886; color: #222; }
-.suggestions ul {
-  font-family: sans-serif;
-  max-height: 20em;
-  min-height: 3em;
-  list-style: none;
-  margin: 0;
-  overflow: auto;
-  padding: 0;
-  width: 440px;
-}
-* html .suggestions ul { height: 10em; }
-.suggestions li { background: #fff; cursor: pointer; padding: 2px 5px }
-.suggestions li.selected { background: #b9b9b9 }
-
-/* Styles for the error page (and rst errors) */
-#content.error .message, div.system-message {
- background: #fdc;
- border: 2px solid #d00;
- color: #500;
- padding: .5em;
- margin: 1em 0;
-}
-#content.error div.message pre, div.system-message pre {
-  margin-left: 1em;
-  overflow: hidden;
-  white-space: normal;
-}
-div.system-message p { margin: 0; }
-div.system-message p.system-message-title { font-weight: bold; }
-
-#warning.system-message { background: #ffa; border: 2px solid #886; }
-#warning.system-message li { list-style-type: square; }
-
-#notice.system-message { background: #bfb; border: 2px solid #484; }
-#notice.system-message li { list-style-type: square; }
-
-#content.error form.newticket { display: inline; }
-#content.error form.newticket textarea { display: none; }
-
-#content.error #systeminfo { margin: 1em; width: auto; }
-#content.error #systeminfo th { font-weight: bold; text-align: right; }
-
-#content.error #traceback { margin-left: 1em; }
-#content.error #traceback :link, #content.error #traceback :visited {
-  border: none;
-}
-#content.error #tbtoggle { font-size: 80%; }
-#content.error #traceback div { margin-left: 1em; }
-#content.error #traceback h3 { font-size: 95%; margin: .5em 0 0; }
-#content.error #traceback :link var, #content.error #traceback :visited var {
-  font-family: monospace;
-  font-style: normal;
-  font-weight: bold;
-}
-#content.error #traceback span.file { color: #666; font-size: 85%; }
-#content.error #traceback ul { list-style: none; margin: .5em 0; padding: 0; }
-#content.error #traceback ol {
-  border: 1px dotted #d7d7d7;
-  color: #999;
-  font-size: 85%;
-  line-height: 1;
-  margin: .5em 0;
-}
-#content.error #traceback ol li { white-space: pre; }
-#content.error #traceback ol li.current { background: #e6e6e6; color: #333; }
-#content.error #traceback ol li code { color: #666; }
-#content.error #traceback ol li.current code { color: #000; }
-#content.error #traceback table { margin: .5em 0 1em;  }
-#content.error #traceback th, #content.error #traceback td {
-  font-size: 85%; padding: 1px;
-}
-#content.error #traceback th var {
-  font-family: monospace;
-  font-style: normal;
-}
-#content.error #traceback td code { white-space: pre; }
-#content.error #traceback pre { font-size: 95%; }
-
-#content .paging { margin: 0 0 2em; padding: .5em 0 0;
-  font-size: 85%; line-height: 2em; text-align: center;
-}
-#content .paging .current { 
-  padding: .1em .3em;
-  border: 1px solid #333;
-  background: #999; color: #fff; 
-}
-
-#content .paging :link, #content .paging :visited {
-  padding: .1em .3em;
-  border: 1px solid #666;
-  background: transparent; color: #666;
-}
-#content .paging :link:hover, #content .paging :visited:hover {
-  background: #999; color: #fff;  border-color: #333;
-}
-#content .paging .previous a, 
-#content .paging .next a {
-  font-size: 150%; font-weight: bold; border: none;
-}
-#content .paging .previous a:hover,
-#content .paging .next a:hover {
-  background: transparent; color: #666;
-}
-
-#content h2 .numresults { color: #666; font-size: 90%; }
-
-/* Styles for search word highlighting */
-@media screen {
- .searchword0 { background: #ff9 }
- .searchword1 { background: #cfc }
- .searchword2 { background: #cff }
- .searchword3 { background: #ccf }
- .searchword4 { background: #fcf }
-}
-
-@media print {
- #header, #altlinks, #footer, #help { display: none }
- .nav, form, .buttons form, form .buttons, form .inlinebuttons {
-   display: none;
- }
- form.printableform { display: block }
-}
diff --git a/tracdata/css/wiki.css b/tracdata/css/wiki.css
deleted file mode 100644 (file)
index 90f5dee..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-@import url(code.css);
-
-/* Styles for the page editing form */
-#edit #rows { float: right; font-size: 80% }
-#edit #rows select { font-size: 90% }
-#edit #text { clear: both; width: 100% }
-#edit .wikitoolbar { float: left; }
-#changeinfo { padding: .5em }
-#changeinfo .field { float: left; margin: 0 1em .5em 0 }
-#changeinfo br { clear: left }
-#changeinfo .options { padding: 0 0 1em 1em }
-#changeinfo .options, #changeinfo .buttons { clear: left }
-#delete, #save { margin-left: 6em }
-#preview {
- background: #f4f4f4 url(../draft.png);
- margin: 1em 0 2em;
- overflow: auto;
-}
-#template { vertical-align: middle; padding-top: 1em; }
-
-/* Diff view */
-#overview .multi { color: #999 }
-#overview .ipnr { color: #999; font-size: 80% }
-#overview .comment { padding: 1em 0 0 }
-
-@media print { 
- th.diff, td.diff { display: none }
-}
-
-/* Styles for the TracGuideToc wikimacro */
-.wiki-toc {
- padding: .5em 1em;
- margin: 0 0 2em 1em;
- float: right;
- border: 1px outset #ddc;
- background: #ffd;
- font-size: 85%;
- position: relative;
-}
-.wiki-toc h4 { font-size: 12px; margin: 0 }
-.wiki-toc ul, .wiki-toc ol { list-style: none; padding: 0; margin: 0 }
-.wiki-toc ul ul, .wiki-toc ol ol { padding-left: 1.2em }
-.wiki-toc li { margin: 0; padding: 0 }
-.wiki-toc .active { background: #ff9; position: relative; }
diff --git a/tracdata/desc.png b/tracdata/desc.png
deleted file mode 100644 (file)
index 2070185..0000000
Binary files a/tracdata/desc.png and /dev/null differ
diff --git a/tracdata/dots.gif b/tracdata/dots.gif
deleted file mode 100644 (file)
index c6ae052..0000000
Binary files a/tracdata/dots.gif and /dev/null differ
diff --git a/tracdata/edit_toolbar.png b/tracdata/edit_toolbar.png
deleted file mode 100644 (file)
index 1269b3f..0000000
Binary files a/tracdata/edit_toolbar.png and /dev/null differ
diff --git a/tracdata/envelope.png b/tracdata/envelope.png
deleted file mode 100644 (file)
index 74676b3..0000000
Binary files a/tracdata/envelope.png and /dev/null differ
diff --git a/tracdata/extlink.gif b/tracdata/extlink.gif
deleted file mode 100644 (file)
index d47e14c..0000000
Binary files a/tracdata/extlink.gif and /dev/null differ
diff --git a/tracdata/feed.png b/tracdata/feed.png
deleted file mode 100644 (file)
index fec919d..0000000
Binary files a/tracdata/feed.png and /dev/null differ
diff --git a/tracdata/ics.png b/tracdata/ics.png
deleted file mode 100644 (file)
index 69b9193..0000000
Binary files a/tracdata/ics.png and /dev/null differ
diff --git a/tracdata/imggrid.png b/tracdata/imggrid.png
deleted file mode 100644 (file)
index d1e60d9..0000000
Binary files a/tracdata/imggrid.png and /dev/null differ
diff --git a/tracdata/js/jquery.js b/tracdata/js/jquery.js
deleted file mode 100644 (file)
index 9263574..0000000
+++ /dev/null
@@ -1,4376 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.3.2
- * http://jquery.com/
- *
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
- *
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
- */
-(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)
-                       return undefined;
-
-               var notxml = !jQuery.isXMLDoc( elem ),
-                       // Whether we are setting (or getting)
-                       set = value !== undefined;
-
-               // Try to normalize/fix the name
-               name = notxml && jQuery.props[ name ] || name;
-
-               // Only do all the following if this is a node (faster for style)
-               // IE elem.getAttribute passes even for style
-               if ( elem.tagName ) {
-
-                       // These attributes require special treatment
-                       var special = /href|src|style/.test( name );
-
-                       // Safari mis-reports the default selected property of a hidden option
-                       // Accessing the parent's selectedIndex property fixes it
-                       if ( name == "selected" && elem.parentNode )
-                               elem.parentNode.selectedIndex;
-
-                       // If applicable, access the attribute via the DOM 0 way
-                       if ( name in elem && notxml && !special ) {
-                               if ( set ){
-                                       // We can't allow the type property to be changed (since it causes problems in IE)
-                                       if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
-                                               throw "type property can't be changed";
-
-                                       elem[ name ] = value;
-                               }
-
-                               // browsers index elements by id/name on forms, give priority to attributes.
-                               if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
-                                       return elem.getAttributeNode( name ).nodeValue;
-
-                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-                               if ( name == "tabIndex" ) {
-                                       var attributeNode = elem.getAttributeNode( "tabIndex" );
-                                       return attributeNode && attributeNode.specified
-                                               ? attributeNode.value
-                                               : elem.nodeName.match(/(button|input|object|select|textarea)/i)
-                                                       ? 0
-                                                       : elem.nodeName.match(/^(a|area)$/i) && elem.href
-                                                               ? 0
-                                                               : undefined;
-                               }
-
-                               return elem[ name ];
-                       }
-
-                       if ( !jQuery.support.style && notxml &&  name == "style" )
-                               return jQuery.attr( elem.style, "cssText", value );
-
-                       if ( set )
-                               // convert the value to a string (all browsers do this but IE) see #1070
-                               elem.setAttribute( name, "" + value );
-
-                       var attr = !jQuery.support.hrefNormalized && notxml && special
-                                       // Some attributes require a special call on IE
-                                       ? elem.getAttribute( name, 2 )
-                                       : elem.getAttribute( name );
-
-                       // Non-existent attributes return null, we normalize to undefined
-                       return attr === null ? undefined : attr;
-               }
-
-               // elem is actually elem.style ... set the style
-
-               // IE uses filters for opacity
-               if ( !jQuery.support.opacity && name == "opacity" ) {
-                       if ( set ) {
-                               // IE has trouble with opacity if it does not have layout
-                               // Force it by setting the zoom level
-                               elem.zoom = 1;
-
-                               // Set the alpha filter to set the opacity
-                               elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
-                                       (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
-                       }
-
-                       return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
-                               (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
-                               "";
-               }
-
-               name = name.replace(/-([a-z])/ig, function(all, letter){
-                       return letter.toUpperCase();
-               });
-
-               if ( set )
-                       elem[ name ] = value;
-
-               return elem[ name ];
-       },
-
-       trim: function( text ) {
-               return (text || "").replace( /^\s+|\s+$/g, "" );
-       },
-
-       makeArray: function( array ) {
-               var ret = [];
-
-               if( array != null ){
-                       var i = array.length;
-                       // The window, strings (and functions) also have 'length'
-                       if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
-                               ret[0] = array;
-                       else
-                               while( i )
-                                       ret[--i] = array[i];
-               }
-
-               return ret;
-       },
-
-       inArray: function( elem, array ) {
-               for ( var i = 0, length = array.length; i < length; i++ )
-               // Use === because on IE, window == document
-                       if ( array[ i ] === elem )
-                               return i;
-
-               return -1;
-       },
-
-       merge: function( first, second ) {
-               // We have to loop this way because IE & Opera overwrite the length
-               // expando of getElementsByTagName
-               var i = 0, elem, pos = first.length;
-               // Also, we need to make sure that the correct elements are being returned
-               // (IE returns comment nodes in a '*' query)
-               if ( !jQuery.support.getAll ) {
-                       while ( (elem = second[ i++ ]) != null )
-                               if ( elem.nodeType != 8 )
-                                       first[ pos++ ] = elem;
-
-               } else
-                       while ( (elem = second[ i++ ]) != null )
-                               first[ pos++ ] = elem;
-
-               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 = [];
-
-               // Go through the array, only saving the items
-               // that pass the validator function
-               for ( var i = 0, length = elems.length; i < length; i++ )
-                       if ( !inv != !callback( elems[ i ], i ) )
-                               ret.push( elems[ i ] );
-
-               return ret;
-       },
-
-       map: function( elems, callback ) {
-               var ret = [];
-
-               // Go through the array, translating each of the items to their
-               // new value (or values).
-               for ( var i = 0, length = elems.length; i < length; i++ ) {
-                       var value = callback( elems[ i ], i );
-
-                       if ( value != null )
-                               ret[ ret.length ] = value;
-               }
-
-               return ret.concat.apply( [], ret );
-       }
-});
-
-// Use of jQuery.browser is deprecated.
-// It's included for backwards compatibility and plugins,
-// although they should work to migrate away.
-
-var userAgent = navigator.userAgent.toLowerCase();
-
-// Figure out what browser is being used
-jQuery.browser = {
-       version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
-       safari: /webkit/.test( userAgent ),
-       opera: /opera/.test( userAgent ),
-       msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
-       mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
-};
-
-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 ), name, selector );
-       };
-});
-
-jQuery.each({
-       appendTo: "append",
-       prependTo: "prepend",
-       insertBefore: "before",
-       insertAfter: "after",
-       replaceAll: "replaceWith"
-}, function(name, original){
-       jQuery.fn[ name ] = function( selector ) {
-               var ret = [], insert = jQuery( selector );
-
-               for ( var i = 0, l = insert.length; i < l; i++ ) {
-                       var elems = (i > 0 ? this.clone(true) : this).get();
-                       jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
-                       ret = ret.concat( elems );
-               }
-
-               return this.pushStack( ret, name, selector );
-       };
-});
-
-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, state ) {
-               if( typeof state !== "boolean" )
-                       state = !jQuery.className.has( this, classNames );
-               jQuery.className[ state ? "add" : "remove" ]( this, classNames );
-       },
-
-       remove: function( selector ) {
-               if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
-                       // Prevent memory leaks
-                       jQuery( "*", this ).add([this]).each(function(){
-                               jQuery.event.remove(this);
-                               jQuery.removeData(this);
-                       });
-                       if (this.parentNode)
-                               this.parentNode.removeChild( this );
-               }
-       },
-
-       empty: function() {
-               // Remove element nodes and prevent memory leaks
-               jQuery(this).children().remove();
-
-               // Remove any remaining nodes
-               while ( this.firstChild )
-                       this.removeChild( this.firstChild );
-       }
-}, function(name, fn){
-       jQuery.fn[ name ] = function(){
-               return this.each( fn, arguments );
-       };
-});
-
-// Helper function used by the dimensions and offset modules
-function num(elem, prop) {
-       return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
-}
-var expando = "jQuery" + now(), uuid = 0, windowData = {};\r
-\r
-jQuery.extend({\r
-       cache: {},\r
-\r
-       data: function( elem, name, data ) {\r
-               elem = elem == window ?\r
-                       windowData :\r
-                       elem;\r
-\r
-               var id = elem[ expando ];\r
-\r
-               // Compute a unique ID for the element\r
-               if ( !id )\r
-                       id = elem[ expando ] = ++uuid;\r
-\r
-               // Only generate the data cache if we're\r
-               // trying to access or manipulate it\r
-               if ( name && !jQuery.cache[ id ] )\r
-                       jQuery.cache[ id ] = {};\r
-\r
-               // Prevent overriding the named cache with undefined values\r
-               if ( data !== undefined )\r
-                       jQuery.cache[ id ][ name ] = data;\r
-\r
-               // Return the named cache data, or the ID for the element\r
-               return name ?\r
-                       jQuery.cache[ id ][ name ] :\r
-                       id;\r
-       },\r
-\r
-       removeData: function( elem, name ) {\r
-               elem = elem == window ?\r
-                       windowData :\r
-                       elem;\r
-\r
-               var id = elem[ expando ];\r
-\r
-               // If we want to remove a specific section of the element's data\r
-               if ( name ) {\r
-                       if ( jQuery.cache[ id ] ) {\r
-                               // Remove the section of cache data\r
-                               delete jQuery.cache[ id ][ name ];\r
-\r
-                               // If we've removed all the data, remove the element's cache\r
-                               name = "";\r
-\r
-                               for ( name in jQuery.cache[ id ] )\r
-                                       break;\r
-\r
-                               if ( !name )\r
-                                       jQuery.removeData( elem );\r
-                       }\r
-\r
-               // Otherwise, we want to remove all of the element's data\r
-               } else {\r
-                       // Clean up the element expando\r
-                       try {\r
-                               delete elem[ expando ];\r
-                       } catch(e){\r
-                               // IE has trouble directly removing the expando\r
-                               // but it's ok with using removeAttribute\r
-                               if ( elem.removeAttribute )\r
-                                       elem.removeAttribute( expando );\r
-                       }\r
-\r
-                       // Completely remove the data cache\r
-                       delete jQuery.cache[ id ];\r
-               }\r
-       },\r
-       queue: function( elem, type, data ) {\r
-               if ( elem ){\r
-       \r
-                       type = (type || "fx") + "queue";\r
-       \r
-                       var q = jQuery.data( elem, type );\r
-       \r
-                       if ( !q || jQuery.isArray(data) )\r
-                               q = jQuery.data( elem, type, jQuery.makeArray(data) );\r
-                       else if( data )\r
-                               q.push( data );\r
-       \r
-               }\r
-               return q;\r
-       },\r
-\r
-       dequeue: function( elem, type ){\r
-               var queue = jQuery.queue( elem, type ),\r
-                       fn = queue.shift();\r
-               \r
-               if( !type || type === "fx" )\r
-                       fn = queue[0];\r
-                       \r
-               if( fn !== undefined )\r
-                       fn.call(elem);\r
-       }\r
-});\r
-\r
-jQuery.fn.extend({\r
-       data: function( key, value ){\r
-               var parts = key.split(".");\r
-               parts[1] = parts[1] ? "." + parts[1] : "";\r
-\r
-               if ( value === undefined ) {\r
-                       var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);\r
-\r
-                       if ( data === undefined && this.length )\r
-                               data = jQuery.data( this[0], key );\r
-\r
-                       return data === undefined && parts[1] ?\r
-                               this.data( parts[0] ) :\r
-                               data;\r
-               } else\r
-                       return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){\r
-                               jQuery.data( this, key, value );\r
-                       });\r
-       },\r
-\r
-       removeData: function( key ){\r
-               return this.each(function(){\r
-                       jQuery.removeData( this, key );\r
-               });\r
-       },\r
-       queue: function(type, data){\r
-               if ( typeof type !== "string" ) {\r
-                       data = type;\r
-                       type = "fx";\r
-               }\r
-\r
-               if ( data === undefined )\r
-                       return jQuery.queue( this[0], type );\r
-\r
-               return this.each(function(){\r
-                       var queue = jQuery.queue( this, type, data );\r
-                       \r
-                        if( type == "fx" && queue.length == 1 )\r
-                               queue[0].call(this);\r
-               });\r
-       },\r
-       dequeue: function(type){\r
-               return this.each(function(){\r
-                       jQuery.dequeue( this, type );\r
-               });\r
-       }\r
-});/*!
- * Sizzle CSS Selector Engine - v0.9.3
- *  Copyright 2009, The Dojo Foundation
- *  Released under the MIT, BSD, and GPL Licenses.
- *  More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
-       done = 0,
-       toString = Object.prototype.toString;
-
-var Sizzle = function(selector, context, results, seed) {
-       results = results || [];
-       context = context || document;
-
-       if ( context.nodeType !== 1 && context.nodeType !== 9 )
-               return [];
-       
-       if ( !selector || typeof selector !== "string" ) {
-               return results;
-       }
-
-       var parts = [], m, set, checkSet, check, mode, extra, prune = true;
-       
-       // Reset the position of the chunker regexp (start from head)
-       chunker.lastIndex = 0;
-       
-       while ( (m = chunker.exec(selector)) !== null ) {
-               parts.push( m[1] );
-               
-               if ( m[2] ) {
-                       extra = RegExp.rightContext;
-                       break;
-               }
-       }
-
-       if ( parts.length > 1 && origPOS.exec( selector ) ) {
-               if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
-                       set = posProcess( parts[0] + parts[1], context );
-               } else {
-                       set = Expr.relative[ parts[0] ] ?
-                               [ context ] :
-                               Sizzle( parts.shift(), context );
-
-                       while ( parts.length ) {
-                               selector = parts.shift();
-
-                               if ( Expr.relative[ selector ] )
-                                       selector += parts.shift();
-
-                               set = posProcess( selector, set );
-                       }
-               }
-       } else {
-               var ret = seed ?
-                       { expr: parts.pop(), set: makeArray(seed) } :
-                       Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
-               set = Sizzle.filter( ret.expr, ret.set );
-
-               if ( parts.length > 0 ) {
-                       checkSet = makeArray(set);
-               } else {
-                       prune = false;
-               }
-
-               while ( parts.length ) {
-                       var cur = parts.pop(), pop = cur;
-
-                       if ( !Expr.relative[ cur ] ) {
-                               cur = "";
-                       } else {
-                               pop = parts.pop();
-                       }
-
-                       if ( pop == null ) {
-                               pop = context;
-                       }
-
-                       Expr.relative[ cur ]( checkSet, pop, isXML(context) );
-               }
-       }
-
-       if ( !checkSet ) {
-               checkSet = set;
-       }
-
-       if ( !checkSet ) {
-               throw "Syntax error, unrecognized expression: " + (cur || selector);
-       }
-
-       if ( toString.call(checkSet) === "[object Array]" ) {
-               if ( !prune ) {
-                       results.push.apply( results, checkSet );
-               } else if ( context.nodeType === 1 ) {
-                       for ( var i = 0; checkSet[i] != null; i++ ) {
-                               if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
-                                       results.push( set[i] );
-                               }
-                       }
-               } else {
-                       for ( var i = 0; checkSet[i] != null; i++ ) {
-                               if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
-                                       results.push( set[i] );
-                               }
-                       }
-               }
-       } else {
-               makeArray( checkSet, results );
-       }
-
-       if ( extra ) {
-               Sizzle( extra, context, results, seed );
-
-               if ( sortOrder ) {
-                       hasDuplicate = false;
-                       results.sort(sortOrder);
-
-                       if ( hasDuplicate ) {
-                               for ( var i = 1; i < results.length; i++ ) {
-                                       if ( results[i] === results[i-1] ) {
-                                               results.splice(i--, 1);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       return results;
-};
-
-Sizzle.matches = function(expr, set){
-       return Sizzle(expr, null, null, set);
-};
-
-Sizzle.find = function(expr, context, isXML){
-       var set, match;
-
-       if ( !expr ) {
-               return [];
-       }
-
-       for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
-               var type = Expr.order[i], match;
-               
-               if ( (match = Expr.match[ type ].exec( expr )) ) {
-                       var left = RegExp.leftContext;
-
-                       if ( left.substr( left.length - 1 ) !== "\\" ) {
-                               match[1] = (match[1] || "").replace(/\\/g, "");
-                               set = Expr.find[ type ]( match, context, isXML );
-                               if ( set != null ) {
-                                       expr = expr.replace( Expr.match[ type ], "" );
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       if ( !set ) {
-               set = context.getElementsByTagName("*");
-       }
-
-       return {set: set, expr: expr};
-};
-
-Sizzle.filter = function(expr, set, inplace, not){
-       var old = expr, result = [], curLoop = set, match, anyFound,
-               isXMLFilter = set && set[0] && isXML(set[0]);
-
-       while ( expr && set.length ) {
-               for ( var type in Expr.filter ) {
-                       if ( (match = Expr.match[ type ].exec( expr )) != null ) {
-                               var filter = Expr.filter[ type ], found, item;
-                               anyFound = false;
-
-                               if ( curLoop == result ) {
-                                       result = [];
-                               }
-
-                               if ( Expr.preFilter[ type ] ) {
-                                       match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
-                                       if ( !match ) {
-                                               anyFound = found = true;
-                                       } else if ( match === true ) {
-                                               continue;
-                                       }
-                               }
-
-                               if ( match ) {
-                                       for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
-                                               if ( item ) {
-                                                       found = filter( item, match, i, curLoop );
-                                                       var pass = not ^ !!found;
-
-                                                       if ( inplace && found != null ) {
-                                                               if ( pass ) {
-                                                                       anyFound = true;
-                                                               } else {
-                                                                       curLoop[i] = false;
-                                                               }
-                                                       } else if ( pass ) {
-                                                               result.push( item );
-                                                               anyFound = true;
-                                                       }
-                                               }
-                                       }
-                               }
-
-                               if ( found !== undefined ) {
-                                       if ( !inplace ) {
-                                               curLoop = result;
-                                       }
-
-                                       expr = expr.replace( Expr.match[ type ], "" );
-
-                                       if ( !anyFound ) {
-                                               return [];
-                                       }
-
-                                       break;
-                               }
-                       }
-               }
-
-               // Improper expression
-               if ( expr == old ) {
-                       if ( anyFound == null ) {
-                               throw "Syntax error, unrecognized expression: " + expr;
-                       } else {
-                               break;
-                       }
-               }
-
-               old = expr;
-       }
-
-       return curLoop;
-};
-
-var Expr = Sizzle.selectors = {
-       order: [ "ID", "NAME", "TAG" ],
-       match: {
-               ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
-               CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
-               NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
-               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
-               TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
-               CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
-               POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
-               PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
-       },
-       attrMap: {
-               "class": "className",
-               "for": "htmlFor"
-       },
-       attrHandle: {
-               href: function(elem){
-                       return elem.getAttribute("href");
-               }
-       },
-       relative: {
-               "+": function(checkSet, part, isXML){
-                       var isPartStr = typeof part === "string",
-                               isTag = isPartStr && !/\W/.test(part),
-                               isPartStrNotTag = isPartStr && !isTag;
-
-                       if ( isTag && !isXML ) {
-                               part = part.toUpperCase();
-                       }
-
-                       for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
-                               if ( (elem = checkSet[i]) ) {
-                                       while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
-                                       checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
-                                               elem || false :
-                                               elem === part;
-                               }
-                       }
-
-                       if ( isPartStrNotTag ) {
-                               Sizzle.filter( part, checkSet, true );
-                       }
-               },
-               ">": function(checkSet, part, isXML){
-                       var isPartStr = typeof part === "string";
-
-                       if ( isPartStr && !/\W/.test(part) ) {
-                               part = isXML ? part : part.toUpperCase();
-
-                               for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-                                       var elem = checkSet[i];
-                                       if ( elem ) {
-                                               var parent = elem.parentNode;
-                                               checkSet[i] = parent.nodeName === part ? parent : false;
-                                       }
-                               }
-                       } else {
-                               for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-                                       var elem = checkSet[i];
-                                       if ( elem ) {
-                                               checkSet[i] = isPartStr ?
-                                                       elem.parentNode :
-                                                       elem.parentNode === part;
-                                       }
-                               }
-
-                               if ( isPartStr ) {
-                                       Sizzle.filter( part, checkSet, true );
-                               }
-                       }
-               },
-               "": function(checkSet, part, isXML){
-                       var doneName = done++, checkFn = dirCheck;
-
-                       if ( !part.match(/\W/) ) {
-                               var nodeCheck = part = isXML ? part : part.toUpperCase();
-                               checkFn = dirNodeCheck;
-                       }
-
-                       checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
-               },
-               "~": function(checkSet, part, isXML){
-                       var doneName = done++, checkFn = dirCheck;
-
-                       if ( typeof part === "string" && !part.match(/\W/) ) {
-                               var nodeCheck = part = isXML ? part : part.toUpperCase();
-                               checkFn = dirNodeCheck;
-                       }
-
-                       checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
-               }
-       },
-       find: {
-               ID: function(match, context, isXML){
-                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
-                               var m = context.getElementById(match[1]);
-                               return m ? [m] : [];
-                       }
-               },
-               NAME: function(match, context, isXML){
-                       if ( typeof context.getElementsByName !== "undefined" ) {
-                               var ret = [], results = context.getElementsByName(match[1]);
-
-                               for ( var i = 0, l = results.length; i < l; i++ ) {
-                                       if ( results[i].getAttribute("name") === match[1] ) {
-                                               ret.push( results[i] );
-                                       }
-                               }
-
-                               return ret.length === 0 ? null : ret;
-                       }
-               },
-               TAG: function(match, context){
-                       return context.getElementsByTagName(match[1]);
-               }
-       },
-       preFilter: {
-               CLASS: function(match, curLoop, inplace, result, not, isXML){
-                       match = " " + match[1].replace(/\\/g, "") + " ";
-
-                       if ( isXML ) {
-                               return match;
-                       }
-
-                       for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
-                               if ( elem ) {
-                                       if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
-                                               if ( !inplace )
-                                                       result.push( elem );
-                                       } else if ( inplace ) {
-                                               curLoop[i] = false;
-                                       }
-                               }
-                       }
-
-                       return false;
-               },
-               ID: function(match){
-                       return match[1].replace(/\\/g, "");
-               },
-               TAG: function(match, curLoop){
-                       for ( var i = 0; curLoop[i] === false; i++ ){}
-                       return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
-               },
-               CHILD: function(match){
-                       if ( match[1] == "nth" ) {
-                               // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
-                               var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
-                                       match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
-                                       !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
-                               // calculate the numbers (first)n+(last) including if they are negative
-                               match[2] = (test[1] + (test[2] || 1)) - 0;
-                               match[3] = test[3] - 0;
-                       }
-
-                       // TODO: Move to normal caching system
-                       match[0] = done++;
-
-                       return match;
-               },
-               ATTR: function(match, curLoop, inplace, result, not, isXML){
-                       var name = match[1].replace(/\\/g, "");
-                       
-                       if ( !isXML && Expr.attrMap[name] ) {
-                               match[1] = Expr.attrMap[name];
-                       }
-
-                       if ( match[2] === "~=" ) {
-                               match[4] = " " + match[4] + " ";
-                       }
-
-                       return match;
-               },
-               PSEUDO: function(match, curLoop, inplace, result, not){
-                       if ( match[1] === "not" ) {
-                               // If we're dealing with a complex expression, or a simple one
-                               if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
-                                       match[3] = Sizzle(match[3], null, null, curLoop);
-                               } else {
-                                       var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-                                       if ( !inplace ) {
-                                               result.push.apply( result, ret );
-                                       }
-                                       return false;
-                               }
-                       } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
-                               return true;
-                       }
-                       
-                       return match;
-               },
-               POS: function(match){
-                       match.unshift( true );
-                       return match;
-               }
-       },
-       filters: {
-               enabled: function(elem){
-                       return elem.disabled === false && elem.type !== "hidden";
-               },
-               disabled: function(elem){
-                       return elem.disabled === true;
-               },
-               checked: function(elem){
-                       return elem.checked === true;
-               },
-               selected: function(elem){
-                       // Accessing this property makes selected-by-default
-                       // options in Safari work properly
-                       elem.parentNode.selectedIndex;
-                       return elem.selected === true;
-               },
-               parent: function(elem){
-                       return !!elem.firstChild;
-               },
-               empty: function(elem){
-                       return !elem.firstChild;
-               },
-               has: function(elem, i, match){
-                       return !!Sizzle( match[3], elem ).length;
-               },
-               header: function(elem){
-                       return /h\d/i.test( elem.nodeName );
-               },
-               text: function(elem){
-                       return "text" === elem.type;
-               },
-               radio: function(elem){
-                       return "radio" === elem.type;
-               },
-               checkbox: function(elem){
-                       return "checkbox" === elem.type;
-               },
-               file: function(elem){
-                       return "file" === elem.type;
-               },
-               password: function(elem){
-                       return "password" === elem.type;
-               },
-               submit: function(elem){
-                       return "submit" === elem.type;
-               },
-               image: function(elem){
-                       return "image" === elem.type;
-               },
-               reset: function(elem){
-                       return "reset" === elem.type;
-               },
-               button: function(elem){
-                       return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
-               },
-               input: function(elem){
-                       return /input|select|textarea|button/i.test(elem.nodeName);
-               }
-       },
-       setFilters: {
-               first: function(elem, i){
-                       return i === 0;
-               },
-               last: function(elem, i, match, array){
-                       return i === array.length - 1;
-               },
-               even: function(elem, i){
-                       return i % 2 === 0;
-               },
-               odd: function(elem, i){
-                       return i % 2 === 1;
-               },
-               lt: function(elem, i, match){
-                       return i < match[3] - 0;
-               },
-               gt: function(elem, i, match){
-                       return i > match[3] - 0;
-               },
-               nth: function(elem, i, match){
-                       return match[3] - 0 == i;
-               },
-               eq: function(elem, i, match){
-                       return match[3] - 0 == i;
-               }
-       },
-       filter: {
-               PSEUDO: function(elem, match, i, array){
-                       var name = match[1], filter = Expr.filters[ name ];
-
-                       if ( filter ) {
-                               return filter( elem, i, match, array );
-                       } else if ( name === "contains" ) {
-                               return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
-                       } else if ( name === "not" ) {
-                               var not = match[3];
-
-                               for ( var i = 0, l = not.length; i < l; i++ ) {
-                                       if ( not[i] === elem ) {
-                                               return false;
-                                       }
-                               }
-
-                               return true;
-                       }
-               },
-               CHILD: function(elem, match){
-                       var type = match[1], node = elem;
-                       switch (type) {
-                               case 'only':
-                               case 'first':
-                                       while (node = node.previousSibling)  {
-                                               if ( node.nodeType === 1 ) return false;
-                                       }
-                                       if ( type == 'first') return true;
-                                       node = elem;
-                               case 'last':
-                                       while (node = node.nextSibling)  {
-                                               if ( node.nodeType === 1 ) return false;
-                                       }
-                                       return true;
-                               case 'nth':
-                                       var first = match[2], last = match[3];
-
-                                       if ( first == 1 && last == 0 ) {
-                                               return true;
-                                       }
-                                       
-                                       var doneName = match[0],
-                                               parent = elem.parentNode;
-       
-                                       if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
-                                               var count = 0;
-                                               for ( node = parent.firstChild; node; node = node.nextSibling ) {
-                                                       if ( node.nodeType === 1 ) {
-                                                               node.nodeIndex = ++count;
-                                                       }
-                                               } 
-                                               parent.sizcache = doneName;
-                                       }
-                                       
-                                       var diff = elem.nodeIndex - last;
-                                       if ( first == 0 ) {
-                                               return diff == 0;
-                                       } else {
-                                               return ( diff % first == 0 && diff / first >= 0 );
-                                       }
-                       }
-               },
-               ID: function(elem, match){
-                       return elem.nodeType === 1 && elem.getAttribute("id") === match;
-               },
-               TAG: function(elem, match){
-                       return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
-               },
-               CLASS: function(elem, match){
-                       return (" " + (elem.className || elem.getAttribute("class")) + " ")
-                               .indexOf( match ) > -1;
-               },
-               ATTR: function(elem, match){
-                       var name = match[1],
-                               result = Expr.attrHandle[ name ] ?
-                                       Expr.attrHandle[ name ]( elem ) :
-                                       elem[ name ] != null ?
-                                               elem[ name ] :
-                                               elem.getAttribute( name ),
-                               value = result + "",
-                               type = match[2],
-                               check = match[4];
-
-                       return result == null ?
-                               type === "!=" :
-                               type === "=" ?
-                               value === check :
-                               type === "*=" ?
-                               value.indexOf(check) >= 0 :
-                               type === "~=" ?
-                               (" " + value + " ").indexOf(check) >= 0 :
-                               !check ?
-                               value && result !== false :
-                               type === "!=" ?
-                               value != check :
-                               type === "^=" ?
-                               value.indexOf(check) === 0 :
-                               type === "$=" ?
-                               value.substr(value.length - check.length) === check :
-                               type === "|=" ?
-                               value === check || value.substr(0, check.length + 1) === check + "-" :
-                               false;
-               },
-               POS: function(elem, match, i, array){
-                       var name = match[2], filter = Expr.setFilters[ name ];
-
-                       if ( filter ) {
-                               return filter( elem, i, match, array );
-                       }
-               }
-       }
-};
-
-var origPOS = Expr.match.POS;
-
-for ( var type in Expr.match ) {
-       Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
-}
-
-var makeArray = function(array, results) {
-       array = Array.prototype.slice.call( array );
-
-       if ( results ) {
-               results.push.apply( results, array );
-               return results;
-       }
-       
-       return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-try {
-       Array.prototype.slice.call( document.documentElement.childNodes );
-
-// Provide a fallback method if it does not work
-} catch(e){
-       makeArray = function(array, results) {
-               var ret = results || [];
-
-               if ( toString.call(array) === "[object Array]" ) {
-                       Array.prototype.push.apply( ret, array );
-               } else {
-                       if ( typeof array.length === "number" ) {
-                               for ( var i = 0, l = array.length; i < l; i++ ) {
-                                       ret.push( array[i] );
-                               }
-                       } else {
-                               for ( var i = 0; array[i]; i++ ) {
-                                       ret.push( array[i] );
-                               }
-                       }
-               }
-
-               return ret;
-       };
-}
-
-var sortOrder;
-
-if ( document.documentElement.compareDocumentPosition ) {
-       sortOrder = function( a, b ) {
-               var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
-               if ( ret === 0 ) {
-                       hasDuplicate = true;
-               }
-               return ret;
-       };
-} else if ( "sourceIndex" in document.documentElement ) {
-       sortOrder = function( a, b ) {
-               var ret = a.sourceIndex - b.sourceIndex;
-               if ( ret === 0 ) {
-                       hasDuplicate = true;
-               }
-               return ret;
-       };
-} else if ( document.createRange ) {
-       sortOrder = function( a, b ) {
-               var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
-               aRange.selectNode(a);
-               aRange.collapse(true);
-               bRange.selectNode(b);
-               bRange.collapse(true);
-               var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
-               if ( ret === 0 ) {
-                       hasDuplicate = true;
-               }
-               return ret;
-       };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
-       // We're going to inject a fake input element with a specified name
-       var form = document.createElement("form"),
-               id = "script" + (new Date).getTime();
-       form.innerHTML = "<input name='" + id + "'/>";
-
-       // Inject it into the root element, check its status, and remove it quickly
-       var root = document.documentElement;
-       root.insertBefore( form, root.firstChild );
-
-       // The workaround has to do additional checks after a getElementById
-       // Which slows things down for other browsers (hence the branching)
-       if ( !!document.getElementById( id ) ) {
-               Expr.find.ID = function(match, context, isXML){
-                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
-                               var m = context.getElementById(match[1]);
-                               return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
-                       }
-               };
-
-               Expr.filter.ID = function(elem, match){
-                       var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-                       return elem.nodeType === 1 && node && node.nodeValue === match;
-               };
-       }
-
-       root.removeChild( form );
-})();
-
-(function(){
-       // Check to see if the browser returns only elements
-       // when doing getElementsByTagName("*")
-
-       // Create a fake element
-       var div = document.createElement("div");
-       div.appendChild( document.createComment("") );
-
-       // Make sure no comments are found
-       if ( div.getElementsByTagName("*").length > 0 ) {
-               Expr.find.TAG = function(match, context){
-                       var results = context.getElementsByTagName(match[1]);
-
-                       // Filter out possible comments
-                       if ( match[1] === "*" ) {
-                               var tmp = [];
-
-                               for ( var i = 0; results[i]; i++ ) {
-                                       if ( results[i].nodeType === 1 ) {
-                                               tmp.push( results[i] );
-                                       }
-                               }
-
-                               results = tmp;
-                       }
-
-                       return results;
-               };
-       }
-
-       // Check to see if an attribute returns normalized href attributes
-       div.innerHTML = "<a href='#'></a>";
-       if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
-                       div.firstChild.getAttribute("href") !== "#" ) {
-               Expr.attrHandle.href = function(elem){
-                       return elem.getAttribute("href", 2);
-               };
-       }
-})();
-
-if ( document.querySelectorAll ) (function(){
-       var oldSizzle = Sizzle, div = document.createElement("div");
-       div.innerHTML = "<p class='TEST'></p>";
-
-       // Safari can't handle uppercase or unicode characters when
-       // in quirks mode.
-       if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
-               return;
-       }
-       
-       Sizzle = function(query, context, extra, seed){
-               context = context || document;
-
-               // Only use querySelectorAll on non-XML documents
-               // (ID selectors don't work in non-HTML documents)
-               if ( !seed && context.nodeType === 9 && !isXML(context) ) {
-                       try {
-                               return makeArray( context.querySelectorAll(query), extra );
-                       } catch(e){}
-               }
-               
-               return oldSizzle(query, context, extra, seed);
-       };
-
-       Sizzle.find = oldSizzle.find;
-       Sizzle.filter = oldSizzle.filter;
-       Sizzle.selectors = oldSizzle.selectors;
-       Sizzle.matches = oldSizzle.matches;
-})();
-
-if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
-       var div = document.createElement("div");
-       div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
-       // Opera can't find a second classname (in 9.6)
-       if ( div.getElementsByClassName("e").length === 0 )
-               return;
-
-       // Safari caches class attributes, doesn't catch changes (in 3.2)
-       div.lastChild.className = "e";
-
-       if ( div.getElementsByClassName("e").length === 1 )
-               return;
-
-       Expr.order.splice(1, 0, "CLASS");
-       Expr.find.CLASS = function(match, context, isXML) {
-               if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
-                       return context.getElementsByClassName(match[1]);
-               }
-       };
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
-       var sibDir = dir == "previousSibling" && !isXML;
-       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-               var elem = checkSet[i];
-               if ( elem ) {
-                       if ( sibDir && elem.nodeType === 1 ){
-                               elem.sizcache = doneName;
-                               elem.sizset = i;
-                       }
-                       elem = elem[dir];
-                       var match = false;
-
-                       while ( elem ) {
-                               if ( elem.sizcache === doneName ) {
-                                       match = checkSet[elem.sizset];
-                                       break;
-                               }
-
-                               if ( elem.nodeType === 1 && !isXML ){
-                                       elem.sizcache = doneName;
-                                       elem.sizset = i;
-                               }
-
-                               if ( elem.nodeName === cur ) {
-                                       match = elem;
-                                       break;
-                               }
-
-                               elem = elem[dir];
-                       }
-
-                       checkSet[i] = match;
-               }
-       }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
-       var sibDir = dir == "previousSibling" && !isXML;
-       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
-               var elem = checkSet[i];
-               if ( elem ) {
-                       if ( sibDir && elem.nodeType === 1 ) {
-                               elem.sizcache = doneName;
-                               elem.sizset = i;
-                       }
-                       elem = elem[dir];
-                       var match = false;
-
-                       while ( elem ) {
-                               if ( elem.sizcache === doneName ) {
-                                       match = checkSet[elem.sizset];
-                                       break;
-                               }
-
-                               if ( elem.nodeType === 1 ) {
-                                       if ( !isXML ) {
-                                               elem.sizcache = doneName;
-                                               elem.sizset = i;
-                                       }
-                                       if ( typeof cur !== "string" ) {
-                                               if ( elem === cur ) {
-                                                       match = true;
-                                                       break;
-                                               }
-
-                                       } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
-                                               match = elem;
-                                               break;
-                                       }
-                               }
-
-                               elem = elem[dir];
-                       }
-
-                       checkSet[i] = match;
-               }
-       }
-}
-
-var contains = document.compareDocumentPosition ?  function(a, b){
-       return a.compareDocumentPosition(b) & 16;
-} : function(a, b){
-       return a !== b && (a.contains ? a.contains(b) : true);
-};
-
-var isXML = function(elem){
-       return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
-               !!elem.ownerDocument && isXML( elem.ownerDocument );
-};
-
-var posProcess = function(selector, context){
-       var tmpSet = [], later = "", match,
-               root = context.nodeType ? [context] : context;
-
-       // Position selectors must be done after the filter
-       // And so must :not(positional) so we move all PSEUDOs to the end
-       while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
-               later += match[0];
-               selector = selector.replace( Expr.match.PSEUDO, "" );
-       }
-
-       selector = Expr.relative[selector] ? selector + "*" : selector;
-
-       for ( var i = 0, l = root.length; i < l; i++ ) {
-               Sizzle( selector, root[i], tmpSet );
-       }
-
-       return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-jQuery.find = Sizzle;
-jQuery.filter = Sizzle.filter;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-
-Sizzle.selectors.filters.hidden = function(elem){
-       return elem.offsetWidth === 0 || elem.offsetHeight === 0;
-};
-
-Sizzle.selectors.filters.visible = function(elem){
-       return elem.offsetWidth > 0 || elem.offsetHeight > 0;
-};
-
-Sizzle.selectors.filters.animated = function(elem){
-       return jQuery.grep(jQuery.timers, function(fn){
-               return elem === fn.elem;
-       }).length;
-};
-
-jQuery.multiFilter = function( expr, elems, not ) {
-       if ( not ) {
-               expr = ":not(" + expr + ")";
-       }
-
-       return Sizzle.matches(expr, elems);
-};
-
-jQuery.dir = function( elem, dir ){
-       var matched = [], cur = elem[dir];
-       while ( cur && cur != document ) {
-               if ( cur.nodeType == 1 )
-                       matched.push( cur );
-               cur = cur[dir];
-       }
-       return matched;
-};
-
-jQuery.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;
-};
-
-jQuery.sibling = function(n, elem){
-       var r = [];
-
-       for ( ; n; n = n.nextSibling ) {
-               if ( n.nodeType == 1 && n != elem )
-                       r.push( n );
-       }
-
-       return r;
-};
-
-return;
-
-window.Sizzle = Sizzle;
-
-})();
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code originated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
-
-       // Bind an event to an element
-       // Original by Dean Edwards
-       add: function(elem, types, handler, data) {
-               if ( elem.nodeType == 3 || elem.nodeType == 8 )
-                       return;
-
-               // For whatever reason, IE has trouble passing the window object
-               // around, causing it to be cloned in the process
-               if ( elem.setInterval && elem != window )
-                       elem = window;
-
-               // Make sure that the function being executed has a unique ID
-               if ( !handler.guid )
-                       handler.guid = this.guid++;
-
-               // if data is passed, bind to handler
-               if ( data !== undefined ) {
-                       // Create temporary function pointer to original handler
-                       var fn = handler;
-
-                       // Create unique handler function, wrapped around original handler
-                       handler = this.proxy( fn );
-
-                       // Store data in unique handler
-                       handler.data = data;
-               }
-
-               // Init the element's event structure
-               var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
-                       handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
-                               // Handle the second event of a trigger and when
-                               // an event is called after a page has unloaded
-                               return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
-                                       jQuery.event.handle.apply(arguments.callee.elem, arguments) :
-                                       undefined;
-                       });
-               // Add elem as a property of the handle function
-               // This is to prevent a memory leak with non-native
-               // event in IE.
-               handle.elem = elem;
-
-               // Handle multiple events separated by a space
-               // jQuery(...).bind("mouseover mouseout", fn);
-               jQuery.each(types.split(/\s+/), function(index, type) {
-                       // Namespaced event handlers
-                       var namespaces = type.split(".");
-                       type = namespaces.shift();
-                       handler.type = namespaces.slice().sort().join(".");
-
-                       // Get the current list of functions bound to this event
-                       var handlers = events[type];
-                       
-                       if ( jQuery.event.specialAll[type] )
-                               jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
-
-                       // Init the event handler queue
-                       if (!handlers) {
-                               handlers = events[type] = {};
-
-                               // Check for a special event handler
-                               // Only use addEventListener/attachEvent if the special
-                               // events handler returns false
-                               if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
-                                       // Bind the global event handler to the element
-                                       if (elem.addEventListener)
-                                               elem.addEventListener(type, handle, false);
-                                       else if (elem.attachEvent)
-                                               elem.attachEvent("on" + type, handle);
-                               }
-                       }
-
-                       // Add the function to the element's handler list
-                       handlers[handler.guid] = handler;
-
-                       // Keep track of which events have been used, for global triggering
-                       jQuery.event.global[type] = true;
-               });
-
-               // Nullify elem to prevent memory leaks in IE
-               elem = null;
-       },
-
-       guid: 1,
-       global: {},
-
-       // Detach an event or set of events from an element
-       remove: function(elem, types, handler) {
-               // don't do events on text and comment nodes
-               if ( elem.nodeType == 3 || elem.nodeType == 8 )
-                       return;
-
-               var events = jQuery.data(elem, "events"), ret, index;
-
-               if ( events ) {
-                       // Unbind all events for the element
-                       if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
-                               for ( var type in events )
-                                       this.remove( elem, type + (types || "") );
-                       else {
-                               // types is actually an event object here
-                               if ( types.type ) {
-                                       handler = types.handler;
-                                       types = types.type;
-                               }
-
-                               // Handle multiple events seperated by a space
-                               // jQuery(...).unbind("mouseover mouseout", fn);
-                               jQuery.each(types.split(/\s+/), function(index, type){
-                                       // Namespaced event handlers
-                                       var namespaces = type.split(".");
-                                       type = namespaces.shift();
-                                       var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
-
-                                       if ( events[type] ) {
-                                               // remove the given handler for the given type
-                                               if ( handler )
-                                                       delete events[type][handler.guid];
-
-                                               // remove all handlers for the given type
-                                               else
-                                                       for ( var handle in events[type] )
-                                                               // Handle the removal of namespaced events
-                                                               if ( namespace.test(events[type][handle].type) )
-                                                                       delete events[type][handle];
-                                                                       
-                                               if ( jQuery.event.specialAll[type] )
-                                                       jQuery.event.specialAll[type].teardown.call(elem, namespaces);
-
-                                               // remove generic event handler if no more handlers exist
-                                               for ( ret in events[type] ) break;
-                                               if ( !ret ) {
-                                                       if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === 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];
-                                               }
-                                       }
-                               });
-                       }
-
-                       // Remove the expando if it's no longer used
-                       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" );
-                       }
-               }
-       },
-
-       // bubbling is internal
-       trigger: function( event, data, elem, bubbling ) {
-               // Event object or event type
-               var type = event.type || event;
-
-               if( !bubbling ){
-                       event = typeof event === "object" ?
-                               // jQuery.Event object
-                               event[expando] ? event :
-                               // Object literal
-                               jQuery.extend( jQuery.Event(type), event ) :
-                               // Just the event type (string)
-                               jQuery.Event(type);
-
-                       if ( type.indexOf("!") >= 0 ) {
-                               event.type = type = type.slice(0, -1);
-                               event.exclusive = true;
-                       }
-
-                       // Handle a global trigger
-                       if ( !elem ) {
-                               // Don't bubble custom events when global (to avoid too much overhead)
-                               event.stopPropagation();
-                               // Only trigger if we've ever bound an event for it
-                               if ( this.global[type] )
-                                       jQuery.each( jQuery.cache, function(){
-                                               if ( this.events && this.events[type] )
-                                                       jQuery.event.trigger( event, data, this.handle.elem );
-                                       });
-                       }
-
-                       // Handle triggering a single element
-
-                       // don't do events on text and comment nodes
-                       if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
-                               return undefined;
-                       
-                       // Clean up in case it is reused
-                       event.result = undefined;
-                       event.target = elem;
-                       
-                       // Clone the incoming data, if any
-                       data = jQuery.makeArray(data);
-                       data.unshift( event );
-               }
-
-               event.currentTarget = elem;
-
-               // Trigger the event, it is assumed that "handle" is a function
-               var handle = jQuery.data(elem, "handle");
-               if ( handle )
-                       handle.apply( elem, data );
-
-               // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
-               if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
-                       event.result = false;
-
-               // Trigger the native events (except for clicks on links)
-               if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
-                       this.triggered = true;
-                       try {
-                               elem[ type ]();
-                       // prevent IE from throwing an error for some hidden elements
-                       } catch (e) {}
-               }
-
-               this.triggered = false;
-
-               if ( !event.isPropagationStopped() ) {
-                       var parent = elem.parentNode || elem.ownerDocument;
-                       if ( parent )
-                               jQuery.event.trigger(event, data, parent, true);
-               }
-       },
-
-       handle: function(event) {
-               // returned undefined or false
-               var all, handlers;
-
-               event = arguments[0] = jQuery.event.fix( event || window.event );
-               event.currentTarget = this;
-               
-               // Namespaced event handlers
-               var namespaces = event.type.split(".");
-               event.type = namespaces.shift();
-
-               // Cache this now, all = true means, any handler
-               all = !namespaces.length && !event.exclusive;
-               
-               var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
-
-               handlers = ( jQuery.data(this, "events") || {} )[event.type];
-
-               for ( var j in handlers ) {
-                       var handler = handlers[j];
-
-                       // Filter the functions by class
-                       if ( all || namespace.test(handler.type) ) {
-                               // Pass in a reference to the handler function itself
-                               // So that we can later remove it
-                               event.handler = handler;
-                               event.data = handler.data;
-
-                               var ret = handler.apply(this, arguments);
-
-                               if( ret !== undefined ){
-                                       event.result = ret;
-                                       if ( ret === false ) {
-                                               event.preventDefault();
-                                               event.stopPropagation();
-                                       }
-                               }
-
-                               if( event.isImmediatePropagationStopped() )
-                                       break;
-
-                       }
-               }
-       },
-
-       props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-
-       fix: function(event) {
-               if ( event[expando] )
-                       return event;
-
-               // store a copy of the original event object
-               // and "clone" to set read-only properties
-               var originalEvent = event;
-               event = jQuery.Event( originalEvent );
-
-               for ( var i = this.props.length, prop; i; ){
-                       prop = this.props[ --i ];
-                       event[ prop ] = originalEvent[ prop ];
-               }
-
-               // Fix target property, if necessary
-               if ( !event.target )
-                       event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
-
-               // check if target is a textnode (safari)
-               if ( event.target.nodeType == 3 )
-                       event.target = event.target.parentNode;
-
-               // Add relatedTarget, if necessary
-               if ( !event.relatedTarget && event.fromElement )
-                       event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
-
-               // Calculate pageX/Y if missing and clientX/Y available
-               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);
-               }
-
-               // Add which for key events
-               if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
-                       event.which = event.charCode || event.keyCode;
-
-               // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
-               if ( !event.metaKey && event.ctrlKey )
-                       event.metaKey = event.ctrlKey;
-
-               // Add which for click: 1 == left; 2 == middle; 3 == right
-               // Note: button is not normalized, so don't use it
-               if ( !event.which && event.button )
-                       event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
-
-               return event;
-       },
-
-       proxy: function( fn, proxy ){
-               proxy = proxy || function(){ return fn.apply(this, arguments); };
-               // Set the guid of unique handler to the same of original handler, so it can be removed
-               proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
-               // So proxy can be declared as an argument
-               return proxy;
-       },
-
-       special: {
-               ready: {
-                       // Make sure the ready event is setup
-                       setup: bindReady,
-                       teardown: function() {}
-               }
-       },
-       
-       specialAll: {
-               live: {
-                       setup: function( selector, namespaces ){
-                               jQuery.event.add( this, namespaces[0], liveHandler );
-                       },
-                       teardown:  function( namespaces ){
-                               if ( namespaces.length ) {
-                                       var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
-                                       
-                                       jQuery.each( (jQuery.data(this, "events").live || {}), function(){
-                                               if ( name.test(this.type) )
-                                                       remove++;
-                                       });
-                                       
-                                       if ( remove < 1 )
-                                               jQuery.event.remove( this, namespaces[0], liveHandler );
-                               }
-                       }
-               }
-       }
-};
-
-jQuery.Event = function( src ){
-       // Allow instantiation without the 'new' keyword
-       if( !this.preventDefault )
-               return new jQuery.Event(src);
-       
-       // Event object
-       if( src && src.type ){
-               this.originalEvent = src;
-               this.type = src.type;
-       // Event type
-       }else
-               this.type = src;
-
-       // timeStamp is buggy for some events on Firefox(#3843)
-       // So we won't rely on the native value
-       this.timeStamp = now();
-       
-       // Mark it as fixed
-       this[expando] = true;
-};
-
-function returnFalse(){
-       return false;
-}
-function returnTrue(){
-       return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-       preventDefault: function() {
-               this.isDefaultPrevented = returnTrue;
-
-               var e = this.originalEvent;
-               if( !e )
-                       return;
-               // if preventDefault exists run it on the original event
-               if (e.preventDefault)
-                       e.preventDefault();
-               // otherwise set the returnValue property of the original event to false (IE)
-               e.returnValue = false;
-       },
-       stopPropagation: function() {
-               this.isPropagationStopped = returnTrue;
-
-               var e = this.originalEvent;
-               if( !e )
-                       return;
-               // if stopPropagation exists run it on the original event
-               if (e.stopPropagation)
-                       e.stopPropagation();
-               // otherwise set the cancelBubble property of the original event to true (IE)
-               e.cancelBubble = true;
-       },
-       stopImmediatePropagation:function(){
-               this.isImmediatePropagationStopped = returnTrue;
-               this.stopPropagation();
-       },
-       isDefaultPrevented: returnFalse,
-       isPropagationStopped: returnFalse,
-       isImmediatePropagationStopped: returnFalse
-};
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function(event) {
-       // Check if mouse(over|out) are still within the same parent element
-       var parent = event.relatedTarget;
-       // Traverse up the tree
-       while ( parent && parent != this )
-               try { parent = parent.parentNode; }
-               catch(e) { parent = this; }
-       
-       if( parent != this ){
-               // set the correct event type
-               event.type = event.data;
-               // handle event if we actually just moused on to a non sub-element
-               jQuery.event.handle.apply( this, arguments );
-       }
-};
-       
-jQuery.each({ 
-       mouseover: 'mouseenter', 
-       mouseout: 'mouseleave'
-}, function( orig, fix ){
-       jQuery.event.special[ fix ] = {
-               setup: function(){
-                       jQuery.event.add( this, orig, withinElement, fix );
-               },
-               teardown: function(){
-                       jQuery.event.remove( this, orig, withinElement );
-               }
-       };                         
-});
-
-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 ) {
-               var one = jQuery.event.proxy( fn || data, function(event) {
-                       jQuery(this).unbind(event, one);
-                       return (fn || data).apply( this, arguments );
-               });
-               return this.each(function(){
-                       jQuery.event.add( this, type, one, fn && data);
-               });
-       },
-
-       unbind: function( type, fn ) {
-               return this.each(function(){
-                       jQuery.event.remove( this, type, fn );
-               });
-       },
-
-       trigger: function( type, data ) {
-               return this.each(function(){
-                       jQuery.event.trigger( type, data, this );
-               });
-       },
-
-       triggerHandler: function( type, data ) {
-               if( this[0] ){
-                       var event = jQuery.Event(type);
-                       event.preventDefault();
-                       event.stopPropagation();
-                       jQuery.event.trigger( event, data, this[0] );
-                       return event.result;
-               }               
-       },
-
-       toggle: function( fn ) {
-               // Save reference to arguments for access in closure
-               var args = arguments, i = 1;
-
-               // link all the functions, so any of them can unbind this click handler
-               while( i < args.length )
-                       jQuery.event.proxy( fn, args[i++] );
-
-               return this.click( jQuery.event.proxy( fn, function(event) {
-                       // Figure out which function to execute
-                       this.lastToggle = ( this.lastToggle || 0 ) % i;
-
-                       // Make sure that clicks stop
-                       event.preventDefault();
-
-                       // and execute the function
-                       return args[ this.lastToggle++ ].apply( this, arguments ) || false;
-               }));
-       },
-
-       hover: function(fnOver, fnOut) {
-               return this.mouseenter(fnOver).mouseleave(fnOut);
-       },
-
-       ready: function(fn) {
-               // Attach the listeners
-               bindReady();
-
-               // If the DOM is already ready
-               if ( jQuery.isReady )
-                       // Execute the function immediately
-                       fn.call( document, jQuery );
-
-               // Otherwise, remember the function for later
-               else
-                       // Add the function to the wait list
-                       jQuery.readyList.push( fn );
-
-               return this;
-       },
-       
-       live: function( type, fn ){
-               var proxy = jQuery.event.proxy( fn );
-               proxy.guid += this.selector + type;
-
-               jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
-
-               return this;
-       },
-       
-       die: function( type, fn ){
-               jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
-               return this;
-       }
-});
-
-function liveHandler( event ){
-       var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
-               stop = true,
-               elems = [];
-
-       jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
-               if ( check.test(fn.type) ) {
-                       var elem = jQuery(event.target).closest(fn.data)[0];
-                       if ( elem )
-                               elems.push({ elem: elem, fn: fn });
-               }
-       });
-
-       elems.sort(function(a,b) {
-               return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
-       });
-       
-       jQuery.each(elems, function(){
-               if ( this.fn.call(this.elem, event, this.fn.data) === false )
-                       return (stop = false);
-       });
-
-       return stop;
-}
-
-function liveConvert(type, selector){
-       return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
-}
-
-jQuery.extend({
-       isReady: false,
-       readyList: [],
-       // Handle when the DOM is ready
-       ready: function() {
-               // Make sure that the DOM is not already loaded
-               if ( !jQuery.isReady ) {
-                       // Remember that the DOM is ready
-                       jQuery.isReady = true;
-
-                       // If there are functions bound, to execute
-                       if ( jQuery.readyList ) {
-                               // Execute all of them
-                               jQuery.each( jQuery.readyList, function(){
-                                       this.call( document, jQuery );
-                               });
-
-                               // Reset the list of functions
-                               jQuery.readyList = null;
-                       }
-
-                       // Trigger any bound ready events
-                       jQuery(document).triggerHandler("ready");
-               }
-       }
-});
-
-var readyBound = false;
-
-function bindReady(){
-       if ( readyBound ) return;
-       readyBound = true;
-
-       // Mozilla, Opera and webkit nightlies currently support this event
-       if ( document.addEventListener ) {
-               // Use the handy event callback
-               document.addEventListener( "DOMContentLoaded", function(){
-                       document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
-                       jQuery.ready();
-               }, false );
-
-       // If IE event model is used
-       } else if ( document.attachEvent ) {
-               // ensure firing before onload,
-               // maybe late but safe also for iframes
-               document.attachEvent("onreadystatechange", function(){
-                       if ( document.readyState === "complete" ) {
-                               document.detachEvent( "onreadystatechange", arguments.callee );
-                               jQuery.ready();
-                       }
-               });
-
-               // If IE and not an iframe
-               // continually check to see if the document is ready
-               if ( document.documentElement.doScroll && window == window.top ) (function(){
-                       if ( jQuery.isReady ) return;
-
-                       try {
-                               // If IE is used, use the trick by Diego Perini
-                               // http://javascript.nwbox.com/IEContentLoaded/
-                               document.documentElement.doScroll("left");
-                       } catch( error ) {
-                               setTimeout( arguments.callee, 0 );
-                               return;
-                       }
-
-                       // and execute any waiting functions
-                       jQuery.ready();
-               })();
-       }
-
-       // A fallback to window.onload, that will always work
-       jQuery.event.add( window, "load", jQuery.ready );
-}
-
-jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
-       "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
-       "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
-
-       // Handle event binding
-       jQuery.fn[name] = function(fn){
-               return fn ? this.bind(name, fn) : this.trigger(name);
-       };
-});
-
-// Prevent memory leaks in IE
-// And prevent errors on refresh with events like mouseover in other browsers
-// Window isn't included so as not to unbind existing unload events
-jQuery( window ).bind( 'unload', function(){ 
-       for ( var id in jQuery.cache )
-               // Skip the window
-               if ( id != 1 && jQuery.cache[ id ].handle )
-                       jQuery.event.remove( jQuery.cache[ id ].handle.elem );
-}); 
-(function(){
-
-       jQuery.support = {};
-
-       var root = document.documentElement,
-               script = document.createElement("script"),
-               div = document.createElement("div"),
-               id = "script" + (new Date).getTime();
-
-       div.style.display = "none";
-       div.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
-
-       var all = div.getElementsByTagName("*"),
-               a = div.getElementsByTagName("a")[0];
-
-       // Can't get basic test support
-       if ( !all || !all.length || !a ) {
-               return;
-       }
-
-       jQuery.support = {
-               // IE strips leading whitespace when .innerHTML is used
-               leadingWhitespace: div.firstChild.nodeType == 3,
-               
-               // Make sure that tbody elements aren't automatically inserted
-               // IE will insert them into empty tables
-               tbody: !div.getElementsByTagName("tbody").length,
-               
-               // Make sure that you can get all elements in an <object> element
-               // IE 7 always returns no results
-               objectAll: !!div.getElementsByTagName("object")[0]
-                       .getElementsByTagName("*").length,
-               
-               // Make sure that link elements get serialized correctly by innerHTML
-               // This requires a wrapper element in IE
-               htmlSerialize: !!div.getElementsByTagName("link").length,
-               
-               // Get the style information from getAttribute
-               // (IE uses .cssText insted)
-               style: /red/.test( a.getAttribute("style") ),
-               
-               // Make sure that URLs aren't manipulated
-               // (IE normalizes it by default)
-               hrefNormalized: a.getAttribute("href") === "/a",
-               
-               // Make sure that element opacity exists
-               // (IE uses filter instead)
-               opacity: a.style.opacity === "0.5",
-               
-               // Verify style float existence
-               // (IE uses styleFloat instead of cssFloat)
-               cssFloat: !!a.style.cssFloat,
-
-               // Will be defined later
-               scriptEval: false,
-               noCloneEvent: true,
-               boxModel: null
-       };
-       
-       script.type = "text/javascript";
-       try {
-               script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
-       } catch(e){}
-
-       root.insertBefore( script, root.firstChild );
-       
-       // Make sure that the execution of code works by injecting a script
-       // tag with appendChild/createTextNode
-       // (IE doesn't support this, fails, and uses .text instead)
-       if ( window[ id ] ) {
-               jQuery.support.scriptEval = true;
-               delete window[ id ];
-       }
-
-       root.removeChild( script );
-
-       if ( div.attachEvent && div.fireEvent ) {
-               div.attachEvent("onclick", function(){
-                       // Cloning a node shouldn't copy over any
-                       // bound event handlers (IE does this)
-                       jQuery.support.noCloneEvent = false;
-                       div.detachEvent("onclick", arguments.callee);
-               });
-               div.cloneNode(true).fireEvent("onclick");
-       }
-
-       // Figure out if the W3C box model works as expected
-       // document.body must exist before we can do this
-       jQuery(function(){
-               var div = document.createElement("div");
-               div.style.width = div.style.paddingLeft = "1px";
-
-               document.body.appendChild( div );
-               jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
-               document.body.removeChild( div ).style.display = 'none';
-       });
-})();
-
-var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
-
-jQuery.props = {
-       "for": "htmlFor",
-       "class": "className",
-       "float": styleFloat,
-       cssFloat: styleFloat,
-       styleFloat: styleFloat,
-       readonly: "readOnly",
-       maxlength: "maxLength",
-       cellspacing: "cellSpacing",
-       rowspan: "rowSpan",
-       tabindex: "tabIndex"
-};
-jQuery.fn.extend({
-       // Keep a copy of the old load
-       _load: jQuery.fn.load,
-
-       load: function( url, params, callback ) {
-               if ( typeof url !== "string" )
-                       return this._load( url );
-
-               var off = url.indexOf(" ");
-               if ( off >= 0 ) {
-                       var selector = url.slice(off, url.length);
-                       url = url.slice(0, off);
-               }
-
-               // Default to a GET request
-               var type = "GET";
-
-               // If the second parameter was provided
-               if ( params )
-                       // If it's a function
-                       if ( jQuery.isFunction( params ) ) {
-                               // We assume that it's the callback
-                               callback = params;
-                               params = null;
-
-                       // Otherwise, build a param string
-                       } else if( typeof params === "object" ) {
-                               params = jQuery.param( params );
-                               type = "POST";
-                       }
-
-               var self = this;
-
-               // Request the remote document
-               jQuery.ajax({
-                       url: url,
-                       type: type,
-                       dataType: "html",
-                       data: params,
-                       complete: function(res, status){
-                               // If successful, inject the HTML into all the matched elements
-                               if ( status == "success" || status == "notmodified" )
-                                       // See if a selector was specified
-                                       self.html( selector ?
-                                               // Create a dummy div to hold the results
-                                               jQuery("<div/>")
-                                                       // inject the contents of the document in, removing the scripts
-                                                       // to avoid any 'Permission Denied' errors in IE
-                                                       .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
-
-                                                       // Locate the specified elements
-                                                       .find(selector) :
-
-                                               // If not, just inject the full result
-                                               res.responseText );
-
-                               if( callback )
-                                       self.each( callback, [res.responseText, status, res] );
-                       }
-               });
-               return this;
-       },
-
-       serialize: function() {
-               return jQuery.param(this.serializeArray());
-       },
-       serializeArray: function() {
-               return this.map(function(){
-                       return this.elements ? jQuery.makeArray(this.elements) : this;
-               })
-               .filter(function(){
-                       return this.name && !this.disabled &&
-                               (this.checked || /select|textarea/i.test(this.nodeName) ||
-                                       /text|hidden|password|search/i.test(this.type));
-               })
-               .map(function(i, elem){
-                       var val = jQuery(this).val();
-                       return val == null ? null :
-                               jQuery.isArray(val) ?
-                                       jQuery.map( val, function(val, i){
-                                               return {name: elem.name, value: val};
-                                       }) :
-                                       {name: elem.name, value: val};
-               }).get();
-       }
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
-       jQuery.fn[o] = function(f){
-               return this.bind(o, f);
-       };
-});
-
-var jsc = now();
-
-jQuery.extend({
-  
-       get: function( url, data, callback, type ) {
-               // shift arguments if data argument was ommited
-               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: {
-               url: location.href,
-               global: true,
-               type: "GET",
-               contentType: "application/x-www-form-urlencoded",
-               processData: true,
-               async: true,
-               /*
-               timeout: 0,
-               data: null,
-               username: null,
-               password: null,
-               */
-               // Create the request object; Microsoft failed to properly
-               // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
-               // This function can be overriden by calling jQuery.ajaxSetup
-               xhr:function(){
-                       return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
-               },
-               accepts: {
-                       xml: "application/xml, text/xml",
-                       html: "text/html",
-                       script: "text/javascript, application/javascript",
-                       json: "application/json, text/javascript",
-                       text: "text/plain",
-                       _default: "*/*"
-               }
-       },
-
-       // Last-Modified header cache for next request
-       lastModified: {},
-
-       ajax: function( s ) {
-               // Extend the settings, but re-extend 's' so that it can be
-               // checked again later (in the test suite, specifically)
-               s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
-
-               var jsonp, jsre = /=\?(&|$)/g, status, data,
-                       type = s.type.toUpperCase();
-
-               // convert data if not already a string
-               if ( s.data && s.processData && typeof s.data !== "string" )
-                       s.data = jQuery.param(s.data);
-
-               // Handle JSONP Parameter Callbacks
-               if ( s.dataType == "jsonp" ) {
-                       if ( type == "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";
-               }
-
-               // Build temporary JSONP function
-               if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
-                       jsonp = "jsonp" + jsc++;
-
-                       // Replace the =? sequence both in the query string and the data
-                       if ( s.data )
-                               s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
-                       s.url = s.url.replace(jsre, "=" + jsonp + "$1");
-
-                       // We need to make sure
-                       // that a JSONP style response is executed properly
-                       s.dataType = "script";
-
-                       // Handle JSONP-style loading
-                       window[ jsonp ] = function(tmp){
-                               data = tmp;
-                               success();
-                               complete();
-                               // Garbage collect
-                               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 && type == "GET" ) {
-                       var ts = now();
-                       // try replacing _= if it is there
-                       var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
-                       // if nothing was replaced, add timestamp to the end
-                       s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
-               }
-
-               // If data is available, append data to url for get requests
-               if ( s.data && type == "GET" ) {
-                       s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
-
-                       // IE likes to send both get and post data, prevent this
-                       s.data = null;
-               }
-
-               // Watch for a new set of requests
-               if ( s.global && ! jQuery.active++ )
-                       jQuery.event.trigger( "ajaxStart" );
-
-               // Matches an absolute URL, and saves the domain
-               var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
-
-               // If we're requesting a remote document
-               // and trying to load JSON or Script with a GET
-               if ( s.dataType == "script" && type == "GET" && parts
-                       && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
-
-                       var head = document.getElementsByTagName("head")[0];
-                       var script = document.createElement("script");
-                       script.src = s.url;
-                       if (s.scriptCharset)
-                               script.charset = s.scriptCharset;
-
-                       // Handle Script loading
-                       if ( !jsonp ) {
-                               var done = false;
-
-                               // Attach handlers for all browsers
-                               script.onload = script.onreadystatechange = function(){
-                                       if ( !done && (!this.readyState ||
-                                                       this.readyState == "loaded" || this.readyState == "complete") ) {
-                                               done = true;
-                                               success();
-                                               complete();
-
-                                               // Handle memory leak in IE
-                                               script.onload = script.onreadystatechange = null;
-                                               head.removeChild( script );
-                                       }
-                               };
-                       }
-
-                       head.appendChild(script);
-
-                       // We handle everything using the script element injection
-                       return undefined;
-               }
-
-               var requestDone = false;
-
-               // Create the request object
-               var xhr = s.xhr();
-
-               // Open the socket
-               // Passing null username, generates a login popup on Opera (#2865)
-               if( s.username )
-                       xhr.open(type, s.url, s.async, s.username, s.password);
-               else
-                       xhr.open(type, s.url, s.async);
-
-               // Need an extra try/catch for cross domain requests in Firefox 3
-               try {
-                       // Set the correct header, if data is being sent
-                       if ( s.data )
-                               xhr.setRequestHeader("Content-Type", s.contentType);
-
-                       // Set the If-Modified-Since header, if ifModified mode.
-                       if ( s.ifModified )
-                               xhr.setRequestHeader("If-Modified-Since",
-                                       jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
-
-                       // Set header so the called script knows that it's an XMLHttpRequest
-                       xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
-
-                       // Set the Accepts header for the server, depending on the dataType
-                       xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
-                               s.accepts[ s.dataType ] + ", */*" :
-                               s.accepts._default );
-               } catch(e){}
-
-               // Allow custom headers/mimetypes and early abort
-               if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
-                       // Handle the global AJAX counter
-                       if ( s.global && ! --jQuery.active )
-                               jQuery.event.trigger( "ajaxStop" );
-                       // close opended socket
-                       xhr.abort();
-                       return false;
-               }
-
-               if ( s.global )
-                       jQuery.event.trigger("ajaxSend", [xhr, s]);
-
-               // Wait for a response to come back
-               var onreadystatechange = function(isTimeout){
-                       // The request was aborted, clear the interval and decrement jQuery.active
-                       if (xhr.readyState == 0) {
-                               if (ival) {
-                                       // clear poll interval
-                                       clearInterval(ival);
-                                       ival = null;
-                                       // Handle the global AJAX counter
-                                       if ( s.global && ! --jQuery.active )
-                                               jQuery.event.trigger( "ajaxStop" );
-                               }
-                       // The transfer is complete and the data is available, or the request timed out
-                       } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
-                               requestDone = true;
-
-                               // clear poll interval
-                               if (ival) {
-                                       clearInterval(ival);
-                                       ival = null;
-                               }
-
-                               status = isTimeout == "timeout" ? "timeout" :
-                                       !jQuery.httpSuccess( xhr ) ? "error" :
-                                       s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
-                                       "success";
-
-                               if ( status == "success" ) {
-                                       // Watch for, and catch, XML document parse errors
-                                       try {
-                                               // process the data (runs the xml through httpData regardless of callback)
-                                               data = jQuery.httpData( xhr, s.dataType, s );
-                                       } catch(e) {
-                                               status = "parsererror";
-                                       }
-                               }
-
-                               // Make sure that the request was successful or notmodified
-                               if ( status == "success" ) {
-                                       // Cache Last-Modified header, if ifModified mode.
-                                       var modRes;
-                                       try {
-                                               modRes = xhr.getResponseHeader("Last-Modified");
-                                       } catch(e) {} // swallow exception thrown by FF if header is not available
-
-                                       if ( s.ifModified && modRes )
-                                               jQuery.lastModified[s.url] = modRes;
-
-                                       // JSONP handles its own success callback
-                                       if ( !jsonp )
-                                               success();
-                               } else
-                                       jQuery.handleError(s, xhr, status);
-
-                               // Fire the complete handlers
-                               complete();
-
-                               if ( isTimeout )
-                                       xhr.abort();
-
-                               // Stop memory leaks
-                               if ( s.async )
-                                       xhr = null;
-                       }
-               };
-
-               if ( s.async ) {
-                       // don't attach the handler to the request, just poll it instead
-                       var ival = setInterval(onreadystatechange, 13);
-
-                       // Timeout checker
-                       if ( s.timeout > 0 )
-                               setTimeout(function(){
-                                       // Check to see if the request is still happening
-                                       if ( xhr && !requestDone )
-                                               onreadystatechange( "timeout" );
-                               }, s.timeout);
-               }
-
-               // Send the data
-               try {
-                       xhr.send(s.data);
-               } catch(e) {
-                       jQuery.handleError(s, xhr, null, e);
-               }
-
-               // firefox 1.5 doesn't fire statechange for sync requests
-               if ( !s.async )
-                       onreadystatechange();
-
-               function success(){
-                       // If a local callback was specified, fire it and pass it the data
-                       if ( s.success )
-                               s.success( data, status );
-
-                       // Fire the global callback
-                       if ( s.global )
-                               jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
-               }
-
-               function complete(){
-                       // Process result
-                       if ( s.complete )
-                               s.complete(xhr, status);
-
-                       // The request was completed
-                       if ( s.global )
-                               jQuery.event.trigger( "ajaxComplete", [xhr, s] );
-
-                       // Handle the global AJAX counter
-                       if ( s.global && ! --jQuery.active )
-                               jQuery.event.trigger( "ajaxStop" );
-               }
-
-               // return XMLHttpRequest to allow aborting the request etc.
-               return xhr;
-       },
-
-       handleError: function( s, xhr, status, e ) {
-               // If a local callback was specified, fire it
-               if ( s.error ) s.error( xhr, status, e );
-
-               // Fire the global callback
-               if ( s.global )
-                       jQuery.event.trigger( "ajaxError", [xhr, s, e] );
-       },
-
-       // Counter for holding the number of active queries
-       active: 0,
-
-       // Determines if an XMLHttpRequest was successful or not
-       httpSuccess: function( xhr ) {
-               try {
-                       // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
-                       return !xhr.status && location.protocol == "file:" ||
-                               ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
-               } catch(e){}
-               return false;
-       },
-
-       // Determines if an XMLHttpRequest returns NotModified
-       httpNotModified: function( xhr, url ) {
-               try {
-                       var xhrRes = xhr.getResponseHeader("Last-Modified");
-
-                       // Firefox always returns 200. check Last-Modified date
-                       return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
-               } catch(e){}
-               return false;
-       },
-
-       httpData: function( xhr, type, s ) {
-               var ct = xhr.getResponseHeader("content-type"),
-                       xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
-                       data = xml ? xhr.responseXML : xhr.responseText;
-
-               if ( xml && data.documentElement.tagName == "parsererror" )
-                       throw "parsererror";
-                       
-               // Allow a pre-filtering function to sanitize the response
-               // s != null is checked to keep backwards compatibility
-               if( s && s.dataFilter )
-                       data = s.dataFilter( data, type );
-
-               // The filter can actually parse the response
-               if( typeof data === "string" ){
-
-                       // If the type is "script", eval it in global context
-                       if ( type == "script" )
-                               jQuery.globalEval( data );
-
-                       // Get the JavaScript object, if JSON is used.
-                       if ( type == "json" )
-                               data = window["eval"]("(" + data + ")");
-               }
-               
-               return data;
-       },
-
-       // Serialize an array of form elements or a set of
-       // key/values into a query string
-       param: function( a ) {
-               var s = [ ];
-
-               function add( key, value ){
-                       s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
-               };
-
-               // If an array was passed in, assume that it is an array
-               // of form elements
-               if ( jQuery.isArray(a) || a.jquery )
-                       // Serialize the form elements
-                       jQuery.each( a, function(){
-                               add( this.name, this.value );
-                       });
-
-               // Otherwise, assume that it's an object of key/value pairs
-               else
-                       // Serialize the key/values
-                       for ( var j in a )
-                               // If the value is an array then the key names need to be repeated
-                               if ( jQuery.isArray(a[j]) )
-                                       jQuery.each( a[j], function(){
-                                               add( j, this );
-                                       });
-                               else
-                                       add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
-
-               // Return the resulting serialization
-               return s.join("&").replace(/%20/g, "+");
-       }
-
-});
-var elemdisplay = {},
-       timerId,
-       fxAttrs = [
-               // height animations
-               [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
-               // width animations
-               [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
-               // opacity animations
-               [ "opacity" ]
-       ];
-
-function genFx( type, num ){
-       var obj = {};
-       jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
-               obj[ this ] = type;
-       });
-       return obj;
-}
-
-jQuery.fn.extend({
-       show: function(speed,callback){
-               if ( speed ) {
-                       return this.animate( genFx("show", 3), speed, callback);
-               } else {
-                       for ( var i = 0, l = this.length; i < l; i++ ){
-                               var old = jQuery.data(this[i], "olddisplay");
-                               
-                               this[i].style.display = old || "";
-                               
-                               if ( jQuery.css(this[i], "display") === "none" ) {
-                                       var tagName = this[i].tagName, display;
-                                       
-                                       if ( elemdisplay[ tagName ] ) {
-                                               display = elemdisplay[ tagName ];
-                                       } else {
-                                               var elem = jQuery("<" + tagName + " />").appendTo("body");
-                                               
-                                               display = elem.css("display");
-                                               if ( display === "none" )
-                                                       display = "block";
-                                               
-                                               elem.remove();
-                                               
-                                               elemdisplay[ tagName ] = display;
-                                       }
-                                       
-                                       jQuery.data(this[i], "olddisplay", display);
-                               }
-                       }
-
-                       // Set the display of the elements in a second loop
-                       // to avoid the constant reflow
-                       for ( var i = 0, l = this.length; i < l; i++ ){
-                               this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
-                       }
-                       
-                       return this;
-               }
-       },
-
-       hide: function(speed,callback){
-               if ( speed ) {
-                       return this.animate( genFx("hide", 3), speed, callback);
-               } else {
-                       for ( var i = 0, l = this.length; i < l; i++ ){
-                               var old = jQuery.data(this[i], "olddisplay");
-                               if ( !old && old !== "none" )
-                                       jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
-                       }
-
-                       // Set the display of the elements in a second loop
-                       // to avoid the constant reflow
-                       for ( var i = 0, l = this.length; i < l; i++ ){
-                               this[i].style.display = "none";
-                       }
-
-                       return this;
-               }
-       },
-
-       // Save the old toggle function
-       _toggle: jQuery.fn.toggle,
-
-       toggle: function( fn, fn2 ){
-               var bool = typeof fn === "boolean";
-
-               return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
-                       this._toggle.apply( this, arguments ) :
-                       fn == null || bool ?
-                               this.each(function(){
-                                       var state = bool ? fn : jQuery(this).is(":hidden");
-                                       jQuery(this)[ state ? "show" : "hide" ]();
-                               }) :
-                               this.animate(genFx("toggle", 3), fn, fn2);
-       },
-
-       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(){
-               
-                       var opt = jQuery.extend({}, optall), p,
-                               hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
-                               self = this;
-       
-                       for ( p in prop ) {
-                               if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
-                                       return opt.complete.call(this);
-
-                               if ( ( p == "height" || p == "width" ) && this.style ) {
-                                       // Store display property
-                                       opt.display = jQuery.css(this, "display");
-
-                                       // Make sure that nothing sneaks out
-                                       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";
-
-                                               // We need to compute starting value
-                                               if ( unit != "px" ) {
-                                                       self.style[ name ] = (end || 1) + unit;
-                                                       start = ((end || 1) / e.cur(true)) * start;
-                                                       self.style[ name ] = start + unit;
-                                               }
-
-                                               // If a +=/-= token was provided, we're doing a relative animation
-                                               if ( parts[1] )
-                                                       end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
-
-                                               e.custom( start, end, unit );
-                                       } else
-                                               e.custom( start, val, "" );
-                               }
-                       });
-
-                       // For JS strict compliance
-                       return true;
-               });
-       },
-
-       stop: function(clearQueue, gotoEnd){
-               var timers = jQuery.timers;
-
-               if (clearQueue)
-                       this.queue([]);
-
-               this.each(function(){
-                       // go in reverse order so anything added to the queue during the loop is ignored
-                       for ( var i = timers.length - 1; i >= 0; i-- )
-                               if ( timers[i].elem == this ) {
-                                       if (gotoEnd)
-                                               // force the next step to be the last
-                                               timers[i](true);
-                                       timers.splice(i, 1);
-                               }
-               });
-
-               // start the next in the queue if the last step wasn't forced
-               if (!gotoEnd)
-                       this.dequeue();
-
-               return this;
-       }
-
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
-       slideDown: genFx("show", 1),
-       slideUp: genFx("hide", 1),
-       slideToggle: genFx("toggle", 1),
-       fadeIn: { opacity: "show" },
-       fadeOut: { opacity: "hide" }
-}, function( name, props ){
-       jQuery.fn[ name ] = function( speed, callback ){
-               return this.animate( props, speed, callback );
-       };
-});
-
-jQuery.extend({
-
-       speed: function(speed, easing, fn) {
-               var opt = typeof speed === "object" ? speed : {
-                       complete: fn || !fn && easing ||
-                               jQuery.isFunction( speed ) && speed,
-                       duration: speed,
-                       easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
-               };
-
-               opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-                       jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
-
-               // Queueing
-               opt.old = opt.complete;
-               opt.complete = function(){
-                       if ( opt.queue !== false )
-                               jQuery(this).dequeue();
-                       if ( jQuery.isFunction( opt.old ) )
-                               opt.old.call( 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: [],
-
-       fx: function( elem, options, prop ){
-               this.options = options;
-               this.elem = elem;
-               this.prop = prop;
-
-               if ( !options.orig )
-                       options.orig = {};
-       }
-
-});
-
-jQuery.fx.prototype = {
-
-       // Simple function for setting a style value
-       update: function(){
-               if ( this.options.step )
-                       this.options.step.call( this.elem, this.now, this );
-
-               (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
-
-               // Set display property to block for height/width animations
-               if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
-                       this.elem.style.display = "block";
-       },
-
-       // Get the current size
-       cur: function(force){
-               if ( this.elem[this.prop] != null && (!this.elem.style || 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;
-       },
-
-       // Start an animation from one number to another
-       custom: function(from, to, unit){
-               this.startTime = now();
-               this.start = from;
-               this.end = to;
-               this.unit = unit || this.unit || "px";
-               this.now = this.start;
-               this.pos = this.state = 0;
-
-               var self = this;
-               function t(gotoEnd){
-                       return self.step(gotoEnd);
-               }
-
-               t.elem = this.elem;
-
-               if ( t() && jQuery.timers.push(t) && !timerId ) {
-                       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( timerId );
-                                       timerId = undefined;
-                               }
-                       }, 13);
-               }
-       },
-
-       // Simple 'show' function
-       show: function(){
-               // Remember where we started, so that we can go back to it later
-               this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
-               this.options.show = true;
-
-               // Begin the animation
-               // Make sure that we start at a small width/height to avoid any
-               // flash of content
-               this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
-
-               // Start by showing the element
-               jQuery(this.elem).show();
-       },
-
-       // Simple 'hide' function
-       hide: function(){
-               // Remember where we started, so that we can go back to it later
-               this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
-               this.options.hide = true;
-
-               // Begin the animation
-               this.custom(this.cur(), 0);
-       },
-
-       // Each step of an animation
-       step: function(gotoEnd){
-               var t = now();
-
-               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 ) {
-                                       // Reset the overflow
-                                       this.elem.style.overflow = this.options.overflow;
-
-                                       // Reset the display
-                                       this.elem.style.display = this.options.display;
-                                       if ( jQuery.css(this.elem, "display") == "none" )
-                                               this.elem.style.display = "block";
-                               }
-
-                               // Hide the element if the "hide" operation was done
-                               if ( this.options.hide )
-                                       jQuery(this.elem).hide();
-
-                               // Reset the properties, if the item has been hidden or shown
-                               if ( this.options.hide || this.options.show )
-                                       for ( var p in this.options.curAnim )
-                                               jQuery.attr(this.elem.style, p, this.options.orig[p]);
-                                       
-                               // Execute the complete function
-                               this.options.complete.call( this.elem );
-                       }
-
-                       return false;
-               } else {
-                       var n = t - this.startTime;
-                       this.state = n / this.options.duration;
-
-                       // Perform the easing function, defaults to swing
-                       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);
-
-                       // Perform the next step of the animation
-                       this.update();
-               }
-
-               return true;
-       }
-
-};
-
-jQuery.extend( jQuery.fx, {
-       speeds:{
-               slow: 600,
-               fast: 200,
-               // Default speed
-               _default: 400
-       },
-       step: {
-
-               opacity: function(fx){
-                       jQuery.attr(fx.elem.style, "opacity", fx.now);
-               },
-
-               _default: function(fx){
-                       if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
-                               fx.elem.style[ fx.prop ] = fx.now + fx.unit;
-                       else
-                               fx.elem[ fx.prop ] = fx.now;
-               }
-       }
-});
-if ( document.documentElement["getBoundingClientRect"] )
-       jQuery.fn.offset = function() {
-               if ( !this[0] ) return { top: 0, left: 0 };
-               if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
-               var box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
-                       clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
-                       top  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
-                       left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
-               return { top: top, left: left };
-       };
-else 
-       jQuery.fn.offset = function() {
-               if ( !this[0] ) return { top: 0, left: 0 };
-               if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
-               jQuery.offset.initialized || jQuery.offset.initialize();
-
-               var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
-                       doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
-                       body = doc.body, defaultView = doc.defaultView,
-                       prevComputedStyle = defaultView.getComputedStyle(elem, null),
-                       top = elem.offsetTop, left = elem.offsetLeft;
-
-               while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
-                       computedStyle = defaultView.getComputedStyle(elem, null);
-                       top -= elem.scrollTop, left -= elem.scrollLeft;
-                       if ( elem === offsetParent ) {
-                               top += elem.offsetTop, left += elem.offsetLeft;
-                               if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
-                                       top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
-                                       left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
-                               prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
-                       }
-                       if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
-                               top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
-                               left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
-                       prevComputedStyle = computedStyle;
-               }
-
-               if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
-                       top  += body.offsetTop,
-                       left += body.offsetLeft;
-
-               if ( prevComputedStyle.position === "fixed" )
-                       top  += Math.max(docElem.scrollTop, body.scrollTop),
-                       left += Math.max(docElem.scrollLeft, body.scrollLeft);
-
-               return { top: top, left: left };
-       };
-
-jQuery.offset = {
-       initialize: function() {
-               if ( this.initialized ) return;
-               var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
-                       html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
-
-               rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
-               for ( prop in rules ) container.style[prop] = rules[prop];
-
-               container.innerHTML = html;
-               body.insertBefore(container, body.firstChild);
-               innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
-
-               this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
-               this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
-
-               innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
-               this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
-
-               body.style.marginTop = '1px';
-               this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
-               body.style.marginTop = bodyMarginTop;
-
-               body.removeChild(container);
-               this.initialized = true;
-       },
-
-       bodyOffset: function(body) {
-               jQuery.offset.initialized || jQuery.offset.initialize();
-               var top = body.offsetTop, left = body.offsetLeft;
-               if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
-                       top  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,
-                       left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
-               return { top: top, left: left };
-       }
-};
-
-
-jQuery.fn.extend({
-       position: function() {
-               var left = 0, top = 0, results;
-
-               if ( this[0] ) {
-                       // Get *real* offsetParent
-                       var offsetParent = this.offsetParent(),
-
-                       // Get correct offsets
-                       offset       = this.offset(),
-                       parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
-
-                       // Subtract element margins
-                       // note: when an element has margin: auto the offsetLeft and marginLeft 
-                       // are the same in Safari causing offset.left to incorrectly be 0
-                       offset.top  -= num( this, 'marginTop'  );
-                       offset.left -= num( this, 'marginLeft' );
-
-                       // Add offsetParent borders
-                       parentOffset.top  += num( offsetParent, 'borderTopWidth'  );
-                       parentOffset.left += num( offsetParent, 'borderLeftWidth' );
-
-                       // Subtract the two offsets
-                       results = {
-                               top:  offset.top  - parentOffset.top,
-                               left: offset.left - parentOffset.left
-                       };
-               }
-
-               return results;
-       },
-
-       offsetParent: function() {
-               var offsetParent = this[0].offsetParent || document.body;
-               while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
-                       offsetParent = offsetParent.offsetParent;
-               return jQuery(offsetParent);
-       }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( ['Left', 'Top'], function(i, name) {
-       var method = 'scroll' + name;
-       
-       jQuery.fn[ method ] = function(val) {
-               if (!this[0]) return null;
-
-               return val !== undefined ?
-
-                       // Set the scroll offset
-                       this.each(function() {
-                               this == window || this == document ?
-                                       window.scrollTo(
-                                               !i ? val : jQuery(window).scrollLeft(),
-                                                i ? val : jQuery(window).scrollTop()
-                                       ) :
-                                       this[ method ] = val;
-                       }) :
-
-                       // Return the scroll offset
-                       this[0] == window || this[0] == document ?
-                               self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
-                                       jQuery.boxModel && document.documentElement[ method ] ||
-                                       document.body[ method ] :
-                               this[0][ method ];
-       };
-});
-// Create innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function(i, name){
-
-       var tl = i ? "Left"  : "Top",  // top or left
-               br = i ? "Right" : "Bottom", // bottom or right
-               lower = name.toLowerCase();
-
-       // innerHeight and innerWidth
-       jQuery.fn["inner" + name] = function(){
-               return this[0] ?
-                       jQuery.css( this[0], lower, false, "padding" ) :
-                       null;
-       };
-
-       // outerHeight and outerWidth
-       jQuery.fn["outer" + name] = function(margin) {
-               return this[0] ?
-                       jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
-                       null;
-       };
-       
-       var type = name.toLowerCase();
-
-       jQuery.fn[ type ] = function( size ) {
-               // Get window width or height
-               return this[0] == window ?
-                       // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
-                       document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
-                       document.body[ "client" + name ] :
-
-                       // Get document width or height
-                       this[0] == document ?
-                               // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
-                               Math.max(
-                                       document.documentElement["client" + name],
-                                       document.body["scroll" + name], document.documentElement["scroll" + name],
-                                       document.body["offset" + name], document.documentElement["offset" + name]
-                               ) :
-
-                               // Get or set width or height on the element
-                               size === undefined ?
-                                       // Get width or height on the element
-                                       (this.length ? jQuery.css( this[0], type ) : null) :
-
-                                       // Set the width or height on the element (default to pixels if value is unitless)
-                                       this.css( type, typeof size === "string" ? size : size + "px" );
-       };
-
-});
-})();
diff --git a/tracdata/js/trac.js b/tracdata/js/trac.js
deleted file mode 100644 (file)
index addb769..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-(function($){
-  
-  $.fn.addAnchor = function(title) {
-    title = title || "Link here";
-    return this.filter("*[@id]").each(function() {
-      $("<a class='anchor'> \u00B6</a>").attr("href", "#" + this.id)
-        .attr("title", title).appendTo(this);
-    });
-  }
-  
-  $.fn.checked = function(checked) {
-    if (checked == undefined) { // getter
-      if (!this.length) return false;
-      return this.get(0).checked;
-    } else { // setter
-      return this.each(function() {
-        this.checked = checked;
-      });
-    }
-  }
-  
-  $.fn.enable = function(enabled) {
-    if (enabled == undefined) enabled = true;
-    return this.each(function() {
-      this.disabled = !enabled;
-      var label = $(this).parents("label");
-      if (!label.length && this.id) {
-        label = $("label[@for='" + this.id + "']");
-      }
-      if (!enabled) {
-        label.addClass("disabled");
-      } else {
-        label.removeClass("disabled");
-      }
-    });
-  }
-  
-  $.loadStyleSheet = function(href, type) {
-    type = type || "text/css";
-    $(document).ready(function() {
-      if (document.createStyleSheet) { // MSIE
-        document.createStyleSheet(href);
-      } else {
-        $("<link rel='stylesheet' type='" + type + "' href='" + href + "' />")
-          .appendTo("head");
-      }
-    });
-  }
-  
-  // Used for dynamically updating the height of a textarea
-  window.resizeTextArea = function (id, rows) {
-    var textarea = $("#" + id).get(0);
-    if (!textarea || textarea.rows == undefined) return;
-    textarea.rows = rows;
-  }
-  
-  // The following are defined for backwards compatibility with releases prior
-  // to Trac 0.11
-  
-  window.addEvent = function(elem, type, func) {
-    $(elem).bind(type, func);
-  }
-  window.addHeadingLinks = function(container, title) {
-    $.each(["h1", "h2", "h3", "h4", "h5", "h6"], function() {
-      $(this, container).addAnchor(title);
-    });
-  }
-  window.enableControl = function(id, enabled) {
-    $("#" + id).enable(enabled);
-  }
-  window.getAncestorByTagName = function(elem, tagName) {
-    return $(elem).parents(tagName).get(0);
-  }
-
-})(jQuery);
\ No newline at end of file
diff --git a/tracdata/topbar_gradient.png b/tracdata/topbar_gradient.png
deleted file mode 100644 (file)
index d0605a3..0000000
Binary files a/tracdata/topbar_gradient.png and /dev/null differ
diff --git a/tracdata/topbar_gradient2.png b/tracdata/topbar_gradient2.png
deleted file mode 100644 (file)
index 5f7ed4a..0000000
Binary files a/tracdata/topbar_gradient2.png and /dev/null differ
diff --git a/wiki/2002-10-21-Seminar b/wiki/2002-10-21-Seminar
deleted file mode 100644 (file)
index 39470ff..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <title>2002-10-21-Seminar</title>
-    <link rel="start" href="/wiki"/>
-    <link rel="stylesheet" href="/tracdata/css/trac.css" type="text/css"/>
-    <link rel="stylesheet" href="/tracdata/css/wiki.css" type="text/css"/>
-    <script type="text/javascript" src="/tracdata/js/jquery.js">
-    </script>
-    <script type="text/javascript" src="/tracdata/js/trac.js">
-    </script>
-    <script type="text/javascript">
-      jQuery(document).ready(function($) {
-        $("#content").find("h1,h2,h3,h4,h5,h6").addAnchor("Link to this section");
-      });
-    </script>
-  </head>
-  <body>
-    <div id="banner">
-      <div id="header">
-        <a id="logo" href="http://www.fsij.org/">
-        <img src="/images/FSIJ-s.png" alt="FSIJ" height="93" width="137"/>
-       </a>
-      </div>
-    </div>
-    <div id="mainnav" class="nav">
-    <ul>
-      <li class="first active"><a href="/wiki">Top</a></li>
-      <li><a href="/wiki/TitleIndex">Index</a></li>
-    </ul>
-    </div>
-    <div id="main">
-      <div id="content" class="wiki">
-       <div class="wikipage searchable">
-         <pre class="wiki">2002年9月12日
-                                                        2002年10月7日(update)
-                                  NPOフリーソフトウェアイニシアティブ
-         第一回 FSIJセミナーの開催とご参加者募集のお知らせ
-  特定非営利活動法人フリーソフトウェアイニシアティブ(以下FSIJ、英文表
-記:The Free Software Initiative of Japan、URL: http://www.fsij.org/)は
-第一回FSIJセミナーを開催します。FSIJセミナーは本格的な技術講座で、ソフ
-トウェア技術やシステム運用技術等をFSIJ会員およびフリーソフトウェアコミュ
-ニティーへ技術転移することを目的としています。こうした分野にご関心をお
-持ちのみなさまのご参加を心からお待ちしております。なお、セミナーに併せ
-て、10月22日および23日に、Free Software シンポジウム 2002 を開催いたし
-ます。合わせてご参加下さい。
-1.会場:
-   日本教育会館
-   東京都千代田区一ツ橋2-6-2
-   URL http://www.jec.or.jp
-2.日時:
-   2002年10月21日(月曜日) 10:00 ~ 16:00 (途中休憩をはさむ予定です)
-3.料金(各講座):
-   2万5千円  (非会員)
-   2万2千円  (早期割引 ※1)
-   2万円     (特別優待 ※2)
-   5千円     (FSIJ会員優待)
-   注意: 銀行振込のみ取扱います。現金での支払い受付は行ないません。
-   注意: 学生割引等はありません。
-   ※1 非会員の方で9/30日までに申し込まれた方には早期割引を用意し
-       通常2万5千円の所を2万2千円にてご提供します。
-   ※2 メーリングリストで申し込み書を受け取った方にご用意しています。
-       申し込み書の優待資格の所に受け取ったメーリングリスト名を
-       お書きください。
-4.講座の内容:
-&lt;講座A&gt;
-●タイトル:Debian GNU/Linux ~導入から運用まで~
-●講師: 野首 貴嗣  (※2)
-●日時:2002年10月21日(月曜日) 10:00 ~ 16:00
-●内容:
- Debian GNU/Linuxは、オープンソースとフリーソフトウェアの精神を最も色
-濃く前面に出しているLinuxディストリビューションです。RedHatやVineに比
-べるとあまりなじみはないかもしれませんが、欧米での評価は高く、日本でも
-『SourceForge JP』や『Slashdot JP』、『日本のLinux情報』やLinux-Users
-メーリングリスト配信など、大規模なバックエンドサーバーとして活躍してい
-るほか、Zaurusのような組み込みシステム、日本医師会のORCAシステムのデス
-クトップ環境など、徐々に、しかし着実にDe bian GNU/Linuxは広がりを見せ
-ています。本セッションでは、このDebian GNU/Linuxに焦点を当て、紹介から
-導入、デスクトップやサーバーとしての運用方法まで、多岐に渡って説明しま
-す。
-●講師略歴: 野首 貴嗣
-Debian Project オフィシャルメンバー、Debian JP Project 監事、日本
-Linux 協会理事、フリーソフトウェアイニシアティブ理事。
-Namazu Project を始め、いくつかのフリーソフトウェア開発に携わっている。
- ※2 講師都合により武藤氏より野首氏に交替になりました。
-&lt;講座B&gt;
-●タイトル:Free Softwareによるインターネットセキュリティ
-●講師:すずきひろのぶ
-●日時:2002年10月21日(月曜日) 10:00 ~ 16:00
-●内容:
- インターネットセキュリティの概念から応用までをお話します。まずセキュ
-リティの概念からはじまり、基礎的なインターネットセキュリティの知識を確
-認した後、De bianをベースに実践的なLinuxの安全なシステム構築のノウハウ
-を伝授します。またS SHやGnuPGといった暗号技術を基礎から解説します。受
-講者はUnixやLinuxシステムを知っていることを前提とします。
-●講師略歴: すずきひろのぶ
- ソフトウェア・コンサルタント。主にインターネット/ネットワーク関連シス
-テム、電子商取引システム、セキュリティ関連システム及びインターネット・
-セキュリティのコンサルテーションを行なっている。日本では数少ないPGPの
-エキスパート。近著「実践Linuxセキュリティ(インプレス)」。他には山口英
-(奈良先端科学技術大学院大学教授)とともに「Bit別冊 情報セキュリティ (共
-立出版)」の編集がある。雑誌等の寄稿多数。
-&lt;講座C:&gt;
-●タイトル:Linuxカーネル組込み利用講座
-●講師:g新部裕、竹岡尚三、海老原祐太郎、野澤寿晴
-●日時:2002年10月21日(月曜日) 10:00 ~ 16:00
-●内容:
- 組込み利用は, いま Linux がもっとも熱い分野です。組込み利用にはこれま
-で開発環境として GNU システムが広く使われてきましたが, Linux カーネル
-が組込みで利用できるようになり, GNU/Linux システムとして, ホスト環境の
-開発環境とシームレスののターゲット環境が可能となり, 無線 LAN アクセス
-ポイントなどの機器, PDA などの応用がひろがっています。組込み利用のカー
-ネルには, MMU がない CPU を対象とする uCLinux と, 一般の Linux の 2 系
-統があります。この 2 種類について, ARM, H8/300H, SuperH, MIPS 5900 な
-どの開発の進展と, 実機での開発の進め方を解説します。
-●講師略歴: g新部裕
- 独立行政法人産業技術総合研究所 情報処理研究部門。Linux SuperH カーネ
-ルメンテナー。FSIJ 理事。「ソフトウェアと社会, プログラミングと身体」
-をテーマにフリーソフトウェアの研究開発と普及啓発に取り込んでいる。平成
-13年度/14年度未踏ソフトウェア創造事業プロジェクトマネージャ。
-●講師略歴: 竹岡尚三
- 株式会社 アックス代表取締役。日本で唯一 Linux カーネルに関して, 積極
-的にビジネスを展開する。ハイテクベンチャの代表的存在。zxLinux, axLinux
-と組込み分野でカーネルの開発を進めている。MMU がない CPU を対象とする
-Linux に関しては, 世界的に注目を集めている。
-●講師略歴: 海老原祐太郎
- (有) りぬくす工房代表。組込み向け ROM 化 Linux ディストリビューション
-のプロジェクト "Silicon Linux" の開発を 1997 年に開始。2000年には,
-SuperH SH7708 を用いた組込み向けボード CAT68701 を発表。Linux の組込み
-利用の第一人者として活躍中。
-5.申込方法:
-下記FSIJセミナー申し込みフォーマットに必要事項を記入の上、
-seminar-info@fsij.orgへメールでお送りください。後日、参加証およ
-び請求書をご郵送致します。締め切りは10月15日です。なお各講座の定員は30
-名とさせていただきます。
------------------ここから-----------------------
-ご希望講座名:__________________________________
-お名前: ________________________________________
-ご住所:  ________________________________________
-(参加証および請求書送付先)
-参加種別:
-(ひとつ選んで[ ]にチェックお願いします)
-  [ ] FSIJ個人会員: (会員番号)__________________
-  [ ] FSIJ団体/賛助会員: (会員番号)____________
-  [ ] FSIJ非会員(優待資格あり)
-  (優待資格/参加団体名):_________________________________
-  [ ] FSIJ非会員
-  (メールアドレス):_____________________________
- -------------------ここまで----------------------
-&lt;本件に関する問い合わせ先&gt;
-*参加ご希望の方からのお問い合わせ・お申し込み先
-特定非営利活動法人 フリーソフトウェアイニシアティブ
-ホームページ:http://www.fsij.org
-電子メール:seminar-info@fsij.org
-電話:03-3416-9535 (※3)
-住所:157-0067 東京都世田谷区喜多見8-15-26 グリーンテラス103号
-*報道機関からのお問い合わせ先
-特定非営利活動法人 フリーソフトウェアイニシアティブ 監事・広報担当 進藤
-電子メール:info@fsij.org
-電話: 03-3416-9535 (※3)
-(※3 お問い合わせはできるだけ電子メールでお願いいたします。電話は留守
-番電話です。)
-</pre>
-       </div>
-      </div>
-    </div>
-    <div id="footer" lang="en" xml:lang="en">
-      <hr/>
-      <p class="right">
-      Contact us: <a href="mailto:info@fsij.org">info@fsij.org</a>
-      </p>
-    </div>
-  </body>
-</html>
\ No newline at end of file
diff --git a/wiki/2002-10-21-seminar b/wiki/2002-10-21-seminar
deleted file mode 100644 (file)
index 3add805..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <title>2002-10-21-seminar</title>
-    <link rel="start" href="/wiki"/>
-    <link rel="stylesheet" href="/tracdata/css/trac.css" type="text/css"/>
-    <link rel="stylesheet" href="/tracdata/css/wiki.css" type="text/css"/>
-    <script type="text/javascript" src="/tracdata/js/jquery.js">
-    </script>
-    <script type="text/javascript" src="/tracdata/js/trac.js">
-    </script>
-    <script type="text/javascript">
-      jQuery(document).ready(function($) {
-        $("#content").find("h1,h2,h3,h4,h5,h6").addAnchor("Link to this section");
-      });
-    </script>
-  </head>
-  <body>
-    <div id="banner">
-      <div id="header">
-        <a id="logo" href="http://www.fsij.org/">
-        <img src="/images/FSIJ-s.png" alt="FSIJ" height="93" width="137"/>
-       </a>
-      </div>
-    </div>
-    <div id="mainnav" class="nav">
-    <ul>
-      <li class="first active"><a href="/wiki">Top</a></li>
-      <li><a href="/wiki/TitleIndex">Index</a></li>
-    </ul>
-    </div>
-    <div id="main">
-      <div id="content" class="wiki">
-       <div class="wikipage searchable">
-         <pre class="wiki">2002年9月12日
-                                                        2002年10月7日(update)
-                                  NPOフリーソフトウェアイニシアティブ
-         第一回 FSIJセミナーの開催とご参加者募集のお知らせ
-  特定非営利活動法人フリーソフトウェアイニシアティブ(以下FSIJ、英文表
-記:The Free Software Initiative of Japan、URL: http://www.fsij.org/)は
-第一回FSIJセミナーを開催します。FSIJセミナーは本格的な技術講座で、ソフ
-トウェア技術やシステム運用技術等をFSIJ会員およびフリーソフトウェアコミュ
-ニティーへ技術転移することを目的としています。こうした分野にご関心をお
-持ちのみなさまのご参加を