Add 0.7.0 document to Livy website
diff --git a/site/docs/0.7.0-incubating/api/java/allclasses-frame.html b/site/docs/0.7.0-incubating/api/java/allclasses-frame.html
new file mode 100644
index 0000000..cf02aba
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/allclasses-frame.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>所有类 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<h1 class="bar">所有类</h1>
+<div class="indexContainer">
+<ul>
+<li><a href="org/apache/livy/Job.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">Job</span></a></li>
+<li><a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">JobContext</span></a></li>
+<li><a href="org/apache/livy/JobHandle.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">JobHandle</span></a></li>
+<li><a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">JobHandle.Listener</span></a></li>
+<li><a href="org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举" target="classFrame">JobHandle.State</a></li>
+<li><a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">LivyClient</span></a></li>
+<li><a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类" target="classFrame">LivyClientBuilder</a></li>
+<li><a href="org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">LivyClientFactory</span></a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/allclasses-noframe.html b/site/docs/0.7.0-incubating/api/java/allclasses-noframe.html
new file mode 100644
index 0000000..f954d59
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/allclasses-noframe.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>所有类 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<h1 class="bar">所有类</h1>
+<div class="indexContainer">
+<ul>
+<li><a href="org/apache/livy/Job.html" title="org.apache.livy中的接口"><span class="interfaceName">Job</span></a></li>
+<li><a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="interfaceName">JobContext</span></a></li>
+<li><a href="org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="interfaceName">JobHandle</span></a></li>
+<li><a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="interfaceName">JobHandle.Listener</span></a></li>
+<li><a href="org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></li>
+<li><a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="interfaceName">LivyClient</span></a></li>
+<li><a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></li>
+<li><a href="org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口"><span class="interfaceName">LivyClientFactory</span></a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/constant-values.html b/site/docs/0.7.0-incubating/api/java/constant-values.html
new file mode 100644
index 0000000..697579a
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/constant-values.html
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>常量字段值 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u5E38\u91CF\u5B57\u6BB5\u503C (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?constant-values.html" target="_top">框架</a></li>
+<li><a href="constant-values.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="常量字段值" class="title">常量字段值</h1>
+<h2 title="目录">目录</h2>
+<ul>
+<li><a href="#org.apache">org.apache.*</a></li>
+</ul>
+</div>
+<div class="constantValuesContainer"><a name="org.apache">
+<!--   -->
+</a>
+<h2 title="org.apache">org.apache.*</h2>
+<ul class="blockList">
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="常量字段值表, 列表常量字段和值">
+<caption><span>org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th scope="col">常量字段</th>
+<th class="colLast" scope="col">值</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.livy.LivyClientBuilder.LIVY_URI_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
+<td><code><a href="org/apache/livy/LivyClientBuilder.html#LIVY_URI_KEY">LIVY_URI_KEY</a></code></td>
+<td class="colLast"><code>"livy.uri"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?constant-values.html" target="_top">框架</a></li>
+<li><a href="constant-values.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/deprecated-list.html b/site/docs/0.7.0-incubating/api/java/deprecated-list.html
new file mode 100644
index 0000000..558841b
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/deprecated-list.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>已过时的列表 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u5DF2\u8FC7\u65F6\u7684\u5217\u8868 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li class="navBarCell1Rev">已过时</li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?deprecated-list.html" target="_top">框架</a></li>
+<li><a href="deprecated-list.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="已过时的 API" class="title">已过时的 API</h1>
+<h2 title="目录">目录</h2>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li class="navBarCell1Rev">已过时</li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?deprecated-list.html" target="_top">框架</a></li>
+<li><a href="deprecated-list.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/help-doc.html b/site/docs/0.7.0-incubating/api/java/help-doc.html
new file mode 100644
index 0000000..f7dd943
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/help-doc.html
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>API 帮助 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="API \u5E2E\u52A9 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li class="navBarCell1Rev">帮助</li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?help-doc.html" target="_top">框架</a></li>
+<li><a href="help-doc.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">此 API 文档的组织方式</h1>
+<div class="subTitle">此 API (应用程序编程接口) 文档包含对应于导航栏中的项目的页面, 如下所述。</div>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2>程序包</h2>
+<p>每个程序包都有一个页面, 其中包含它的类和接口的列表及其概要。此页面可以包含六个类别:</p>
+<ul>
+<li>接口 (斜体)</li>
+<li>类</li>
+<li>枚举</li>
+<li>异常错误</li>
+<li>错误</li>
+<li>注释类型</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>类/接口</h2>
+<p>每个类, 接口, 嵌套类和嵌套接口都有各自的页面。其中每个页面都由三部分 (类/接口说明, 概要表, 以及详细的成员说明) 组成:</p>
+<ul>
+<li>类继承图</li>
+<li>直接子类</li>
+<li>所有已知子接口</li>
+<li>所有已知实现类</li>
+<li>类/接口声明</li>
+<li>类/接口说明</li>
+</ul>
+<ul>
+<li>嵌套类概要</li>
+<li>字段概要</li>
+<li>构造器概要</li>
+<li>方法概要</li>
+</ul>
+<ul>
+<li>字段详细资料</li>
+<li>构造器详细资料</li>
+<li>方法详细资料</li>
+</ul>
+<p>每个概要条目都包含该项目的详细说明的第一句。概要条目按字母顺序排列, 而详细说明则按其在源代码中出现的顺序排列。这样保持了程序员所建立的逻辑分组。</p>
+</li>
+<li class="blockList">
+<h2>注释类型</h2>
+<p>每个注释类型都有各自的页面, 其中包含以下部分:</p>
+<ul>
+<li>注释类型声明</li>
+<li>注释类型说明</li>
+<li>必需元素概要</li>
+<li>可选元素概要</li>
+<li>元素详细资料</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>枚举</h2>
+<p>每个枚举都有各自的页面, 其中包含以下部分:</p>
+<ul>
+<li>枚举声明</li>
+<li>枚举说明</li>
+<li>枚举常量概要</li>
+<li>枚举常量详细资料</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>使用</h2>
+<p>每个已文档化的程序包, 类和接口都有各自的“使用”页面。此页面介绍了使用给定类或程序包的任何部分的程序包, 类, 方法, 构造器和字段。对于给定的类或接口 A, 其“使用”页面包含 A 的子类, 声明为 A 的字段, 返回 A 的方法, 以及带有类型为 A 的参数的方法和构造器。访问此页面的方法是: 首先转至程序包, 类或接口, 然后单击导航栏中的 "使用" 链接。</p>
+</li>
+<li class="blockList">
+<h2>树 (类分层结构)</h2>
+<p>对于所有程序包, 有一个<a href="overview-tree.html">类分层结构</a>页面, 以及每个程序包的分层结构。每个分层结构页面都包含类的列表和接口的列表。从<code>java.lang.Object</code>开始, 按继承结构对类进行排列。接口不从<code>java.lang.Object</code>继承。</p>
+<ul>
+<li>查看“概览”页面时, 单击 "树" 将显示所有程序包的分层结构。</li>
+<li>查看特定程序包, 类或接口页面时, 单击 "树" 将仅显示该程序包的分层结构。</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>已过时的 API</h2>
+<p><a href="deprecated-list.html">已过时的 API</a> 页面列出了所有已过时的 API。一般由于进行了改进并且通常提供了替代的 API, 所以建议不要使用已过时的 API。在将来的实现过程中, 可能会删除已过时的 API。</p>
+</li>
+<li class="blockList">
+<h2>索引</h2>
+<p><a href="index-all.html">索引</a> 包含按字母顺序排列的所有类, 接口, 构造器, 方法和字段的列表。</p>
+</li>
+<li class="blockList">
+<h2>上一个/下一个</h2>
+<p>这些链接使您可以转至下一个或上一个类, 接口, 程序包或相关页面。</p>
+</li>
+<li class="blockList">
+<h2>框架/无框架</h2>
+<p>这些链接用于显示和隐藏 HTML 框架。所有页面均具有有框架和无框架两种显示方式。</p>
+</li>
+<li class="blockList">
+<h2>所有类</h2>
+<p><a href="allclasses-noframe.html">所有类</a>链接显示所有类和接口 (除了非静态嵌套类型)。</p>
+</li>
+<li class="blockList">
+<h2>序列化表格</h2>
+<p>每个可序列化或可外部化的类都有其序列化字段和方法的说明。此信息对重新实现者有用, 而对使用 API 的开发者则没有什么用处。尽管导航栏中没有链接, 但您可以通过下列方式获取此信息: 转至任何序列化类, 然后单击类说明的 "另请参阅" 部分中的 "序列化表格"。</p>
+</li>
+<li class="blockList">
+<h2>常量字段值</h2>
+<p><a href="constant-values.html">常量字段值</a>页面列出了静态最终字段及其值。</p>
+</li>
+</ul>
+<span class="emphasizedPhrase">此帮助文件适用于使用标准 doclet 生成的 API 文档。</span></div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li class="navBarCell1Rev">帮助</li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?help-doc.html" target="_top">框架</a></li>
+<li><a href="help-doc.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/index-all.html b/site/docs/0.7.0-incubating/api/java/index-all.html
new file mode 100644
index 0000000..81dc775
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/index-all.html
@@ -0,0 +1,346 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>索引 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u7D22\u5F15 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li class="navBarCell1Rev">索引</li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?index-all.html" target="_top">框架</a></li>
+<li><a href="index-all.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="contentContainer"><a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a name="I:A">
+<!--   -->
+</a>
+<h2 class="title">A</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClient.html#addFile-java.net.URI-">addFile(URI)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></dt>
+<dd>
+<div class="block">Adds a file to the running remote context.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClient.html#addJar-java.net.URI-">addJar(URI)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></dt>
+<dd>
+<div class="block">Adds a jar file to the running remote context.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.html#addListener-org.apache.livy.JobHandle.Listener-">addListener(JobHandle.Listener&lt;T&gt;)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a></dt>
+<dd>
+<div class="block">Add a listener to the job handle.</div>
+</dd>
+</dl>
+<a name="I:B">
+<!--   -->
+</a>
+<h2 class="title">B</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#build--">build()</a></span> - 类 中的方法org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<a name="I:C">
+<!--   -->
+</a>
+<h2 class="title">C</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/Job.html#call-org.apache.livy.JobContext-">call(JobContext)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientFactory.html#createClient-java.net.URI-java.util.Properties-">createClient(URI, Properties)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口">LivyClientFactory</a></dt>
+<dd>
+<div class="block">Instantiates a new client if the given URI is supported by the implementation.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#createStreamingContext-long-">createStreamingContext(long)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>
+<div class="block">Creates the SparkStreaming context.</div>
+</dd>
+</dl>
+<a name="I:G">
+<!--   -->
+</a>
+<h2 class="title">G</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#getLocalTmpDir--">getLocalTmpDir()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#getSharedObject-java.lang.String-">getSharedObject(String)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>
+<div class="block">Get shared object</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.html#getState--">getState()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a></dt>
+<dd>
+<div class="block">Return the current state of the job.</div>
+</dd>
+</dl>
+<a name="I:H">
+<!--   -->
+</a>
+<h2 class="title">H</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#hivectx--">hivectx()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>&nbsp;</dd>
+</dl>
+<a name="I:J">
+<!--   -->
+</a>
+<h2 class="title">J</h2>
+<dl>
+<dt><a href="org/apache/livy/Job.html" title="org.apache.livy中的接口"><span class="typeNameLink">Job</span></a>&lt;<a href="org/apache/livy/Job.html" title="Job中的类型参数">T</a>&gt; - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的接口</dt>
+<dd>
+<div class="block">Interface for a Spark remote job.</div>
+</dd>
+<dt><a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobContext</span></a> - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的接口</dt>
+<dd>
+<div class="block">Holds runtime information about the job execution context.</div>
+</dd>
+<dt><a href="org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobHandle</span></a>&lt;<a href="org/apache/livy/JobHandle.html" title="JobHandle中的类型参数">T</a>&gt; - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的接口</dt>
+<dd>
+<div class="block">A handle to a submitted job.</div>
+</dd>
+<dt><a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobHandle.Listener</span></a>&lt;<a href="org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt; - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的接口</dt>
+<dd>
+<div class="block">A listener for monitoring the state of the job in the remote context.</div>
+</dd>
+<dt><a href="org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举"><span class="typeNameLink">JobHandle.State</span></a> - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的枚举</dt>
+<dd>
+<div class="block">The current state of the submitted job.</div>
+</dd>
+</dl>
+<a name="I:L">
+<!--   -->
+</a>
+<h2 class="title">L</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#LIVY_URI_KEY">LIVY_URI_KEY</a></span> - 类 中的静态变量org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="typeNameLink">LivyClient</span></a> - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的接口</dt>
+<dd>
+<div class="block">A client for submitting Spark-based jobs to a Livy backend.</div>
+</dd>
+<dt><a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><span class="typeNameLink">LivyClientBuilder</span></a> - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的类</dt>
+<dd>
+<div class="block">A builder for Livy clients.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#LivyClientBuilder--">LivyClientBuilder()</a></span> - 类 的构造器org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>
+<div class="block">Creates a new builder that will automatically load the default Livy and Spark configuration
+ from the classpath.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#LivyClientBuilder-boolean-">LivyClientBuilder(boolean)</a></span> - 类 的构造器org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>
+<div class="block">Creates a new builder that will optionally load the default Livy and Spark configuration
+ from the classpath.</div>
+</dd>
+<dt><a href="org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口"><span class="typeNameLink">LivyClientFactory</span></a> - <a href="org/apache/livy/package-summary.html">org.apache.livy</a>中的接口</dt>
+<dd>
+<div class="block">A factory for Livy clients.</div>
+</dd>
+</dl>
+<a name="I:O">
+<!--   -->
+</a>
+<h2 class="title">O</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.Listener.html#onJobCancelled-org.apache.livy.JobHandle-">onJobCancelled(JobHandle&lt;T&gt;)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.Listener.html#onJobFailed-org.apache.livy.JobHandle-java.lang.Throwable-">onJobFailed(JobHandle&lt;T&gt;, Throwable)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.Listener.html#onJobQueued-org.apache.livy.JobHandle-">onJobQueued(JobHandle&lt;T&gt;)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a></dt>
+<dd>
+<div class="block">Notifies when a job has been queued for execution on the remote context.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.Listener.html#onJobStarted-org.apache.livy.JobHandle-">onJobStarted(JobHandle&lt;T&gt;)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.Listener.html#onJobSucceeded-org.apache.livy.JobHandle-T-">onJobSucceeded(JobHandle&lt;T&gt;, T)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/livy/package-summary.html">org.apache.livy</a> - 程序包 org.apache.livy</dt>
+<dd>
+<div class="block">Livy programmatic Java API</div>
+</dd>
+</dl>
+<a name="I:R">
+<!--   -->
+</a>
+<h2 class="title">R</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#removeSharedObject-java.lang.String-">removeSharedObject(String)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>
+<div class="block">Remove shared object from cache</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClient.html#run-org.apache.livy.Job-">run(Job&lt;T&gt;)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></dt>
+<dd>
+<div class="block">Asks the remote context to run a job immediately.</div>
+</dd>
+</dl>
+<a name="I:S">
+<!--   -->
+</a>
+<h2 class="title">S</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#sc--">sc()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#setAll-java.util.Map-">setAll(Map&lt;String, String&gt;)</a></span> - 类 中的方法org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#setAll-java.util.Properties-">setAll(Properties)</a></span> - 类 中的方法org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#setConf-java.lang.String-java.lang.String-">setConf(String, String)</a></span> - 类 中的方法org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#setSharedObject-java.lang.String-E-">setSharedObject(String, E)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>
+<div class="block">Set shared object, it will replace the old one if already existed</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClientBuilder.html#setURI-java.net.URI-">setURI(URI)</a></span> - 类 中的方法org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#sparkSession--">sparkSession()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#sqlctx--">sqlctx()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClient.html#stop-boolean-">stop(boolean)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></dt>
+<dd>
+<div class="block">Stops the remote context.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#stopStreamingCtx--">stopStreamingCtx()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>
+<div class="block">Stops the SparkStreaming context.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobContext.html#streamingctx--">streamingctx()</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClient.html#submit-org.apache.livy.Job-">submit(Job&lt;T&gt;)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></dt>
+<dd>
+<div class="block">Submits a job for asynchronous execution.</div>
+</dd>
+</dl>
+<a name="I:U">
+<!--   -->
+</a>
+<h2 class="title">U</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClient.html#uploadFile-java.io.File-">uploadFile(File)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></dt>
+<dd>
+<div class="block">Upload a file to be passed to the Spark application</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/LivyClient.html#uploadJar-java.io.File-">uploadJar(File)</a></span> - 接口 中的方法org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></dt>
+<dd>
+<div class="block">Upload a jar to be added to the Spark application classpath</div>
+</dd>
+</dl>
+<a name="I:V">
+<!--   -->
+</a>
+<h2 class="title">V</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.State.html#valueOf-java.lang.String-">valueOf(String)</a></span> - 枚举 中的静态方法org.apache.livy.<a href="org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></dt>
+<dd>
+<div class="block">返回带有指定名称的该类型的枚举常量。</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/livy/JobHandle.State.html#values--">values()</a></span> - 枚举 中的静态方法org.apache.livy.<a href="org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></dt>
+<dd>
+<div class="block">按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。</div>
+</dd>
+</dl>
+<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li class="navBarCell1Rev">索引</li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?index-all.html" target="_top">框架</a></li>
+<li><a href="index-all.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/index.html b/site/docs/0.7.0-incubating/api/java/index.html
new file mode 100644
index 0000000..7b83644
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/index.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Livy 0.7.0-incubating JavaDoc</title>
+<script type="text/javascript">
+    tmpTargetPage = "" + window.location.search;
+    if (tmpTargetPage != "" && tmpTargetPage != "undefined")
+        tmpTargetPage = tmpTargetPage.substring(1);
+    if (tmpTargetPage.indexOf(":") != -1 || (tmpTargetPage != "" && !validURL(tmpTargetPage)))
+        tmpTargetPage = "undefined";
+    targetPage = tmpTargetPage;
+    function validURL(url) {
+        try {
+            url = decodeURIComponent(url);
+        }
+        catch (error) {
+            return false;
+        }
+        var pos = url.indexOf(".html");
+        if (pos == -1 || pos != url.length - 5)
+            return false;
+        var allowNumber = false;
+        var allowSep = false;
+        var seenDot = false;
+        for (var i = 0; i < url.length - 5; i++) {
+            var ch = url.charAt(i);
+            if ('a' <= ch && ch <= 'z' ||
+                    'A' <= ch && ch <= 'Z' ||
+                    ch == '$' ||
+                    ch == '_' ||
+                    ch.charCodeAt(0) > 127) {
+                allowNumber = true;
+                allowSep = true;
+            } else if ('0' <= ch && ch <= '9'
+                    || ch == '-') {
+                if (!allowNumber)
+                     return false;
+            } else if (ch == '/' || ch == '.') {
+                if (!allowSep)
+                    return false;
+                allowNumber = false;
+                allowSep = false;
+                if (ch == '.')
+                     seenDot = true;
+                if (ch == '/' && seenDot)
+                     return false;
+            } else {
+                return false;
+            }
+        }
+        return true;
+    }
+    function loadFrames() {
+        if (targetPage != "" && targetPage != "undefined")
+             top.classFrame.location = top.targetPage;
+    }
+</script>
+</head>
+<frameset cols="20%,80%" title="Documentation frame" onload="top.loadFrames()">
+<frame src="allclasses-frame.html" name="packageFrame" title="所有类和接口 (除了非静态嵌套类型)">
+<frame src="org/apache/livy/package-summary.html" name="classFrame" title="程序包, 类和接口说明" scrolling="yes">
+<noframes>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<h2>框架预警</h2>
+<p>请使用框架功能查看此文档。如果看到此消息, 则表明您使用的是不支持框架的 Web 客户机。链接到<a href="org/apache/livy/package-summary.html">非框架版本</a>。</p>
+</noframes>
+</frameset>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/Job.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/Job.html
new file mode 100644
index 0000000..4dc6dec
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/Job.html
@@ -0,0 +1,232 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Job (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Job (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],4:["t3","抽象方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/Job.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个类</li>
+<li><a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/Job.html" target="_top">框架</a></li>
+<li><a href="Job.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="接口 Job" class="title">接口 Job&lt;T&gt;</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>所有超级接口:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="java.io中的类或接口">Serializable</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">Job&lt;T&gt;</span>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="java.io中的类或接口">Serializable</a></pre>
+<div class="block">Interface for a Spark remote job.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/Job.html" title="Job中的类型参数">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/Job.html#call-org.apache.livy.JobContext-">call</a></span>(<a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a>&nbsp;jc)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="call-org.apache.livy.JobContext-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>call</h4>
+<pre><a href="../../../org/apache/livy/Job.html" title="Job中的类型参数">T</a>&nbsp;call(<a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a>&nbsp;jc)
+throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="java.lang中的类或接口">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">抛出:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="java.lang中的类或接口">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/Job.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个类</li>
+<li><a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/Job.html" target="_top">框架</a></li>
+<li><a href="Job.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobContext.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobContext.html
new file mode 100644
index 0000000..db24b4c
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobContext.html
@@ -0,0 +1,434 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JobContext (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JobContext (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6};
+var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],4:["t3","抽象方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobContext.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobContext.html" target="_top">框架</a></li>
+<li><a href="JobContext.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="接口 JobContext" class="title">接口 JobContext</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">JobContext</span></pre>
+<div class="block">Holds runtime information about the job execution context.
+
+ An instance of this class is kept on the node hosting a remote Spark context and is made
+ available to jobs being executed via RemoteSparkContext#submit().</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#createStreamingContext-long-">createStreamingContext</a></span>(long&nbsp;batchDuration)</code>
+<div class="block">Creates the SparkStreaming context.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="java.io中的类或接口">File</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#getLocalTmpDir--">getLocalTmpDir</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>&lt;E&gt;&nbsp;E</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#getSharedObject-java.lang.String-">getSharedObject</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name)</code>
+<div class="block">Get shared object</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>org.apache.spark.sql.hive.HiveContext</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#hivectx--">hivectx</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>&lt;E&gt;&nbsp;E</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#removeSharedObject-java.lang.String-">removeSharedObject</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name)</code>
+<div class="block">Remove shared object from cache</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>org.apache.spark.api.java.JavaSparkContext</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#sc--">sc</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>&lt;E&gt;&nbsp;void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#setSharedObject-java.lang.String-E-">setSharedObject</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name,
+               E&nbsp;object)</code>
+<div class="block">Set shared object, it will replace the old one if already existed</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>&lt;E&gt;&nbsp;E</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#sparkSession--">sparkSession</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>org.apache.spark.sql.SQLContext</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#sqlctx--">sqlctx</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#stopStreamingCtx--">stopStreamingCtx</a></span>()</code>
+<div class="block">Stops the SparkStreaming context.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>org.apache.spark.streaming.api.java.JavaStreamingContext</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobContext.html#streamingctx--">streamingctx</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="sc--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sc</h4>
+<pre>org.apache.spark.api.java.JavaSparkContext&nbsp;sc()</pre>
+<dl>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The shared SparkContext instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="sqlctx--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sqlctx</h4>
+<pre>org.apache.spark.sql.SQLContext&nbsp;sqlctx()</pre>
+<dl>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The shared SQLContext instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="hivectx--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>hivectx</h4>
+<pre>org.apache.spark.sql.hive.HiveContext&nbsp;hivectx()</pre>
+<dl>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The shared HiveContext instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="streamingctx--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>streamingctx</h4>
+<pre>org.apache.spark.streaming.api.java.JavaStreamingContext&nbsp;streamingctx()</pre>
+<dl>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The JavaStreamingContext which has already been created.</dd>
+</dl>
+</li>
+</ul>
+<a name="getSharedObject-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSharedObject</h4>
+<pre>&lt;E&gt;&nbsp;E&nbsp;getSharedObject(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name)
+               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true" title="java.util中的类或接口">NoSuchElementException</a></pre>
+<div class="block">Get shared object</div>
+<dl>
+<dt><span class="paramLabel">类型参数:</span></dt>
+<dd><code>E</code> - The type of the shared object</dd>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>name</code> - Name of the shared object to return</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The shared object matching name</dd>
+<dt><span class="throwsLabel">抛出:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/NoSuchElementException.html?is-external=true" title="java.util中的类或接口">NoSuchElementException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="setSharedObject-java.lang.String-java.lang.Object-">
+<!--   -->
+</a><a name="setSharedObject-java.lang.String-E-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSharedObject</h4>
+<pre>&lt;E&gt;&nbsp;void&nbsp;setSharedObject(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name,
+                         E&nbsp;object)</pre>
+<div class="block">Set shared object, it will replace the old one if already existed</div>
+<dl>
+<dt><span class="paramLabel">类型参数:</span></dt>
+<dd><code>E</code> - The type of the shared object</dd>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>name</code> - Name of the shared object to be set</dd>
+<dd><code>object</code> - The object to be set</dd>
+</dl>
+</li>
+</ul>
+<a name="removeSharedObject-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>removeSharedObject</h4>
+<pre>&lt;E&gt;&nbsp;E&nbsp;removeSharedObject(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name)</pre>
+<div class="block">Remove shared object from cache</div>
+<dl>
+<dt><span class="paramLabel">类型参数:</span></dt>
+<dd><code>E</code> - The type of the shared object</dd>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>name</code> - Name of the shared object to be removed</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The object that was removed</dd>
+</dl>
+</li>
+</ul>
+<a name="createStreamingContext-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createStreamingContext</h4>
+<pre>void&nbsp;createStreamingContext(long&nbsp;batchDuration)</pre>
+<div class="block">Creates the SparkStreaming context.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>batchDuration</code> - Time interval at which streaming data will be divided into batches,
+                      in milliseconds.</dd>
+</dl>
+</li>
+</ul>
+<a name="stopStreamingCtx--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>stopStreamingCtx</h4>
+<pre>void&nbsp;stopStreamingCtx()</pre>
+<div class="block">Stops the SparkStreaming context.</div>
+</li>
+</ul>
+<a name="getLocalTmpDir--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getLocalTmpDir</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="java.io中的类或接口">File</a>&nbsp;getLocalTmpDir()</pre>
+<dl>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>A local tmp dir specific to the context</dd>
+</dl>
+</li>
+</ul>
+<a name="sparkSession--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>sparkSession</h4>
+<pre>&lt;E&gt;&nbsp;E&nbsp;sparkSession()
+            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="java.lang中的类或接口">Exception</a></pre>
+<dl>
+<dt><span class="paramLabel">类型参数:</span></dt>
+<dd><code>E</code> - The type of the sparksession object</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The SparkSession if it exists</dd>
+<dt><span class="throwsLabel">抛出:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="java.lang中的类或接口">Exception</a></code> - If SparkSession does not exist</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobContext.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobContext.html" target="_top">框架</a></li>
+<li><a href="JobContext.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.Listener.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.Listener.html
new file mode 100644
index 0000000..f579b48
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.Listener.html
@@ -0,0 +1,294 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JobHandle.Listener (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JobHandle.Listener (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6};
+var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],4:["t3","抽象方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobHandle.Listener.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobHandle.Listener.html" target="_top">框架</a></li>
+<li><a href="JobHandle.Listener.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="接口 JobHandle.Listener" class="title">接口 JobHandle.Listener&lt;T&gt;</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>封闭接口:</dt>
+<dd><a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.html" title="JobHandle中的类型参数">T</a>&gt;</dd>
+</dl>
+<hr>
+<br>
+<pre>public static interface <span class="typeNameLabel">JobHandle.Listener&lt;T&gt;</span></pre>
+<div class="block">A listener for monitoring the state of the job in the remote context. Callbacks are called
+ when the corresponding state change occurs.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.Listener.html#onJobCancelled-org.apache.livy.JobHandle-">onJobCancelled</a></span>(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.Listener.html#onJobFailed-org.apache.livy.JobHandle-java.lang.Throwable-">onJobFailed</a></span>(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job,
+           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="java.lang中的类或接口">Throwable</a>&nbsp;cause)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.Listener.html#onJobQueued-org.apache.livy.JobHandle-">onJobQueued</a></span>(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</code>
+<div class="block">Notifies when a job has been queued for execution on the remote context.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.Listener.html#onJobStarted-org.apache.livy.JobHandle-">onJobStarted</a></span>(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.Listener.html#onJobSucceeded-org.apache.livy.JobHandle-T-">onJobSucceeded</a></span>(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job,
+              <a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&nbsp;result)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="onJobQueued-org.apache.livy.JobHandle-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onJobQueued</h4>
+<pre>void&nbsp;onJobQueued(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</pre>
+<div class="block">Notifies when a job has been queued for execution on the remote context. Note that it is
+ possible for jobs to bypass this state and got directly from the SENT state to the STARTED
+ state.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>job</code> - The JobHandle for the queued job</dd>
+</dl>
+</li>
+</ul>
+<a name="onJobStarted-org.apache.livy.JobHandle-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onJobStarted</h4>
+<pre>void&nbsp;onJobStarted(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</pre>
+</li>
+</ul>
+<a name="onJobCancelled-org.apache.livy.JobHandle-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onJobCancelled</h4>
+<pre>void&nbsp;onJobCancelled(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</pre>
+</li>
+</ul>
+<a name="onJobFailed-org.apache.livy.JobHandle-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onJobFailed</h4>
+<pre>void&nbsp;onJobFailed(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job,
+                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="java.lang中的类或接口">Throwable</a>&nbsp;cause)</pre>
+</li>
+</ul>
+<a name="onJobSucceeded-org.apache.livy.JobHandle-java.lang.Object-">
+<!--   -->
+</a><a name="onJobSucceeded-org.apache.livy.JobHandle-T-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>onJobSucceeded</h4>
+<pre>void&nbsp;onJobSucceeded(<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job,
+                    <a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&nbsp;result)</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobHandle.Listener.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobHandle.Listener.html" target="_top">框架</a></li>
+<li><a href="JobHandle.Listener.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.State.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.State.html
new file mode 100644
index 0000000..7d3b3de
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.State.html
@@ -0,0 +1,394 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JobHandle.State (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JobHandle.State (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9};
+var tabs = {65535:["t0","所有方法"],1:["t1","静态方法"],8:["t4","具体方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobHandle.State.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobHandle.State.html" target="_top">框架</a></li>
+<li><a href="JobHandle.State.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li><a href="#enum.constant.summary">枚举常量</a>&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li><a href="#enum.constant.detail">枚举常量</a>&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="枚举 JobHandle.State" class="title">枚举 JobHandle.State</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="java.lang中的类或接口">java.lang.Enum</a>&lt;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>&gt;</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.livy.JobHandle.State</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>所有已实现的接口:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="java.io中的类或接口">Serializable</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="java.lang中的类或接口">Comparable</a>&lt;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>&gt;</dd>
+</dl>
+<dl>
+<dt>封闭接口:</dt>
+<dd><a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../org/apache/livy/JobHandle.html" title="JobHandle中的类型参数">T</a>&gt;</dd>
+</dl>
+<hr>
+<br>
+<pre>public static enum <span class="typeNameLabel">JobHandle.State</span>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="java.lang中的类或接口">Enum</a>&lt;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>&gt;</pre>
+<div class="block">The current state of the submitted job.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.summary">
+<!--   -->
+</a>
+<h3>枚举常量概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="枚举常量概要表, 列表枚举常量和解释">
+<caption><span>枚举常量</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">枚举常量和说明</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#CANCELLED">CANCELLED</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#FAILED">FAILED</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#QUEUED">QUEUED</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#SENT">SENT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#STARTED">STARTED</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#SUCCEEDED">SUCCEEDED</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">静态方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">具体方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static <a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name)</code>
+<div class="block">返回带有指定名称的该类型的枚举常量。</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html#values--">values</a></span>()</code>
+<div class="block">按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Enum">
+<!--   -->
+</a>
+<h3>从类继承的方法&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="java.lang中的类或接口">Enum</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#clone--" title="java.lang中的类或接口">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#compareTo-E-" title="java.lang中的类或接口">compareTo</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#equals-java.lang.Object-" title="java.lang中的类或接口">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#finalize--" title="java.lang中的类或接口">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#getDeclaringClass--" title="java.lang中的类或接口">getDeclaringClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#hashCode--" title="java.lang中的类或接口">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#name--" title="java.lang中的类或接口">name</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#ordinal--" title="java.lang中的类或接口">ordinal</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#toString--" title="java.lang中的类或接口">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-" title="java.lang中的类或接口">valueOf</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>从类继承的方法&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="java.lang中的类或接口">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="java.lang中的类或接口">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="java.lang中的类或接口">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="java.lang中的类或接口">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="java.lang中的类或接口">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="java.lang中的类或接口">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ ENUM CONSTANT DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.detail">
+<!--   -->
+</a>
+<h3>枚举常量详细资料</h3>
+<a name="SENT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SENT</h4>
+<pre>public static final&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a> SENT</pre>
+</li>
+</ul>
+<a name="QUEUED">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>QUEUED</h4>
+<pre>public static final&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a> QUEUED</pre>
+</li>
+</ul>
+<a name="STARTED">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>STARTED</h4>
+<pre>public static final&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a> STARTED</pre>
+</li>
+</ul>
+<a name="CANCELLED">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CANCELLED</h4>
+<pre>public static final&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a> CANCELLED</pre>
+</li>
+</ul>
+<a name="FAILED">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FAILED</h4>
+<pre>public static final&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a> FAILED</pre>
+</li>
+</ul>
+<a name="SUCCEEDED">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SUCCEEDED</h4>
+<pre>public static final&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a> SUCCEEDED</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="values--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>values</h4>
+<pre>public static&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>[]&nbsp;values()</pre>
+<div class="block">按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。该方法可用于迭代
+常量, 如下所示:
+<pre>
+for (JobHandle.State c : JobHandle.State.values())
+&nbsp;   System.out.println(c);
+</pre></div>
+<dl>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>按照声明该枚举类型的常量的顺序返回的包含这些常量的数组</dd>
+</dl>
+</li>
+</ul>
+<a name="valueOf-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>valueOf</h4>
+<pre>public static&nbsp;<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>&nbsp;valueOf(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name)</pre>
+<div class="block">返回带有指定名称的该类型的枚举常量。
+字符串必须与用于声明该类型的枚举常量的
+标识符<i>完全</i>匹配。(不允许有多余
+的空格字符。)</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>name</code> - 要返回的枚举常量的名称。</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>返回带有指定名称的枚举常量</dd>
+<dt><span class="throwsLabel">抛出:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="java.lang中的类或接口">IllegalArgumentException</a></code> - 如果该枚举类型没有带有指定名称的常量</dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="java.lang中的类或接口">NullPointerException</a></code> - 如果参数为空值</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobHandle.State.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobHandle.State.html" target="_top">框架</a></li>
+<li><a href="JobHandle.State.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li><a href="#enum.constant.summary">枚举常量</a>&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li><a href="#enum.constant.detail">枚举常量</a>&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.html
new file mode 100644
index 0000000..72d6c45
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/JobHandle.html
@@ -0,0 +1,289 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JobHandle (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JobHandle (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6};
+var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],4:["t3","抽象方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobHandle.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobHandle.html" target="_top">框架</a></li>
+<li><a href="JobHandle.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li><a href="#nested.class.summary">嵌套</a>&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="接口 JobHandle" class="title">接口 JobHandle&lt;T&gt;</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>所有超级接口:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;T&gt;</dd>
+</dl>
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">JobHandle&lt;T&gt;</span>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;T&gt;</pre>
+<div class="block">A handle to a submitted job. Allows for monitoring and controlling of the running remote job.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>嵌套类概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="嵌套类概要表, 列表嵌套类和解释">
+<caption><span>嵌套类</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">接口和说明</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a>&lt;<a href="../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;</span></code>
+<div class="block">A listener for monitoring the state of the job in the remote context.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></span></code>
+<div class="block">The current state of the submitted job.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.html#addListener-org.apache.livy.JobHandle.Listener-">addListener</a></span>(<a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a>&lt;<a href="../../../org/apache/livy/JobHandle.html" title="JobHandle中的类型参数">T</a>&gt;&nbsp;l)</code>
+<div class="block">Add a listener to the job handle.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/JobHandle.html#getState--">getState</a></span>()</code>
+<div class="block">Return the current state of the job.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.util.concurrent.Future">
+<!--   -->
+</a>
+<h3>从接口继承的方法&nbsp;java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true#cancel-boolean-" title="java.util.concurrent中的类或接口">cancel</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true#get--" title="java.util.concurrent中的类或接口">get</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true#get-long-java.util.concurrent.TimeUnit-" title="java.util.concurrent中的类或接口">get</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true#isCancelled--" title="java.util.concurrent中的类或接口">isCancelled</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true#isDone--" title="java.util.concurrent中的类或接口">isDone</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="getState--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getState</h4>
+<pre><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>&nbsp;getState()</pre>
+<div class="block">Return the current state of the job.</div>
+<dl>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The current State of this job</dd>
+</dl>
+</li>
+</ul>
+<a name="addListener-org.apache.livy.JobHandle.Listener-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>addListener</h4>
+<pre>void&nbsp;addListener(<a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a>&lt;<a href="../../../org/apache/livy/JobHandle.html" title="JobHandle中的类型参数">T</a>&gt;&nbsp;l)</pre>
+<div class="block">Add a listener to the job handle. If the job's state is not SENT, a callback for the
+ corresponding state will be invoked immediately.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>l</code> - The listener to add.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/JobHandle.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/JobHandle.html" target="_top">框架</a></li>
+<li><a href="JobHandle.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li><a href="#nested.class.summary">嵌套</a>&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClient.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClient.html
new file mode 100644
index 0000000..14f2431
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClient.html
@@ -0,0 +1,391 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>LivyClient (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="LivyClient (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6};
+var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],4:["t3","抽象方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/LivyClient.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/LivyClient.html" target="_top">框架</a></li>
+<li><a href="LivyClient.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="接口 LivyClient" class="title">接口 LivyClient</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">LivyClient</span></pre>
+<div class="block">A client for submitting Spark-based jobs to a Livy backend.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClient.html#addFile-java.net.URI-">addFile</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri)</code>
+<div class="block">Adds a file to the running remote context.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClient.html#addJar-java.net.URI-">addJar</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri)</code>
+<div class="block">Adds a jar file to the running remote context.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;T&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClient.html#run-org.apache.livy.Job-">run</a></span>(<a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;&nbsp;job)</code>
+<div class="block">Asks the remote context to run a job immediately.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClient.html#stop-boolean-">stop</a></span>(boolean&nbsp;shutdownContext)</code>
+<div class="block">Stops the remote context.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;T&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClient.html#submit-org.apache.livy.Job-">submit</a></span>(<a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;&nbsp;job)</code>
+<div class="block">Submits a job for asynchronous execution.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClient.html#uploadFile-java.io.File-">uploadFile</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="java.io中的类或接口">File</a>&nbsp;file)</code>
+<div class="block">Upload a file to be passed to the Spark application</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClient.html#uploadJar-java.io.File-">uploadJar</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="java.io中的类或接口">File</a>&nbsp;jar)</code>
+<div class="block">Upload a jar to be added to the Spark application classpath</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="submit-org.apache.livy.Job-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>submit</h4>
+<pre>&lt;T&gt;&nbsp;<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;T&gt;&nbsp;submit(<a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;&nbsp;job)</pre>
+<div class="block">Submits a job for asynchronous execution.</div>
+<dl>
+<dt><span class="paramLabel">类型参数:</span></dt>
+<dd><code>T</code> - The return type of the job</dd>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>job</code> - The job to execute.</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>A handle that be used to monitor the job.</dd>
+</dl>
+</li>
+</ul>
+<a name="run-org.apache.livy.Job-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>run</h4>
+<pre>&lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;T&gt;&nbsp;run(<a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;&nbsp;job)</pre>
+<div class="block">Asks the remote context to run a job immediately.
+ <p>
+ Normally, the remote context will queue jobs and execute them based on how many worker
+ threads have been configured. This method will run the submitted job in the same thread
+ processing the RPC message, so that queueing does not apply.
+ <p>
+ It's recommended that this method only be used to run code that finishes quickly. This
+ avoids interfering with the normal operation of the context.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">类型参数:</span></dt>
+<dd><code>T</code> - The return type of the job</dd>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>job</code> - The job to execute.</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>A future to monitor the result of the job.</dd>
+</dl>
+</li>
+</ul>
+<a name="stop-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>stop</h4>
+<pre>void&nbsp;stop(boolean&nbsp;shutdownContext)</pre>
+<div class="block">Stops the remote context.
+
+ Any pending jobs will be cancelled, and the remote context will be torn down.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>shutdownContext</code> - Whether to shutdown the underlying Spark context. If false, the
+                        context will keep running and it's still possible to send commands
+                        to it, if the backend being used supports it.</dd>
+</dl>
+</li>
+</ul>
+<a name="uploadJar-java.io.File-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>uploadJar</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;&nbsp;uploadJar(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="java.io中的类或接口">File</a>&nbsp;jar)</pre>
+<div class="block">Upload a jar to be added to the Spark application classpath</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>jar</code> - The local file to be uploaded</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>A future that can be used to monitor this operation</dd>
+</dl>
+</li>
+</ul>
+<a name="addJar-java.net.URI-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>addJar</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;&nbsp;addJar(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri)</pre>
+<div class="block">Adds a jar file to the running remote context.
+ <p>
+ Note that the URL should be reachable by the Spark driver process. If running the driver
+ in cluster mode, it may reside on a different host, meaning "file:" URLs have to exist
+ on that node (and not on the client machine).
+ <p>
+ If the provided URI has no scheme, it's considered to be relative to the default file system
+ configured in the Livy server.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>uri</code> - The location of the jar file.</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>A future that can be used to monitor the operation.</dd>
+</dl>
+</li>
+</ul>
+<a name="uploadFile-java.io.File-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>uploadFile</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;&nbsp;uploadFile(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="java.io中的类或接口">File</a>&nbsp;file)</pre>
+<div class="block">Upload a file to be passed to the Spark application</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>file</code> - The local file to be uploaded</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>A future that can be used to monitor this operation</dd>
+</dl>
+</li>
+</ul>
+<a name="addFile-java.net.URI-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>addFile</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;?&gt;&nbsp;addFile(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri)</pre>
+<div class="block">Adds a file to the running remote context.
+ <p>
+ Note that the URL should be reachable by the Spark driver process. If running the driver
+ in cluster mode, it may reside on a different host, meaning "file:" URLs have to exist
+ on that node (and not on the client machine).
+ <p>
+ If the provided URI has no scheme, it's considered to be relative to the default file system
+ configured in the Livy server.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>uri</code> - The location of the file.</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>A future that can be used to monitor the operation.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/LivyClient.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/LivyClient.html" target="_top">框架</a></li>
+<li><a href="LivyClient.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClientBuilder.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClientBuilder.html
new file mode 100644
index 0000000..a8f532c
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClientBuilder.html
@@ -0,0 +1,407 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>LivyClientBuilder (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="LivyClientBuilder (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],8:["t4","具体方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/LivyClientBuilder.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/LivyClientBuilder.html" target="_top">框架</a></li>
+<li><a href="LivyClientBuilder.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">构造器</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">构造器</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="类 LivyClientBuilder" class="title">类 LivyClientBuilder</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.livy.LivyClientBuilder</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">LivyClientBuilder</span>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">Object</a></pre>
+<div class="block">A builder for Livy clients.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>字段概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="字段概要表, 列表字段和解释">
+<caption><span>字段</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">字段和说明</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#LIVY_URI_KEY">LIVY_URI_KEY</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>构造器概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="构造器概要表, 列表构造器和解释">
+<caption><span>构造器</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">构造器和说明</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#LivyClientBuilder--">LivyClientBuilder</a></span>()</code>
+<div class="block">Creates a new builder that will automatically load the default Livy and Spark configuration
+ from the classpath.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#LivyClientBuilder-boolean-">LivyClientBuilder</a></span>(boolean&nbsp;loadDefaults)</code>
+<div class="block">Creates a new builder that will optionally load the default Livy and Spark configuration
+ from the classpath.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">具体方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#build--">build</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#setAll-java.util.Map-">setAll</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="java.util中的类或接口">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&gt;&nbsp;props)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#setAll-java.util.Properties-">setAll</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="java.util中的类或接口">Properties</a>&nbsp;props)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#setConf-java.lang.String-java.lang.String-">setConf</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;key,
+       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;value)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientBuilder.html#setURI-java.net.URI-">setURI</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>从类继承的方法&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="java.lang中的类或接口">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="java.lang中的类或接口">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="java.lang中的类或接口">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="java.lang中的类或接口">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="java.lang中的类或接口">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="java.lang中的类或接口">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="java.lang中的类或接口">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="java.lang中的类或接口">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="java.lang中的类或接口">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="java.lang中的类或接口">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="java.lang中的类或接口">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>字段详细资料</h3>
+<a name="LIVY_URI_KEY">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>LIVY_URI_KEY</h4>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a> LIVY_URI_KEY</pre>
+<dl>
+<dt><span class="seeLabel">另请参阅:</span></dt>
+<dd><a href="../../../constant-values.html#org.apache.livy.LivyClientBuilder.LIVY_URI_KEY">常量字段值</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>构造器详细资料</h3>
+<a name="LivyClientBuilder--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LivyClientBuilder</h4>
+<pre>public&nbsp;LivyClientBuilder()
+                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="java.io中的类或接口">IOException</a></pre>
+<div class="block">Creates a new builder that will automatically load the default Livy and Spark configuration
+ from the classpath.</div>
+<dl>
+<dt><span class="throwsLabel">抛出:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="java.io中的类或接口">IOException</a></code> - If an error occurred when reading from the config files.</dd>
+</dl>
+</li>
+</ul>
+<a name="LivyClientBuilder-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>LivyClientBuilder</h4>
+<pre>public&nbsp;LivyClientBuilder(boolean&nbsp;loadDefaults)
+                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="java.io中的类或接口">IOException</a></pre>
+<div class="block">Creates a new builder that will optionally load the default Livy and Spark configuration
+ from the classpath.
+
+ Livy client configuration is stored in a file called "livy-client.conf", and Spark client
+ configuration is stored in a file called "spark-defaults.conf", both in the root of the
+ application's classpath. Livy configuration takes precedence over Spark's (in case
+ configuration entries are duplicated), and configuration set in this builder object will
+ override the values in those files.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>loadDefaults</code> - Whether to load configs from spark-defaults.conf and livy-client.conf
+                     if they are found in the application's classpath.</dd>
+<dt><span class="throwsLabel">抛出:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="java.io中的类或接口">IOException</a></code> - If an error occurred when reading from the config files.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="setURI-java.net.URI-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setURI</h4>
+<pre>public&nbsp;<a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a>&nbsp;setURI(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri)</pre>
+</li>
+</ul>
+<a name="setConf-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setConf</h4>
+<pre>public&nbsp;<a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a>&nbsp;setConf(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;key,
+                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;value)</pre>
+</li>
+</ul>
+<a name="setAll-java.util.Map-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAll</h4>
+<pre>public&nbsp;<a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a>&nbsp;setAll(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="java.util中的类或接口">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&gt;&nbsp;props)</pre>
+</li>
+</ul>
+<a name="setAll-java.util.Properties-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAll</h4>
+<pre>public&nbsp;<a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a>&nbsp;setAll(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="java.util中的类或接口">Properties</a>&nbsp;props)</pre>
+</li>
+</ul>
+<a name="build--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>build</h4>
+<pre>public&nbsp;<a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a>&nbsp;build()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/LivyClientBuilder.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="typeNameLink">上一个类</span></a></li>
+<li><a href="../../../org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口"><span class="typeNameLink">下一个类</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/LivyClientBuilder.html" target="_top">框架</a></li>
+<li><a href="LivyClientBuilder.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">构造器</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">构造器</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClientFactory.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClientFactory.html
new file mode 100644
index 0000000..2393c6e
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/LivyClientFactory.html
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>LivyClientFactory (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="LivyClientFactory (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],4:["t3","抽象方法"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/LivyClientFactory.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><span class="typeNameLink">上一个类</span></a></li>
+<li>下一个类</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/LivyClientFactory.html" target="_top">框架</a></li>
+<li><a href="LivyClientFactory.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.livy</div>
+<h2 title="接口 LivyClientFactory" class="title">接口 LivyClientFactory</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@Private
+public interface <span class="typeNameLabel">LivyClientFactory</span></pre>
+<div class="block">A factory for Livy clients. Client implementations can register themselves by using the
+ Java services mechanism, providing implementations of this interface.
+ <p>
+ Client applications do not need to use this interface directly. Instead, use
+ <a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><code>LivyClientBuilder</code></a>.</div>
+<dl>
+<dt><span class="seeLabel">另请参阅:</span></dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html?is-external=true" title="java.util中的类或接口"><code>ServiceLoader</code></a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>方法概要</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
+<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/livy/LivyClientFactory.html#createClient-java.net.URI-java.util.Properties-">createClient</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri,
+            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="java.util中的类或接口">Properties</a>&nbsp;config)</code>
+<div class="block">Instantiates a new client if the given URI is supported by the implementation.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>方法详细资料</h3>
+<a name="createClient-java.net.URI-java.util.Properties-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>createClient</h4>
+<pre><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a>&nbsp;createClient(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri,
+                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="java.util中的类或接口">Properties</a>&nbsp;config)</pre>
+<div class="block">Instantiates a new client if the given URI is supported by the implementation.</div>
+<dl>
+<dt><span class="paramLabel">参数:</span></dt>
+<dd><code>uri</code> - URI pointing at the livy backend to use.</dd>
+<dd><code>config</code> - Livy client configs.</dd>
+<dt><span class="returnLabel">返回:</span></dt>
+<dd>The newly created LivyClient or null if an unsupported URI</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li class="navBarCell1Rev">类</li>
+<li><a href="class-use/LivyClientFactory.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><span class="typeNameLink">上一个类</span></a></li>
+<li>下一个类</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/LivyClientFactory.html" target="_top">框架</a></li>
+<li><a href="LivyClientFactory.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>概要:&nbsp;</li>
+<li>嵌套&nbsp;|&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">方法</a></li>
+</ul>
+<ul class="subNavList">
+<li>详细资料:&nbsp;</li>
+<li>字段&nbsp;|&nbsp;</li>
+<li>构造器&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">方法</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/Job.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/Job.html
new file mode 100644
index 0000000..9ebdb91
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/Job.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>接口 org.apache.livy.Job的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u63A5\u53E3 org.apache.livy.Job\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/Job.html" target="_top">框架</a></li>
+<li><a href="Job.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="接口的使用 org.apache.livy.Job" class="title">接口的使用<br>org.apache.livy.Job</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<h3><a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中<a href="../../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>的使用</h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>参数类型为<a href="../../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口">Future</a>&lt;T&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClient.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClient.html#run-org.apache.livy.Job-">run</a></span>(<a href="../../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;&nbsp;job)</code>
+<div class="block">Asks the remote context to run a job immediately.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;T&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClient.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClient.html#submit-org.apache.livy.Job-">submit</a></span>(<a href="../../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;&nbsp;job)</code>
+<div class="block">Submits a job for asynchronous execution.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/Job.html" target="_top">框架</a></li>
+<li><a href="Job.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobContext.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobContext.html
new file mode 100644
index 0000000..7362f0a
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobContext.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>接口 org.apache.livy.JobContext的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u63A5\u53E3 org.apache.livy.JobContext\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobContext.html" target="_top">框架</a></li>
+<li><a href="JobContext.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="接口的使用 org.apache.livy.JobContext" class="title">接口的使用<br>org.apache.livy.JobContext</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<h3><a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中<a href="../../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a>的使用</h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>参数类型为<a href="../../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/Job.html" title="Job中的类型参数">T</a></code></td>
+<td class="colLast"><span class="typeNameLabel">Job.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/Job.html#call-org.apache.livy.JobContext-">call</a></span>(<a href="../../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a>&nbsp;jc)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobContext.html" target="_top">框架</a></li>
+<li><a href="JobContext.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.Listener.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.Listener.html
new file mode 100644
index 0000000..407ec4a
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.Listener.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>接口 org.apache.livy.JobHandle.Listener的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u63A5\u53E3 org.apache.livy.JobHandle.Listener\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobHandle.Listener.html" target="_top">框架</a></li>
+<li><a href="JobHandle.Listener.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="接口的使用 org.apache.livy.JobHandle.Listener" class="title">接口的使用<br>org.apache.livy.JobHandle.Listener</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<h3><a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a>的使用</h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>参数类型为<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.html#addListener-org.apache.livy.JobHandle.Listener-">addListener</a></span>(<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a>&lt;<a href="../../../../org/apache/livy/JobHandle.html" title="JobHandle中的类型参数">T</a>&gt;&nbsp;l)</code>
+<div class="block">Add a listener to the job handle.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobHandle.Listener.html" target="_top">框架</a></li>
+<li><a href="JobHandle.Listener.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.State.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.State.html
new file mode 100644
index 0000000..08fc8b3
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.State.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>类 org.apache.livy.JobHandle.State的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u7C7B org.apache.livy.JobHandle.State\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobHandle.State.html" target="_top">框架</a></li>
+<li><a href="JobHandle.State.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="类的使用 org.apache.livy.JobHandle.State" class="title">类的使用<br>org.apache.livy.JobHandle.State</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<h3><a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中<a href="../../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>的使用</h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>返回<a href="../../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.html#getState--">getState</a></span>()</code>
+<div class="block">Return the current state of the job.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.State.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.State.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;name)</code>
+<div class="block">返回带有指定名称的该类型的枚举常量。</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a>[]</code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.State.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.State.html#values--">values</a></span>()</code>
+<div class="block">按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobHandle.State.html" target="_top">框架</a></li>
+<li><a href="JobHandle.State.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.html
new file mode 100644
index 0000000..8e378bf
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/JobHandle.html
@@ -0,0 +1,184 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>接口 org.apache.livy.JobHandle的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u63A5\u53E3 org.apache.livy.JobHandle\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobHandle.html" target="_top">框架</a></li>
+<li><a href="JobHandle.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="接口的使用 org.apache.livy.JobHandle" class="title">接口的使用<br>org.apache.livy.JobHandle</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<h3><a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>的使用</h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>返回<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;T&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClient.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClient.html#submit-org.apache.livy.Job-">submit</a></span>(<a href="../../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;&nbsp;job)</code>
+<div class="block">Submits a job for asynchronous execution.</div>
+</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>参数类型为<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.Listener.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.Listener.html#onJobCancelled-org.apache.livy.JobHandle-">onJobCancelled</a></span>(<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.Listener.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.Listener.html#onJobFailed-org.apache.livy.JobHandle-java.lang.Throwable-">onJobFailed</a></span>(<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job,
+           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="java.lang中的类或接口">Throwable</a>&nbsp;cause)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.Listener.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.Listener.html#onJobQueued-org.apache.livy.JobHandle-">onJobQueued</a></span>(<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</code>
+<div class="block">Notifies when a job has been queued for execution on the remote context.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.Listener.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.Listener.html#onJobStarted-org.apache.livy.JobHandle-">onJobStarted</a></span>(<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">JobHandle.Listener.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/JobHandle.Listener.html#onJobSucceeded-org.apache.livy.JobHandle-T-">onJobSucceeded</a></span>(<a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;<a href="../../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&gt;&nbsp;job,
+              <a href="../../../../org/apache/livy/JobHandle.Listener.html" title="JobHandle.Listener中的类型参数">T</a>&nbsp;result)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/JobHandle.html" target="_top">框架</a></li>
+<li><a href="JobHandle.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClient.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClient.html
new file mode 100644
index 0000000..e8ff5f7
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClient.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>接口 org.apache.livy.LivyClient的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u63A5\u53E3 org.apache.livy.LivyClient\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/LivyClient.html" target="_top">框架</a></li>
+<li><a href="LivyClient.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="接口的使用 org.apache.livy.LivyClient" class="title">接口的使用<br>org.apache.livy.LivyClient</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<h3><a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中<a href="../../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a>的使用</h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>返回<a href="../../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClientBuilder.html#build--">build</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClientFactory.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClientFactory.html#createClient-java.net.URI-java.util.Properties-">createClient</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri,
+            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="java.util中的类或接口">Properties</a>&nbsp;config)</code>
+<div class="block">Instantiates a new client if the given URI is supported by the implementation.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/LivyClient.html" target="_top">框架</a></li>
+<li><a href="LivyClient.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClientBuilder.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClientBuilder.html
new file mode 100644
index 0000000..ebddf29
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClientBuilder.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>类 org.apache.livy.LivyClientBuilder的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u7C7B org.apache.livy.LivyClientBuilder\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/LivyClientBuilder.html" target="_top">框架</a></li>
+<li><a href="LivyClientBuilder.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="类的使用 org.apache.livy.LivyClientBuilder" class="title">类的使用<br>org.apache.livy.LivyClientBuilder</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<h3><a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中<a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a>的使用</h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表方法和解释">
+<caption><span>返回<a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a>的<a href="../../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的方法</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">限定符和类型</th>
+<th class="colLast" scope="col">方法和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClientBuilder.html#setAll-java.util.Map-">setAll</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="java.util中的类或接口">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&gt;&nbsp;props)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClientBuilder.html#setAll-java.util.Properties-">setAll</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="java.util中的类或接口">Properties</a>&nbsp;props)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClientBuilder.html#setConf-java.lang.String-java.lang.String-">setConf</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;key,
+       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="java.lang中的类或接口">String</a>&nbsp;value)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">LivyClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../org/apache/livy/LivyClientBuilder.html#setURI-java.net.URI-">setURI</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="java.net中的类或接口">URI</a>&nbsp;uri)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/LivyClientBuilder.html" target="_top">框架</a></li>
+<li><a href="LivyClientBuilder.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClientFactory.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClientFactory.html
new file mode 100644
index 0000000..8515c8d
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/class-use/LivyClientFactory.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>接口 org.apache.livy.LivyClientFactory的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u63A5\u53E3 org.apache.livy.LivyClientFactory\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/LivyClientFactory.html" target="_top">框架</a></li>
+<li><a href="LivyClientFactory.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="接口的使用 org.apache.livy.LivyClientFactory" class="title">接口的使用<br>org.apache.livy.LivyClientFactory</h2>
+</div>
+<div class="classUseContainer">没有org.apache.livy.LivyClientFactory的用法</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li><a href="../../../../org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口">类</a></li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="../package-tree.html">树</a></li>
+<li><a href="../../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../../index-all.html">索引</a></li>
+<li><a href="../../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/livy/class-use/LivyClientFactory.html" target="_top">框架</a></li>
+<li><a href="LivyClientFactory.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-frame.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-frame.html
new file mode 100644
index 0000000..efeeb5d
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-frame.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>org.apache.livy (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../org/apache/livy/package-summary.html" target="classFrame">org.apache.livy</a></h1>
+<div class="indexContainer">
+<h2 title="接口">接口</h2>
+<ul title="接口">
+<li><a href="Job.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">Job</span></a></li>
+<li><a href="JobContext.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">JobContext</span></a></li>
+<li><a href="JobHandle.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">JobHandle</span></a></li>
+<li><a href="JobHandle.Listener.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">JobHandle.Listener</span></a></li>
+<li><a href="LivyClient.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">LivyClient</span></a></li>
+<li><a href="LivyClientFactory.html" title="org.apache.livy中的接口" target="classFrame"><span class="interfaceName">LivyClientFactory</span></a></li>
+</ul>
+<h2 title="类">类</h2>
+<ul title="类">
+<li><a href="LivyClientBuilder.html" title="org.apache.livy中的类" target="classFrame">LivyClientBuilder</a></li>
+</ul>
+<h2 title="枚举">枚举</h2>
+<ul title="枚举">
+<li><a href="JobHandle.State.html" title="org.apache.livy中的枚举" target="classFrame">JobHandle.State</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-summary.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-summary.html
new file mode 100644
index 0000000..47e794f
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-summary.html
@@ -0,0 +1,217 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>org.apache.livy (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="org.apache.livy (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li><a href="package-use.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个程序包</li>
+<li>下一个程序包</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/package-summary.html" target="_top">框架</a></li>
+<li><a href="package-summary.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="程序包" class="title">程序包&nbsp;org.apache.livy</h1>
+<div class="docSummary">
+<div class="block">Livy programmatic Java API</div>
+</div>
+<p>请参阅:&nbsp;<a href="#package.description">说明</a></p>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="接口概要表, 列表接口和解释">
+<caption><span>接口概要</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">接口</th>
+<th class="colLast" scope="col">说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口">Job</a>&lt;T&gt;</td>
+<td class="colLast">
+<div class="block">Interface for a Spark remote job.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口">JobContext</a></td>
+<td class="colLast">
+<div class="block">Holds runtime information about the job execution context.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口">JobHandle</a>&lt;T&gt;</td>
+<td class="colLast">
+<div class="block">A handle to a submitted job.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口">JobHandle.Listener</a>&lt;T&gt;</td>
+<td class="colLast">
+<div class="block">A listener for monitoring the state of the job in the remote context.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口">LivyClient</a></td>
+<td class="colLast">
+<div class="block">A client for submitting Spark-based jobs to a Livy backend.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口">LivyClientFactory</a></td>
+<td class="colLast">
+<div class="block">A factory for Livy clients.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="类概要表, 列表类和解释">
+<caption><span>类概要</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">类</th>
+<th class="colLast" scope="col">说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类">LivyClientBuilder</a></td>
+<td class="colLast">
+<div class="block">A builder for Livy clients.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="枚举概要表, 列表枚举和解释">
+<caption><span>枚举概要</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">枚举</th>
+<th class="colLast" scope="col">说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举">JobHandle.State</a></td>
+<td class="colLast">
+<div class="block">The current state of the submitted job.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+<a name="package.description">
+<!--   -->
+</a>
+<h2 title="程序包org.apache.livy的说明">程序包org.apache.livy的说明</h2>
+<div class="block">Livy programmatic Java API</div>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li><a href="package-use.html">使用</a></li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个程序包</li>
+<li>下一个程序包</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/package-summary.html" target="_top">框架</a></li>
+<li><a href="package-summary.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-tree.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-tree.html
new file mode 100644
index 0000000..d9b7f8b
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-tree.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>org.apache.livy 类分层结构 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="org.apache.livy \u7C7B\u5206\u5C42\u7ED3\u6784 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li class="navBarCell1Rev">树</li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/package-tree.html" target="_top">框架</a></li>
+<li><a href="package-tree.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">程序包org.apache.livy的分层结构</h1>
+</div>
+<div class="contentContainer">
+<h2 title="类分层结构">类分层结构</h2>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><span class="typeNameLink">LivyClientBuilder</span></a></li>
+</ul>
+</li>
+</ul>
+<h2 title="接口分层结构">接口分层结构</h2>
+<ul>
+<li type="circle">java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口"><span class="typeNameLink">Future</span></a>&lt;V&gt;
+<ul>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobHandle</span></a>&lt;T&gt;</li>
+</ul>
+</li>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobContext</span></a></li>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobHandle.Listener</span></a>&lt;T&gt;</li>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="typeNameLink">LivyClient</span></a></li>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口"><span class="typeNameLink">LivyClientFactory</span></a></li>
+<li type="circle">java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="java.io中的类或接口"><span class="typeNameLink">Serializable</span></a>
+<ul>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/Job.html" title="org.apache.livy中的接口"><span class="typeNameLink">Job</span></a>&lt;T&gt;</li>
+</ul>
+</li>
+</ul>
+<h2 title="枚举分层结构">枚举分层结构</h2>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="java.lang中的类或接口"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="java.lang中的类或接口">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="java.io中的类或接口">Serializable</a>)
+<ul>
+<li type="circle">org.apache.livy.<a href="../../../org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举"><span class="typeNameLink">JobHandle.State</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li class="navBarCell1Rev">树</li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/package-tree.html" target="_top">框架</a></li>
+<li><a href="package-tree.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-use.html b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-use.html
new file mode 100644
index 0000000..613581e
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/org/apache/livy/package-use.html
@@ -0,0 +1,174 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>程序包 org.apache.livy的使用 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u7A0B\u5E8F\u5305 org.apache.livy\u7684\u4F7F\u7528 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/package-use.html" target="_top">框架</a></li>
+<li><a href="package-use.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="程序包的使用 org.apache.livy" class="title">程序包的使用<br>org.apache.livy</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.livy">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="使用表, 列表类和解释">
+<caption><span><a href="../../../org/apache/livy/package-summary.html">org.apache.livy</a>使用的<a href="../../../org/apache/livy/package-summary.html">org.apache.livy</a>中的类</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">类和说明</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../org/apache/livy/class-use/Job.html#org.apache.livy">Job</a>
+<div class="block">Interface for a Spark remote job.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../org/apache/livy/class-use/JobContext.html#org.apache.livy">JobContext</a>
+<div class="block">Holds runtime information about the job execution context.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../org/apache/livy/class-use/JobHandle.html#org.apache.livy">JobHandle</a>
+<div class="block">A handle to a submitted job.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../org/apache/livy/class-use/JobHandle.Listener.html#org.apache.livy">JobHandle.Listener</a>
+<div class="block">A listener for monitoring the state of the job in the remote context.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../org/apache/livy/class-use/JobHandle.State.html#org.apache.livy">JobHandle.State</a>
+<div class="block">The current state of the submitted job.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../org/apache/livy/class-use/LivyClient.html#org.apache.livy">LivyClient</a>
+<div class="block">A client for submitting Spark-based jobs to a Livy backend.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../org/apache/livy/class-use/LivyClientBuilder.html#org.apache.livy">LivyClientBuilder</a>
+<div class="block">A builder for Livy clients.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="../../../org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li class="navBarCell1Rev">使用</li>
+<li><a href="package-tree.html">树</a></li>
+<li><a href="../../../deprecated-list.html">已过时</a></li>
+<li><a href="../../../index-all.html">索引</a></li>
+<li><a href="../../../help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?org/apache/livy/package-use.html" target="_top">框架</a></li>
+<li><a href="package-use.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/overview-tree.html b/site/docs/0.7.0-incubating/api/java/overview-tree.html
new file mode 100644
index 0000000..6359ac3
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/overview-tree.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>类分层结构 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u7C7B\u5206\u5C42\u7ED3\u6784 (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li class="navBarCell1Rev">树</li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">框架</a></li>
+<li><a href="overview-tree.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">所有程序包的分层结构</h1>
+<span class="packageHierarchyLabel">程序包分层结构:</span>
+<ul class="horizontal">
+<li><a href="org/apache/livy/package-tree.html">org.apache.livy</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="类分层结构">类分层结构</h2>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/LivyClientBuilder.html" title="org.apache.livy中的类"><span class="typeNameLink">LivyClientBuilder</span></a></li>
+</ul>
+</li>
+</ul>
+<h2 title="接口分层结构">接口分层结构</h2>
+<ul>
+<li type="circle">java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="java.util.concurrent中的类或接口"><span class="typeNameLink">Future</span></a>&lt;V&gt;
+<ul>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/JobHandle.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobHandle</span></a>&lt;T&gt;</li>
+</ul>
+</li>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/JobContext.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobContext</span></a></li>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/JobHandle.Listener.html" title="org.apache.livy中的接口"><span class="typeNameLink">JobHandle.Listener</span></a>&lt;T&gt;</li>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/LivyClient.html" title="org.apache.livy中的接口"><span class="typeNameLink">LivyClient</span></a></li>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/LivyClientFactory.html" title="org.apache.livy中的接口"><span class="typeNameLink">LivyClientFactory</span></a></li>
+<li type="circle">java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="java.io中的类或接口"><span class="typeNameLink">Serializable</span></a>
+<ul>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/Job.html" title="org.apache.livy中的接口"><span class="typeNameLink">Job</span></a>&lt;T&gt;</li>
+</ul>
+</li>
+</ul>
+<h2 title="枚举分层结构">枚举分层结构</h2>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="java.lang中的类或接口"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="java.lang中的类或接口">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="java.io中的类或接口">Serializable</a>)
+<ul>
+<li type="circle">org.apache.livy.<a href="org/apache/livy/JobHandle.State.html" title="org.apache.livy中的枚举"><span class="typeNameLink">JobHandle.State</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li class="navBarCell1Rev">树</li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">框架</a></li>
+<li><a href="overview-tree.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/package-list b/site/docs/0.7.0-incubating/api/java/package-list
new file mode 100644
index 0000000..96b7840
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/package-list
@@ -0,0 +1 @@
+org.apache.livy
diff --git a/site/docs/0.7.0-incubating/api/java/script.js b/site/docs/0.7.0-incubating/api/java/script.js
new file mode 100644
index 0000000..b346356
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/script.js
@@ -0,0 +1,30 @@
+function show(type)
+{
+    count = 0;
+    for (var key in methods) {
+        var row = document.getElementById(key);
+        if ((methods[key] &  type) != 0) {
+            row.style.display = '';
+            row.className = (count++ % 2) ? rowColor : altColor;
+        }
+        else
+            row.style.display = 'none';
+    }
+    updateTabs(type);
+}
+
+function updateTabs(type)
+{
+    for (var value in tabs) {
+        var sNode = document.getElementById(tabs[value][0]);
+        var spanNode = sNode.firstChild;
+        if (value == type) {
+            sNode.className = activeTableTab;
+            spanNode.innerHTML = tabs[value][1];
+        }
+        else {
+            sNode.className = tableTab;
+            spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
+        }
+    }
+}
diff --git a/site/docs/0.7.0-incubating/api/java/serialized-form.html b/site/docs/0.7.0-incubating/api/java/serialized-form.html
new file mode 100644
index 0000000..7698c56
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/serialized-form.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="zh">
+<head>
+<!-- Generated by javadoc (1.8.0_181) on Mon Feb 03 10:59:13 CST 2020 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>序列化表格 (Livy 0.7.0-incubating JavaDoc)</title>
+<meta name="date" content="2020-02-03">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="\u5E8F\u5217\u5316\u8868\u683C (Livy 0.7.0-incubating JavaDoc)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>您的浏览器已禁用 JavaScript。</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">框架</a></li>
+<li><a href="serialized-form.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="序列化表格" class="title">序列化表格</h1>
+</div>
+<div class="serializedFormContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2 title="程序包">程序包&nbsp;org.apache.livy</h2>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="跳过导航链接">跳过导航链接</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="导航">
+<li><a href="org/apache/livy/package-summary.html">程序包</a></li>
+<li>类</li>
+<li>使用</li>
+<li><a href="org/apache/livy/package-tree.html">树</a></li>
+<li><a href="deprecated-list.html">已过时</a></li>
+<li><a href="index-all.html">索引</a></li>
+<li><a href="help-doc.html">帮助</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>上一个</li>
+<li>下一个</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">框架</a></li>
+<li><a href="serialized-form.html" target="_top">无框架</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">所有类</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/site/docs/0.7.0-incubating/api/java/stylesheet.css b/site/docs/0.7.0-incubating/api/java/stylesheet.css
new file mode 100644
index 0000000..98055b2
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/java/stylesheet.css
@@ -0,0 +1,574 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+
+@import url('resources/fonts/dejavu.css');
+
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size:14px;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4A6782;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4A6782;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+}
+h1 {
+    font-size:20px;
+}
+h2 {
+    font-size:18px;
+}
+h3 {
+    font-size:16px;
+    font-style:italic;
+}
+h4 {
+    font-size:13px;
+}
+h5 {
+    font-size:12px;
+}
+h6 {
+    font-size:11px;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+    margin-top:8px;
+    line-height:1.4em;
+}
+dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+}
+table tr td dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    vertical-align:top;
+    padding-top:4px;
+}
+sup {
+    font-size:8px;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:11px;
+    z-index:200;
+    margin-top:-9px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:11px;
+    margin:0;
+}
+.topNav {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px; 
+}
+.bottomNav {
+    margin-top:10px;
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav {
+    background-color:#dee3e9;
+    float:left;
+    width:100%;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+    text-transform:uppercase;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding: 5px 6px;
+    text-transform:uppercase;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+    text-transform:uppercase;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+    text-transform:uppercase;
+}
+.navBarCell1Rev {
+    background-color:#F8981D;
+    color:#253441;
+    margin: auto 5px;
+}
+.skipNav {
+    position:absolute;
+    top:auto;
+    left:-9999px;
+    overflow:hidden;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader span{
+    margin-right:15px;
+}
+.indexHeader h1 {
+    font-size:13px;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 15px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:13px;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:12px;
+}
+.indexContainer h2 {
+    font-size:13px;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+    padding-top:2px;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+    font-size:12px;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+    margin:5px 0 10px 0px;
+    font-size:14px;
+    font-family:'DejaVu Sans Mono',monospace;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:15px;
+    line-height:1.4;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #ededed; 
+    background-color:#f8f8f8;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
+    width:100%;
+    border-left:1px solid #EEE; 
+    border-right:1px solid #EEE; 
+    border-bottom:1px solid #EEE; 
+}
+.overviewSummary, .memberSummary  {
+    padding:0px;
+}
+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#253441;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    padding-top:10px;
+    padding-left:1px;
+    margin:0px;
+    white-space:pre;
+}
+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
+.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
+.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
+.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    padding-bottom:7px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    border: none;
+    height:16px;
+}
+.memberSummary caption span.activeTableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    height:16px;
+}
+.memberSummary caption span.tableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#4D7A97;
+    height:16px;
+}
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
+    padding-top:0px;
+    padding-left:0px;
+    padding-right:0px;
+    background-image:none;
+    float:none;
+    display:inline;
+}
+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
+    display:none;
+    width:5px;
+    position:relative;
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .activeTableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative; 
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .tableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative;
+    background-color:#4D7A97;
+    float:left;
+
+}
+.overviewSummary td, .memberSummary td, .typeSummary td,
+.useSummary td, .constantsSummary td, .deprecatedSummary td {
+    text-align:left;
+    padding:0px 0px 12px 10px;
+}
+th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
+td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
+    vertical-align:top;
+    padding-right:0px;
+    padding-top:8px;
+    padding-bottom:3px;
+}
+th.colFirst, th.colLast, th.colOne, .constantsSummary th {
+    background:#dee3e9;
+    text-align:left;
+    padding:8px 3px 3px 7px;
+}
+td.colFirst, th.colFirst {
+    white-space:nowrap;
+    font-size:13px;
+}
+td.colLast, th.colLast {
+    font-size:13px;
+}
+td.colOne, th.colOne {
+    font-size:13px;
+}
+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
+.useSummary td.colFirst, .useSummary th.colFirst,
+.overviewSummary td.colOne, .overviewSummary th.colOne,
+.memberSummary td.colFirst, .memberSummary th.colFirst,
+.memberSummary td.colOne, .memberSummary th.colOne,
+.typeSummary td.colFirst{
+    width:25%;
+    vertical-align:top;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+.tableSubHeadingColor {
+    background-color:#EEEEFF;
+}
+.altColor {
+    background-color:#FFFFFF;
+}
+.rowColor {
+    background-color:#EEEEEF;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    font-style:normal;
+}
+
+div.block {
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+
+td.colLast div {
+    padding-top:0px;
+}
+
+
+td.colLast a {
+    padding-bottom:3px;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:10px;
+}
+.block {
+    display:block;
+    margin:3px 10px 2px 0px;
+    color:#474747;
+}
+.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
+.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
+.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
+    font-weight:bold;
+}
+.deprecationComment, .emphasizedPhrase, .interfaceName {
+    font-style:italic;
+}
+
+div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+    font-style:normal;
+}
+
+div.contentContainer ul.blockList li.blockList h2{
+    padding-bottom:0px;
+}
diff --git a/site/docs/0.7.0-incubating/api/scala/index.html b/site/docs/0.7.0-incubating/api/scala/index.html
new file mode 100644
index 0000000..561ab7c
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="lib/index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="lib/jquery.js"></script>
+      <script type="text/javascript" src="lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="lib/jquery.layout.js"></script>
+      <script type="text/javascript" src="lib/index.js"></script>
+      <script type="text/javascript" src="lib/scheduler.js"></script>
+    
+        </head>
+        <body>
+      <div id="library">
+        <img class="class icon" alt="class icon" src="lib/class.png" />
+        <img class="trait icon" alt="trait icon" src="lib/trait.png" />
+        <img class="object icon" alt="trait icon" src="lib/object.png" />
+        <img class="package icon" alt="trait icon" src="lib/package.png" />
+      </div>
+      <div id="browser" class="ui-layout-west">
+      <div class="ui-west-center">
+      <div id="filter">
+          <div id="textfilter"></div>
+          <div id="letters"><span>#</span><a target="template" href="index/index-a.html">A</a><span>B</span><a target="template" href="index/index-c.html">C</a><span>D</span><span>E</span><span>F</span><a target="template" href="index/index-g.html">G</a><a target="template" href="index/index-h.html">H</a><a target="template" href="index/index-i.html">I</a><span>J</span><span>K</span><a target="template" href="index/index-l.html">L</a><span>M</span><span>N</span><a target="template" href="index/index-o.html">O</a><span>P</span><span>Q</span><a target="template" href="index/index-r.html">R</a><a target="template" href="index/index-s.html">S</a><span>T</span><a target="template" href="index/index-u.html">U</a><a target="template" href="index/index-v.html">V</a><span>W</span><span>X</span><span>Y</span><span>Z</span> – <span>deprecated</span></div>
+      </div>
+      <div class="pack" id="tpl">
+            
+            <ol class="templates"></ol>
+            <ol class="packages"> <li class="pack" title="org">
+            <a class="tplshow" href="org/package.html" target="template">org</a>
+            <ol class="templates"></ol>
+            <ol class="packages"> <li class="pack" title="org.apache">
+            <a class="tplshow" href="org/apache/package.html" target="template">org.apache</a>
+            <ol class="templates"></ol>
+            <ol class="packages"> <li class="pack" title="org.apache.livy">
+            <a class="tplshow" href="org/apache/livy/package.html" target="template">org.apache.livy</a>
+            <ol class="templates"></ol>
+            <ol class="packages"> <li class="pack" title="org.apache.livy.scalaapi">
+            <a class="tplshow" href="org/apache/livy/scalaapi/package.html" target="template">org.apache.livy.scalaapi</a>
+            <ol class="templates"><li title="org.apache.livy.scalaapi.LivyScalaClient"><div class="placeholder"></div><a class="tplshow" href="org/apache/livy/scalaapi/LivyScalaClient.html" target="template"><span class="class">(class)</span><span class="tplLink">LivyScalaClient</span></a></li><li title="org.apache.livy.scalaapi.ScalaJobContext"><div class="placeholder"></div><a class="tplshow" href="org/apache/livy/scalaapi/ScalaJobContext.html" target="template"><span class="class">(class)</span><span class="tplLink">ScalaJobContext</span></a></li><li title="org.apache.livy.scalaapi.ScalaJobHandle"><div class="placeholder"></div><a class="tplshow" href="org/apache/livy/scalaapi/ScalaJobHandle.html" target="template"><span class="class">(class)</span><span class="tplLink">ScalaJobHandle</span></a></li><li title="org.apache.livy.scalaapi.ScalaWrapper"><div class="placeholder"></div><a class="tplshow" href="org/apache/livy/scalaapi/package$$ScalaWrapper.html" target="template"><span class="class">(class)</span><span class="tplLink">ScalaWrapper</span></a></li></ol>
+            <ol class="packages"> </ol>
+          </li></ol>
+          </li></ol>
+          </li></ol>
+          </li></ol>
+          </div></div><script src="index.js"></script>
+    </div>
+      <div id="content" class="ui-layout-center">
+        <iframe id="template" name="template" src="package.html"></iframe>
+      </div>
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index.js b/site/docs/0.7.0-incubating/api/scala/index.js
new file mode 100644
index 0000000..d085d75
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index.js
@@ -0,0 +1 @@
+Index.PACKAGES = {"org" : [], "org.apache" : [], "org.apache.livy" : [], "org.apache.livy.scalaapi" : [{"class" : "org\/apache\/livy\/scalaapi\/LivyScalaClient.html", "name" : "org.apache.livy.scalaapi.LivyScalaClient"}, {"class" : "org\/apache\/livy\/scalaapi\/ScalaJobContext.html", "name" : "org.apache.livy.scalaapi.ScalaJobContext"}, {"class" : "org\/apache\/livy\/scalaapi\/ScalaJobHandle.html", "name" : "org.apache.livy.scalaapi.ScalaJobHandle"}, {"class" : "org\/apache\/livy\/scalaapi\/package$$ScalaWrapper.html", "name" : "org.apache.livy.scalaapi.ScalaWrapper"}]};
\ No newline at end of file
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-a.html b/site/docs/0.7.0-incubating/api/scala/index/index-a.html
new file mode 100644
index 0000000..ae13f62
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-a.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">addFile</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a> </div>
+    </div><div class="entry">
+      <div class="name">addJar</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a> </div>
+    </div><div class="entry">
+      <div class="name">apache</div>
+      <div class="occurrences"><a href="../org/package.html" class="extype" name="org">org</a> </div>
+    </div><div class="entry">
+      <div class="name">asScalaClient</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/package$$ScalaWrapper.html" class="extype" name="org.apache.livy.scalaapi.ScalaWrapper">ScalaWrapper</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-c.html b/site/docs/0.7.0-incubating/api/scala/index/index-c.html
new file mode 100644
index 0000000..67baf67
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-c.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">createStreamingContext</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-g.html b/site/docs/0.7.0-incubating/api/scala/index/index-g.html
new file mode 100644
index 0000000..4285e81
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-g.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">getSharedVariable</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-h.html b/site/docs/0.7.0-incubating/api/scala/index/index-h.html
new file mode 100644
index 0000000..5aa4ea7
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-h.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">hivectx</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-i.html b/site/docs/0.7.0-incubating/api/scala/index/index-i.html
new file mode 100644
index 0000000..5cf5f34
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-i.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">isCompleted</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-l.html b/site/docs/0.7.0-incubating/api/scala/index/index-l.html
new file mode 100644
index 0000000..7be9f7d
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-l.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">LivyScalaClient</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a> </div>
+    </div><div class="entry">
+      <div class="name">livy</div>
+      <div class="occurrences"><a href="../org/apache/package.html" class="extype" name="org.apache">apache</a> </div>
+    </div><div class="entry">
+      <div class="name">localTmpDir</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-o.html b/site/docs/0.7.0-incubating/api/scala/index/index-o.html
new file mode 100644
index 0000000..1680423
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-o.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">onComplete</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div><div class="entry">
+      <div class="name">onJobCancelled</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div><div class="entry">
+      <div class="name">onJobQueued</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div><div class="entry">
+      <div class="name">onJobStarted</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div><div class="entry">
+      <div class="name">org</div>
+      <div class="occurrences"><a href="../package.html" class="extype" name="_root_">root</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-r.html b/site/docs/0.7.0-incubating/api/scala/index/index-r.html
new file mode 100644
index 0000000..7b54822
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-r.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">ready</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div><div class="entry">
+      <div class="name">removeSharedVariable</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div><div class="entry">
+      <div class="name">result</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div><div class="entry">
+      <div class="name">run</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-s.html b/site/docs/0.7.0-incubating/api/scala/index/index-s.html
new file mode 100644
index 0000000..b6fba74
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-s.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">ScalaJobContext</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a> </div>
+    </div><div class="entry">
+      <div class="name">ScalaJobHandle</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a> </div>
+    </div><div class="entry">
+      <div class="name">ScalaWrapper</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a> </div>
+    </div><div class="entry">
+      <div class="name">sc</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div><div class="entry">
+      <div class="name">scalaapi</div>
+      <div class="occurrences"><a href="../org/apache/livy/package.html" class="extype" name="org.apache.livy">livy</a> </div>
+    </div><div class="entry">
+      <div class="name">setSharedVariable</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div><div class="entry">
+      <div class="name">sparkSession</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div><div class="entry">
+      <div class="name">sqlctx</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div><div class="entry">
+      <div class="name">state</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div><div class="entry">
+      <div class="name">stop</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a> </div>
+    </div><div class="entry">
+      <div class="name">stopStreamingContext</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div><div class="entry">
+      <div class="name">streamingctx</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a> </div>
+    </div><div class="entry">
+      <div class="name">submit</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-u.html b/site/docs/0.7.0-incubating/api/scala/index/index-u.html
new file mode 100644
index 0000000..1279274
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-u.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">uploadFile</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a> </div>
+    </div><div class="entry">
+      <div class="name">uploadJar</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/index/index-v.html b/site/docs/0.7.0-incubating/api/scala/index/index-v.html
new file mode 100644
index 0000000..c7846ba
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/index/index-v.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy-scala-api-parent 0.7.0-incubating API</title>
+          <meta name="description" content="livy - scala - api - parent 0.7.0 - incubating API" />
+          <meta name="keywords" content="livy scala api parent 0.7.0 incubating API" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/ref-index.css" media="screen" type="text/css" rel="stylesheet" />
+      <script type="text/javascript" src="../lib/jquery.js"></script>
+    
+        </head>
+        <body><div class="entry">
+      <div class="name">value</div>
+      <div class="occurrences"><a href="../org/apache/livy/scalaapi/ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> </div>
+    </div></body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/arrow-down.png b/site/docs/0.7.0-incubating/api/scala/lib/arrow-down.png
new file mode 100644
index 0000000..7229603
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/arrow-down.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/arrow-right.png b/site/docs/0.7.0-incubating/api/scala/lib/arrow-right.png
new file mode 100644
index 0000000..b2f2935
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/arrow-right.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/class.png b/site/docs/0.7.0-incubating/api/scala/lib/class.png
new file mode 100644
index 0000000..97edbd4
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/class.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/class_big.png b/site/docs/0.7.0-incubating/api/scala/lib/class_big.png
new file mode 100644
index 0000000..cb1f638
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/class_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/class_diagram.png b/site/docs/0.7.0-incubating/api/scala/lib/class_diagram.png
new file mode 100644
index 0000000..9d7aec7
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/class_diagram.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/class_to_object_big.png b/site/docs/0.7.0-incubating/api/scala/lib/class_to_object_big.png
new file mode 100644
index 0000000..5dd6e38
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/class_to_object_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/constructorsbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/constructorsbg.gif
new file mode 100644
index 0000000..2e3f5ea
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/constructorsbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/conversionbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/conversionbg.gif
new file mode 100644
index 0000000..4be145d
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/conversionbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/defbg-blue.gif b/site/docs/0.7.0-incubating/api/scala/lib/defbg-blue.gif
new file mode 100644
index 0000000..6903833
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/defbg-blue.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/defbg-green.gif b/site/docs/0.7.0-incubating/api/scala/lib/defbg-green.gif
new file mode 100644
index 0000000..36c43be
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/defbg-green.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/diagrams.css b/site/docs/0.7.0-incubating/api/scala/lib/diagrams.css
new file mode 100644
index 0000000..5fe33f7
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/diagrams.css
@@ -0,0 +1,143 @@
+.diagram-container
+{
+	display: none;
+}
+
+.diagram
+{
+	overflow: hidden;
+	padding-top:15px;
+}
+
+.diagram svg
+{
+	display: block;
+	position: absolute;
+	visibility: hidden;
+	margin: auto;
+}
+
+.diagram-help
+{
+	float:right;
+	display:none;
+}
+
+.magnifying
+{
+	cursor: -webkit-zoom-in ! important;
+	cursor: -moz-zoom-in ! important;
+	cursor: pointer;
+}
+
+#close-link
+{
+	position: absolute;
+	z-index: 100;
+	font-family: Arial, sans-serif;
+	font-size: 10pt;
+	text-decoration: underline;
+	color: #315479;
+}
+
+#close:hover
+{
+	text-decoration: none;
+}
+
+svg a
+{
+	cursor:pointer;
+}
+
+svg text
+{
+	font-size: 10px;
+}
+
+/* try to move the node text 1px in order to be vertically
+   centered (does not work in all browsers) */
+svg .node text
+{
+	transform: translate(0px,1px);
+	-ms-transform: translate(0px,1px);
+	-webkit-transform: translate(0px,1px);
+	-o-transform: translate(0px,1px);
+	-moz-transform: translate(0px,1px);
+}
+
+/* hover effect for edges */
+
+svg .edge.over text,
+svg .edge.implicit-incoming.over polygon,
+svg .edge.implicit-outgoing.over polygon
+{
+	fill: #202020;
+}
+
+svg .edge.over path,
+svg .edge.over polygon
+{
+	stroke: #202020;
+}
+
+/* hover effect for nodes in class diagrams */
+
+svg.class-diagram .node
+{
+	opacity: 0.75;
+}
+
+svg.class-diagram .node.this
+{
+	opacity: 1.0;
+}
+
+svg.class-diagram .node.over
+{
+	opacity: 1.0;
+}
+
+svg .node.over polygon
+{
+	stroke: #202020;
+}
+
+/* hover effect for nodes in package diagrams */
+
+svg.package-diagram .node.class.over polygon,
+svg.class-diagram .node.this.class.over polygon
+{
+	fill: #098552;
+	fill: #04663e;
+}
+
+svg.package-diagram .node.trait.over polygon,
+svg.class-diagram .node.this.trait.over polygon
+{
+	fill: #3c7b9b;
+	fill: #235d7b;
+}
+
+svg.package-diagram .node.type.over polygon,
+svg.class-diagram .node.this.type.over polygon
+{
+	fill: #098552;
+	fill: #04663e;
+}
+
+
+svg.package-diagram .node.object.over polygon
+{
+	fill: #183377;
+}
+
+svg.package-diagram .node.outside.over polygon
+{
+	fill: #d4d4d4;
+}
+
+svg.package-diagram .node.default.over polygon
+{
+	fill: #d4d4d4;
+}
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/diagrams.js b/site/docs/0.7.0-incubating/api/scala/lib/diagrams.js
new file mode 100644
index 0000000..680ead7
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/diagrams.js
@@ -0,0 +1,324 @@
+/**
+ * JavaScript functions enhancing the SVG diagrams.
+ * 
+ * @author Damien Obrist
+ */
+
+var diagrams = {};
+
+/**
+ * Initializes the diagrams in the main window.
+ */
+$(document).ready(function()
+{
+	// hide diagrams in browsers not supporting SVG
+	if(Modernizr && !Modernizr.inlinesvg)
+		return;
+
+	// only execute this in the main window
+	if(diagrams.isPopup)
+		return;
+
+	if($("#content-diagram").length)
+		$("#inheritance-diagram").css("padding-bottom", "20px");
+
+	$(".diagram-container").css("display", "block");
+
+	$(".diagram").each(function() {
+		// store initial dimensions
+		$(this).data("width", $("svg", $(this)).width());
+		$(this).data("height", $("svg", $(this)).height());
+		// store unscaled clone of SVG element
+		$(this).data("svg", $(this).get(0).childNodes[0].cloneNode(true));
+	});
+	
+	// make diagram visible, hide container
+	$(".diagram").css("display", "none");
+	$(".diagram svg").css({
+		"position": "static",
+		"visibility": "visible",
+		"z-index": "auto"
+	});
+
+	// enable linking to diagrams
+	if($(location).attr("hash") == "#inheritance-diagram") {
+		diagrams.toggle($("#inheritance-diagram-container"), true);
+	} else if($(location).attr("hash") == "#content-diagram") {
+		diagrams.toggle($("#content-diagram-container"), true);
+	}
+
+	$(".diagram-link").click(function() {
+		diagrams.toggle($(this).parent());
+	});
+
+	// register resize function
+	$(window).resize(diagrams.resize);
+
+	// don't bubble event to parent div
+	// when clicking on a node of a resized
+	// diagram
+	$("svg a").click(function(e) {
+		e.stopPropagation();
+	});
+
+	diagrams.initHighlighting();
+});
+
+/**
+ * Initializes the diagrams in the popup.
+ */
+diagrams.initPopup = function(id)
+{
+	// copy diagram from main window
+	if(!jQuery.browser.msie)
+		$("body").append(opener.$("#" + id).data("svg"));
+
+	// positioning
+	$("svg").css("position", "absolute");
+	$(window).resize(function()
+	{
+		var svg_w = $("svg").css("width").replace("px", "");
+		var svg_h = $("svg").css("height").replace("px", "");
+		var x = $(window).width() / 2 - svg_w / 2;
+		if(x < 0) x = 0;
+		var y = $(window).height() / 2 - svg_h / 2;
+		if(y < 0) y = 0;
+		$("svg").css("left", x + "px");
+		$("svg").css("top", y + "px");
+	});
+	$(window).resize();
+
+	diagrams.initHighlighting();
+	$("svg a").click(function(e) {
+		opener.diagrams.redirectFromPopup(this.href.baseVal);
+		window.close();
+	});
+	$(document).keyup(function(e) {
+		if (e.keyCode == 27) window.close();
+	});
+}
+
+/**
+ * Initializes highlighting for nodes and edges.
+ */
+diagrams.initHighlighting = function()
+{
+	// helper function since $.hover doesn't work in IE
+
+	function hover(elements, fn)
+	{
+		elements.mouseover(fn);
+		elements.mouseout(fn);
+	}
+
+	// inheritance edges
+
+	hover($("svg .edge.inheritance"), function(evt){
+		var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass;
+		var parts = $(this).attr("id").split("_");
+		toggleClass($("#" + parts[0] + "_" + parts[1]));
+		toggleClass($("#" + parts[0] + "_" + parts[2]));
+		toggleClass($(this));
+	});
+
+	// nodes
+
+	hover($("svg .node"), function(evt){
+		var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass;
+		toggleClass($(this));
+		var parts = $(this).attr("id").split("_");
+		var index = parts[1];
+		$("svg#" + parts[0] + " .edge.inheritance").each(function(){
+			var parts2 = $(this).attr("id").split("_");
+			if(parts2[1] == index)
+			{
+				toggleClass($("#" + parts2[0] + "_" + parts2[2]));
+				toggleClass($(this));
+			} else if(parts2[2] == index)
+			{
+				toggleClass($("#" + parts2[0] + "_" + parts2[1]));
+				toggleClass($(this));
+			}
+		});
+	});
+
+	// incoming implicits
+
+	hover($("svg .node.implicit-incoming"), function(evt){
+		var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass;
+		toggleClass($(this));
+		toggleClass($("svg .edge.implicit-incoming"));
+		toggleClass($("svg .node.this"));
+	});
+
+	hover($("svg .edge.implicit-incoming"), function(evt){
+		var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass;
+		toggleClass($(this));
+		toggleClass($("svg .node.this"));
+		$("svg .node.implicit-incoming").each(function(){
+			toggleClass($(this));
+		});
+	});
+	
+	// implicit outgoing nodes
+
+	hover($("svg .node.implicit-outgoing"), function(evt){
+		var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass;
+		toggleClass($(this));
+		toggleClass($("svg .edge.implicit-outgoing"));
+		toggleClass($("svg .node.this"));
+	});
+
+	hover($("svg .edge.implicit-outgoing"), function(evt){
+		var toggleClass = evt.type == "mouseout" ? diagrams.removeClass : diagrams.addClass;
+		toggleClass($(this));
+		toggleClass($("svg .node.this"));
+		$("svg .node.implicit-outgoing").each(function(){
+			toggleClass($(this));
+		});
+	});
+};
+
+/**
+ * Resizes the diagrams according to the available width.
+ */
+diagrams.resize = function()
+{
+	// available width
+	var availableWidth = $("body").width() - 20;
+
+	$(".diagram-container").each(function() {
+		// unregister click event on whole div
+		$(".diagram", this).unbind("click");
+		var diagramWidth = $(".diagram", this).data("width");
+		var diagramHeight = $(".diagram", this).data("height");
+
+		if(diagramWidth > availableWidth)
+		{
+			// resize diagram
+			var height = diagramHeight / diagramWidth * availableWidth;
+			$(".diagram svg", this).width(availableWidth);
+			$(".diagram svg", this).height(height);
+
+			// register click event on whole div
+			$(".diagram", this).click(function() {
+				diagrams.popup($(this));
+			});
+			$(".diagram", this).addClass("magnifying");
+		}
+		else
+		{
+			// restore full size of diagram
+			$(".diagram svg", this).width(diagramWidth);
+			$(".diagram svg", this).height(diagramHeight);
+			// don't show custom cursor any more
+			$(".diagram", this).removeClass("magnifying");
+		}
+	});
+};
+
+/**
+ * Shows or hides a diagram depending on its current state.
+ */
+diagrams.toggle = function(container, dontAnimate)
+{
+	// change class of link
+	$(".diagram-link", container).toggleClass("open");
+	// get element to show / hide
+	var div = $(".diagram", container);
+	if (div.is(':visible'))
+	{
+		$(".diagram-help", container).hide();
+		div.unbind("click");
+		div.removeClass("magnifying");
+		div.slideUp(100);
+	}
+	else
+	{
+		diagrams.resize();
+		if(dontAnimate)
+			div.show();
+		else
+			div.slideDown(100);
+		$(".diagram-help", container).show();
+	}
+};
+
+/**
+ * Opens a popup containing a copy of a diagram.
+ */
+diagrams.windows = {};
+diagrams.popup = function(diagram)
+{
+	var id = diagram.attr("id");
+	if(!diagrams.windows[id] || diagrams.windows[id].closed) {
+		var title = $(".symbol .name", $("#signature")).text();
+		// cloning from parent window to popup somehow doesn't work in IE
+		// therefore include the SVG as a string into the HTML
+		var svgIE = jQuery.browser.msie ? $("<div />").append(diagram.data("svg")).html() : "";
+		var html = '' +
+		'<?xml version="1.0" encoding="UTF-8"?>\n' +
+		'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n' + 
+		'<html>\n' +
+		'	<head>\n' +
+		'		<title>' + title + '</title>\n' +
+		'		<link href="' + $("#diagrams-css").attr("href") + '" media="screen" type="text/css" rel="stylesheet" />\n' +
+		'		<script type="text/javascript" src="' + $("#jquery-js").attr("src") + '"></script>\n' +
+		'		<script type="text/javascript" src="' + $("#diagrams-js").attr("src") + '"></script>\n' +
+		'		<script type="text/javascript">\n' +
+		'			diagrams.isPopup = true;\n' +
+		'		</script>\n' +
+		'	</head>\n' +
+		'	<body onload="diagrams.initPopup(\'' + id + '\');">\n' +
+		'		<a href="#" onclick="window.close();" id="close-link">Close this window</a>\n' +
+		'		' + svgIE + '\n' +
+		'	</body>\n' +
+		'</html>';
+
+		var padding = 30;
+		var screenHeight = screen.availHeight;
+		var screenWidth = screen.availWidth;
+		var w = Math.min(screenWidth, diagram.data("width") + 2 * padding);
+		var h = Math.min(screenHeight, diagram.data("height") + 2 * padding);
+		var left = (screenWidth - w) / 2;
+		var top = (screenHeight - h) / 2;
+		var parameters = "height=" + h + ", width=" + w + ", left=" + left + ", top=" + top + ", scrollbars=yes, location=no, resizable=yes";
+		var win = window.open("about:blank", "_blank", parameters);
+		win.document.open();
+		win.document.write(html);
+		win.document.close();
+		diagrams.windows[id] = win;
+	}
+	win.focus();
+};
+
+/**
+ * This method is called from within the popup when a node is clicked.
+ */
+diagrams.redirectFromPopup = function(url)
+{
+	window.location = url;
+};
+
+/**
+ * Helper method that adds a class to a SVG element.
+ */
+diagrams.addClass = function(svgElem, newClass) {
+	newClass = newClass || "over";
+	var classes = svgElem.attr("class");
+	if ($.inArray(newClass, classes.split(/\s+/)) == -1) {
+		classes += (classes ? ' ' : '') + newClass;
+		svgElem.attr("class", classes);
+	}
+};
+
+/**
+ * Helper method that removes a class from a SVG element.
+ */
+diagrams.removeClass = function(svgElem, oldClass) {
+	oldClass = oldClass || "over";
+	var classes = svgElem.attr("class");
+	classes = $.grep(classes.split(/\s+/), function(n, i) { return n != oldClass; }).join(' ');
+	svgElem.attr("class", classes);
+};
+
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/filter_box_left.png b/site/docs/0.7.0-incubating/api/scala/lib/filter_box_left.png
new file mode 100644
index 0000000..0e8c893
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/filter_box_left.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/filter_box_left2.gif b/site/docs/0.7.0-incubating/api/scala/lib/filter_box_left2.gif
new file mode 100644
index 0000000..b9b4907
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/filter_box_left2.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/filter_box_right.png b/site/docs/0.7.0-incubating/api/scala/lib/filter_box_right.png
new file mode 100644
index 0000000..f127e35
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/filter_box_right.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/filterbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/filterbg.gif
new file mode 100644
index 0000000..542ba4a
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/filterbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/filterboxbarbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/filterboxbarbg.gif
new file mode 100644
index 0000000..b5075c1
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/filterboxbarbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/filterboxbarbg.png b/site/docs/0.7.0-incubating/api/scala/lib/filterboxbarbg.png
new file mode 100644
index 0000000..d613cf5
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/filterboxbarbg.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/filterboxbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/filterboxbg.gif
new file mode 100644
index 0000000..ae2f858
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/filterboxbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/fullcommenttopbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/fullcommenttopbg.gif
new file mode 100644
index 0000000..a0d93f4
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/fullcommenttopbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/index.css b/site/docs/0.7.0-incubating/api/scala/lib/index.css
new file mode 100644
index 0000000..3e352a9
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/index.css
@@ -0,0 +1,339 @@
+* {
+  color: inherit;
+  font-size: 10pt;
+  text-decoration: none;
+        font-family: Arial, sans-serif;
+  border-width: 0px;
+  padding: 0px;
+  margin: 0px;
+}
+
+a {
+  cursor: pointer;
+}
+
+a:hover {
+  text-decoration: underline;
+}
+
+h1 {
+  display: none;
+}
+
+.selected {
+  -moz-box-shadow: inset 0px 5px 10px rgba(58, 88, 97, .36);
+  -webkit-box-shadow: inset 0px 5px 10px rgba(58, 88, 97, .36);
+  border-top: solid 1px rgba(119, 138, 153, 0.8);
+  border-bottom: solid 1px rgba(151, 173, 191, 0.4);
+  background-color: #ced2d9;
+  margin: -1px 0px;
+}
+
+/*.letters {
+  font-family: monospace;
+  font-size: 2pt;
+  padding: 5px;
+  background-color: #DADADA;
+  text-shadow: #ffffff 0 1px 0;
+}*/
+
+#library {
+    display: none;
+}
+
+#browser {
+  top: 0px;
+  left: 0px;
+  bottom: 0px;
+  width: 100%;
+  display: block;
+  position: fixed;
+}
+
+#filter {
+  position: absolute;
+  display: block;
+/*  padding: 5px;*/
+  right: 0;
+  left: 0;
+  top: 0;
+  background-image:url('filterbg.gif');
+  background-repeat:repeat-x;
+  background-color: #ededee; /* light gray */
+  /*background-color: #DADADA;*/
+  border:1px solid #bbbbbb;
+  border-top:0;
+  border-left:0;
+  border-right:0;
+}
+
+#textfilter {
+  position: relative;
+  display: block;
+  height: 20px;
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+
+#textfilter > .pre {
+  display: block;
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 23px;
+  width: 21px;
+  background: url("filter_box_left.png");
+}
+
+#textfilter > .input {
+  display: block;
+  position: absolute;
+  top: 0;
+  right: 20px;
+  left: 20px;
+}
+
+#textfilter > .input > input {
+  height: 20px;
+  padding: 1px;
+  font-weight: bold;
+  color: #000000;
+  background: #ffffff url("filterboxbarbg.png") repeat-x bottom left;
+  width: 100%;
+}
+
+#textfilter > .post {
+  display: block;
+  position: absolute;
+  top: 0;
+  right: 0;
+  height: 23px;
+  width: 21px;
+  background: url("filter_box_right.png");
+}
+
+/*#textfilter {
+  position: relative;
+  display: block;
+    height: 20px;
+  margin-bottom: 5px;
+}
+
+#textfilter > .pre {
+    display: block;
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 20px;
+    width: 20px;
+    background: url("filter_box_left.png");
+}
+
+#textfilter > .input {
+  display: block;
+    position: absolute;
+    top: 0;
+    right: 20px;
+    left: 20px;
+}
+
+#textfilter > .input > input {
+  height: 16px;
+  padding: 2px;
+  font-weight: bold;
+  color: darkblue;
+  background-color: white;
+    width: 100%;
+}
+
+#textfilter > .post {
+    display: block;
+    position: absolute;
+    top: 0;
+    right: 0;
+    height: 20px;
+    width: 20px;
+    background: url("filter_box_right.png");
+}*/
+
+#focusfilter {
+  position: relative;
+  text-align: center;
+  display: block;
+  padding: 5px;
+  background-color: #fffebd; /* light yellow*/
+  text-shadow: #ffffff 0 1px 0;
+}
+
+#focusfilter .focuscoll {
+  font-weight: bold;
+  text-shadow: #ffffff 0 1px 0;
+}
+
+#focusfilter img {
+  bottom: -2px;
+  position: relative;
+}
+
+#kindfilter {
+  position: relative;
+  display: block;
+  padding: 5px;
+/*  background-color: #999;*/
+  text-align: center;
+}
+
+#kindfilter > a {
+ color: black; 
+/* text-decoration: underline;*/
+ text-shadow: #ffffff 0 1px 0;
+
+}
+
+#kindfilter > a:hover {
+  color: #4C4C4C; 
+  text-decoration: none;
+  text-shadow: #ffffff 0 1px 0;
+}
+
+#letters {
+  position: relative;
+  text-align: center;
+  padding-bottom: 5px;
+  border:1px solid #bbbbbb;
+  border-top:0;
+  border-left:0;
+  border-right:0;
+}
+
+#letters > a, #letters > span {
+/*  font-family: monospace;*/
+  color: #858484;
+  font-weight: bold;
+  font-size: 8pt;
+  text-shadow: #ffffff 0 1px 0;
+  padding-right: 2px;
+}
+
+#letters > span {
+  color: #bbb;
+}
+  
+#tpl {
+  display: block;
+  position: fixed;
+  overflow: auto;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  top: 5px;
+  position: absolute;
+  display: block;
+}
+
+#tpl .packhide {
+  display: block;
+  float: right;
+  font-weight: normal;
+  color: white;
+}
+
+#tpl .packfocus {
+  display: block;
+  float: right;
+  font-weight: normal;
+  color: white;
+}
+
+#tpl .packages > ol {
+  background-color: #dadfe6;
+  /*margin-bottom: 5px;*/
+}
+
+/*#tpl .packages > ol > li {
+  margin-bottom: 1px;
+}*/
+
+#tpl .packages > li > a {
+  padding: 0px 5px;
+}
+
+#tpl .packages > li > a.tplshow {
+  display: block;
+  color: white;
+  font-weight: bold;
+  display: block;
+  text-shadow: #000000 0 1px 0;
+}
+
+#tpl ol > li.pack {
+  padding: 3px 5px;
+  background: url("packagesbg.gif");
+  background-repeat:repeat-x;
+  min-height: 14px;
+  background-color: #6e808e;
+}
+
+#tpl ol > li {
+  display: block;
+}
+
+#tpl .templates > li {
+  padding-left: 5px;
+  min-height: 18px;
+}
+
+#tpl ol > li .icon {
+  padding-right: 5px;
+  bottom: -2px;
+  position: relative;
+}
+
+#tpl .templates div.placeholder {
+  padding-right: 5px;
+  width: 13px;
+  display: inline-block;
+}
+
+#tpl .templates span.tplLink {
+  padding-left: 5px;
+}
+
+#content {
+  border-left-width: 1px;
+  border-left-color: black;
+  border-left-style: white;
+  right: 0px;
+  left: 0px;
+  bottom: 0px;
+  top: 0px;
+  position: fixed;
+  margin-left: 300px;
+  display: block;
+  -webkit-overflow-scrolling: touch;
+}
+
+#content > iframe {
+  display: block;
+  height: 100%;
+  width: 100%;
+}
+
+.ui-layout-pane {
+  background: #FFF;
+  overflow: auto;
+}
+
+.ui-layout-resizer {
+  background-image:url('filterbg.gif');
+  background-repeat:repeat-x;
+  background-color: #ededee; /* light gray */
+  border:1px solid #bbbbbb;
+  border-top:0;
+  border-bottom:0;
+  border-left: 0;
+}
+
+.ui-layout-toggler {
+    background: #AAA;
+}
\ No newline at end of file
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/index.js b/site/docs/0.7.0-incubating/api/scala/lib/index.js
new file mode 100644
index 0000000..cf81f7f
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/index.js
@@ -0,0 +1,577 @@
+// © 2009–2010 EPFL/LAMP
+// code by Gilles Dubochet with contributions by Johannes Rudolph, "spiros" and Marcin Kubala
+
+var topLevelTemplates = undefined;
+var topLevelPackages = undefined;
+
+var scheduler = undefined;
+
+var kindFilterState = undefined;
+var focusFilterState = undefined;
+
+var title = $(document).attr('title');
+
+var lastFragment = "";
+
+$(document).ready(function() {
+    $('body').layout({
+        west__size: '20%',
+        center__maskContents: true
+    });
+    $('#browser').layout({
+        center__paneSelector: ".ui-west-center"
+        //,center__initClosed:true
+        ,north__paneSelector: ".ui-west-north"
+    });
+    $('iframe').bind("load", function(){
+        try {
+            var subtitle = $(this).contents().find('title').text();
+            $(document).attr('title', (title ? title + " - " : "") + subtitle);
+        } catch (e) {
+            // Chrome doesn't allow reading the iframe's contents when
+            // used on the local file system.
+        }
+        setUrlFragmentFromFrameSrc();
+    });
+
+    // workaround for IE's iframe sizing lack of smartness
+    if($.browser.msie) {
+        function fixIFrame() {
+            $('iframe').height($(window).height() )
+        }
+        $('iframe').bind("load",fixIFrame)
+        $('iframe').bind("resize",fixIFrame)
+    }
+
+    scheduler = new Scheduler();
+    scheduler.addLabel("init", 1);
+    scheduler.addLabel("focus", 2);
+    scheduler.addLabel("filter", 4);
+
+    prepareEntityList();
+
+    configureTextFilter();
+    configureKindFilter();
+    configureEntityList();
+
+    setFrameSrcFromUrlFragment();
+
+    // If the url fragment changes, adjust the src of iframe "template".
+    $(window).bind('hashchange', function() {
+      if(lastFragment != window.location.hash) {
+        lastFragment = window.location.hash;
+        setFrameSrcFromUrlFragment();
+      }
+    });
+});
+
+// Set the iframe's src according to the fragment of the current url.
+// fragment = "#scala.Either" => iframe url = "scala/Either.html"
+// fragment = "#scala.Either@isRight:Boolean" => iframe url = "scala/Either.html#isRight:Boolean"
+// fragment = "#scalaz.iteratee.package@>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]" => iframe url = "scalaz/iteratee/package.html#>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]"
+function setFrameSrcFromUrlFragment() {
+
+    function extractLoc(fragment) {
+        var loc = fragment.split('@')[0].replace(/\./g, "/");
+        if (loc.indexOf(".html") < 0) {
+            loc += ".html";
+        }
+        return loc;
+    }
+
+    function extractMemberSig(fragment) {
+        var splitIdx = fragment.indexOf('@');
+        if (splitIdx < 0) {
+            return;
+        }
+        return fragment.substr(splitIdx + 1);
+    }
+
+    var fragment = location.hash.slice(1);
+    if (fragment) {
+        var locWithMemeberSig = extractLoc(fragment);
+        var memberSig = extractMemberSig(fragment);
+        if (memberSig) {
+            locWithMemeberSig += "#" + memberSig;
+        }
+        frames["template"].location.replace(location.protocol + locWithMemeberSig);
+    } else {
+        console.log("empty fragment detected");
+        frames["template"].location.replace("package.html");
+    }
+}
+
+// Set the url fragment according to the src of the iframe "template".
+// iframe url = "scala/Either.html"  =>  url fragment = "#scala.Either"
+// iframe url = "scala/Either.html#isRight:Boolean"  =>  url fragment = "#scala.Either@isRight:Boolean"
+// iframe url = "scalaz/iteratee/package.html#>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]" => fragment = "#scalaz.iteratee.package@>@>[E,A]=scalaz.iteratee.package.Iteratee[E,A]"
+function setUrlFragmentFromFrameSrc() {
+  try {
+    var commonLength = location.pathname.lastIndexOf("/");
+    var frameLocation = frames["template"].location;
+    var relativePath = frameLocation.pathname.slice(commonLength + 1);
+
+    if(!relativePath || frameLocation.pathname.indexOf("/") < 0)
+      return;
+
+    // Add #, remove ".html" and replace "/" with "."
+    fragment = "#" + relativePath.replace(/\.html$/, "").replace(/\//g, ".");
+
+    // Add the frame's hash after an @
+    if(frameLocation.hash) fragment += ("@" + frameLocation.hash.slice(1));
+
+    // Use replace to not add history items
+    lastFragment = fragment;
+    location.replace(fragment);
+  }
+  catch(e) {
+    // Chrome doesn't allow reading the iframe's location when
+    // used on the local file system.
+  }
+}
+
+var Index = {};
+
+(function (ns) {
+    function openLink(t, type) {
+        var href;
+        if (type == 'object') {
+            href = t['object'];
+        } else {
+            href = t['class'] || t['trait'] || t['case class'] || t['type'];
+        }
+        return [
+            '<a class="tplshow" target="template" href="',
+            href,
+            '"><img width="13" height="13" class="',
+            type,
+            ' icon" src="lib/',
+            type,
+            '.png" />'
+        ].join('');
+    }
+
+    function createPackageHeader(pack) {
+        return [
+            '<li class="pack">',
+            '<a class="packfocus">focus</a><a class="packhide">hide</a>',
+            '<a class="tplshow" target="template" href="',
+            pack.replace(/\./g, '/'),
+            '/package.html">',
+            pack,
+            '</a></li>'
+        ].join('');
+    };
+
+    function createListItem(template) {
+        var inner = '';
+
+
+        if (template.object) {
+            inner += openLink(template, 'object');
+        }
+
+        if (template['class'] || template['trait'] || template['case class'] || template['type']) {
+            inner += (inner == '') ?
+                '<div class="placeholder" />' : '</a>';
+            inner += openLink(template, template['trait'] ? 'trait' : template['type'] ? 'type' : 'class');
+        } else {
+            inner += '<div class="placeholder"/>';
+        }
+
+        return [
+            '<li>',
+            inner,
+            '<span class="tplLink">',
+            template.name.replace(/^.*\./, ''),
+            '</span></a></li>'
+        ].join('');
+    }
+
+
+    ns.createPackageTree = function (pack, matched, focused) {
+        var html = $.map(matched, function (child, i) {
+            return createListItem(child);
+        }).join('');
+
+        var header;
+        if (focused && pack == focused) {
+            header = '';
+        } else {
+            header = createPackageHeader(pack);
+        }
+
+        return [
+            '<ol class="packages">',
+            header,
+            '<ol class="templates">',
+            html,
+            '</ol></ol>'
+        ].join('');
+    }
+
+    ns.keys = function (obj) {
+        var result = [];
+        var key;
+        for (key in obj) {
+            result.push(key);
+        }
+        return result;
+    }
+
+    var hiddenPackages = {};
+
+    function subPackages(pack) {
+        return $.grep($('#tpl ol.packages'), function (element, index) {
+            var pack = $('li.pack > .tplshow', element).text();
+            return pack.indexOf(pack + '.') == 0;
+        });
+    }
+
+    ns.hidePackage = function (ol) {
+        var selected = $('li.pack > .tplshow', ol).text();
+        hiddenPackages[selected] = true;
+
+        $('ol.templates', ol).hide();
+
+        $.each(subPackages(selected), function (index, element) {
+            $(element).hide();
+        });
+    }
+
+    ns.showPackage = function (ol, state) {
+        var selected = $('li.pack > .tplshow', ol).text();
+        hiddenPackages[selected] = false;
+
+        $('ol.templates', ol).show();
+
+        $.each(subPackages(selected), function (index, element) {
+            $(element).show();
+
+            // When the filter is in "packs" state,
+            // we don't want to show the `.templates`
+            var key = $('li.pack > .tplshow', element).text();
+            if (hiddenPackages[key] || state == 'packs') {
+                $('ol.templates', element).hide();
+            }
+        });
+    }
+
+})(Index);
+
+function configureEntityList() {
+    kindFilterSync();
+    configureHideFilter();
+    configureFocusFilter();
+    textFilter();
+}
+
+/* Updates the list of entities (i.e. the content of the #tpl element) from the raw form generated by Scaladoc to a
+   form suitable for display. In particular, it adds class and object etc. icons, and it configures links to open in
+   the right frame. Furthermore, it sets the two reference top-level entities lists (topLevelTemplates and
+   topLevelPackages) to serve as reference for resetting the list when needed.
+   Be advised: this function should only be called once, on page load. */
+function prepareEntityList() {
+    var classIcon = $("#library > img.class");
+    var traitIcon = $("#library > img.trait");
+    var typeIcon = $("#library > img.type");
+    var objectIcon = $("#library > img.object");
+    var packageIcon = $("#library > img.package");
+
+    $('#tpl li.pack > a.tplshow').attr("target", "template");
+    $('#tpl li.pack').each(function () {
+        $("span.class", this).each(function() { $(this).replaceWith(classIcon.clone()); });
+        $("span.trait", this).each(function() { $(this).replaceWith(traitIcon.clone()); });
+        $("span.type", this).each(function() { $(this).replaceWith(typeIcon.clone()); });
+        $("span.object", this).each(function() { $(this).replaceWith(objectIcon.clone()); });
+        $("span.package", this).each(function() { $(this).replaceWith(packageIcon.clone()); });
+    });
+    $('#tpl li.pack')
+        .prepend("<a class='packhide'>hide</a>")
+        .prepend("<a class='packfocus'>focus</a>");
+}
+
+/* Handles all key presses while scrolling around with keyboard shortcuts in left panel */
+function keyboardScrolldownLeftPane() {
+    scheduler.add("init", function() {
+        $("#textfilter input").blur();
+        var $items = $("#tpl li");
+        $items.first().addClass('selected');
+
+        $(window).bind("keydown", function(e) {
+            var $old = $items.filter('.selected'),
+                $new;
+
+            switch ( e.keyCode ) {
+
+            case 9: // tab
+                $old.removeClass('selected');
+                break;
+
+            case 13: // enter
+                $old.removeClass('selected');
+                var $url = $old.children().filter('a:last').attr('href');
+                $("#template").attr("src",$url);
+                break;
+
+            case 27: // escape
+                $old.removeClass('selected');
+                $(window).unbind(e);
+                $("#textfilter input").focus();
+
+                break;
+
+            case 38: // up
+                $new = $old.prev();
+
+                if (!$new.length) {
+                    $new = $old.parent().prev();
+                }
+
+                if ($new.is('ol') && $new.children(':last').is('ol')) {
+                    $new = $new.children().children(':last');
+                } else if ($new.is('ol')) {
+                    $new = $new.children(':last');
+                }
+
+                break;
+
+            case 40: // down
+                $new = $old.next();
+                if (!$new.length) {
+                    $new = $old.parent().parent().next();
+                }
+                if ($new.is('ol')) {
+                    $new = $new.children(':first');
+                }
+                break;
+            }
+
+            if ($new.is('li')) {
+                $old.removeClass('selected');
+                $new.addClass('selected');
+            } else if (e.keyCode == 38) {
+                $(window).unbind(e);
+                $("#textfilter input").focus();
+            }
+        });
+    });
+}
+
+/* Configures the text filter  */
+function configureTextFilter() {
+    scheduler.add("init", function() {
+        $("#textfilter").append("<span class='pre'/><span class='input'><input id='index-input' type='text' accesskey='/'/></span><span class='post'/>");
+        var input = $("#textfilter input");
+        resizeFilterBlock();
+        input.bind('keyup', function(event) {
+            if (event.keyCode == 27) { // escape
+                input.attr("value", "");
+            }
+            if (event.keyCode == 40) { // down arrow
+                $(window).unbind("keydown");
+                keyboardScrolldownLeftPane();
+                return false;
+            }
+            textFilter();
+        });
+        input.bind('keydown', function(event) {
+            if (event.keyCode == 9) { // tab
+                $("#template").contents().find("#mbrsel-input").focus();
+                input.attr("value", "");
+                return false;
+            }
+            textFilter();
+        });
+        input.focus(function(event) { input.select(); });
+    });
+    scheduler.add("init", function() {
+        $("#textfilter > .post").click(function(){
+            $("#textfilter input").attr("value", "");
+            textFilter();
+        });
+    });
+}
+
+function compilePattern(query) {
+    var escaped = query.replace(/([\.\*\+\?\|\(\)\[\]\\])/g, '\\$1');
+
+    if (query.toLowerCase() != query) {
+        // Regexp that matches CamelCase subbits: "BiSe" is
+        // "[a-z]*Bi[a-z]*Se" and matches "BitSet", "ABitSet", ...
+        return new RegExp(escaped.replace(/([A-Z])/g,"[a-z]*$1"));
+    }
+    else { // if query is all lower case make a normal case insensitive search
+        return new RegExp(escaped, "i");
+    }
+}
+
+// Filters all focused templates and packages. This function should be made less-blocking.
+//   @param query The string of the query
+function textFilter() {
+    var query = $("#textfilter input").attr("value") || '';
+    var queryRegExp = compilePattern(query);
+
+    // if we are filtering on types, then we have to display types
+    // ("display packages only" is not possible when filtering)
+    if (query !== "") {
+        kindFilter("all");
+    }
+
+    // Three things trigger a reload of the left pane list:
+    // typeof textFilter.lastQuery === "undefined" <-- first load, there is nothing yet in the left pane
+    // textFilter.lastQuery !== query              <-- the filter text has changed
+    // focusFilterState != null                    <-- a package has been "focused"
+    if ((typeof textFilter.lastQuery === "undefined") || (textFilter.lastQuery !== query) || (focusFilterState != null)) {
+
+        textFilter.lastQuery = query;
+
+        scheduler.clear("filter");
+
+        $('#tpl').html('');
+
+        var index = 0;
+
+        var searchLoop = function () {
+            var packages = Index.keys(Index.PACKAGES).sort();
+
+            while (packages[index]) {
+                var pack = packages[index];
+                var children = Index.PACKAGES[pack];
+                index++;
+
+                if (focusFilterState) {
+                    if (pack == focusFilterState ||
+                        pack.indexOf(focusFilterState + '.') == 0) {
+                        ;
+                    } else {
+                        continue;
+                    }
+                }
+
+                var matched = $.grep(children, function (child, i) {
+                    return queryRegExp.test(child.name);
+                });
+
+                if (matched.length > 0) {
+                    $('#tpl').append(Index.createPackageTree(pack, matched,
+                                                             focusFilterState));
+                    scheduler.add('filter', searchLoop);
+                    return;
+                }
+            }
+
+            $('#tpl a.packfocus').click(function () {
+                focusFilter($(this).parent().parent());
+            });
+            configureHideFilter();
+        };
+
+        scheduler.add('filter', searchLoop);
+    }
+}
+
+/* Configures the hide tool by adding the hide link to all packages. */
+function configureHideFilter() {
+    $('#tpl li.pack a.packhide').click(function () {
+        var packhide = $(this)
+        var action = packhide.text();
+
+        var ol = $(this).parent().parent();
+
+        if (action == "hide") {
+            Index.hidePackage(ol);
+            packhide.text("show");
+        }
+        else {
+            Index.showPackage(ol, kindFilterState);
+            packhide.text("hide");
+        }
+        return false;
+    });
+}
+
+/* Configures the focus tool by adding the focus bar in the filter box (initially hidden), and by adding the focus
+   link to all packages. */
+function configureFocusFilter() {
+    scheduler.add("init", function() {
+        focusFilterState = null;
+        if ($("#focusfilter").length == 0) {
+            $("#filter").append("<div id='focusfilter'>focused on <span class='focuscoll'></span> <a class='focusremove'><img class='icon' src='lib/remove.png'/></a></div>");
+            $("#focusfilter > .focusremove").click(function(event) {
+                textFilter();
+
+                $("#focusfilter").hide();
+                $("#kindfilter").show();
+                resizeFilterBlock();
+                focusFilterState = null;
+            });
+            $("#focusfilter").hide();
+            resizeFilterBlock();
+        }
+    });
+    scheduler.add("init", function() {
+        $('#tpl li.pack a.packfocus').click(function () {
+            focusFilter($(this).parent());
+            return false;
+        });
+    });
+}
+
+/* Focuses the entity index on a specific package. To do so, it will copy the sub-templates and sub-packages of the
+   focuses package into the top-level templates and packages position of the index. The original top-level
+     @param package The <li> element that corresponds to the package in the entity index */
+function focusFilter(package) {
+    scheduler.clear("filter");
+
+    var currentFocus = $('li.pack > .tplshow', package).text();
+    $("#focusfilter > .focuscoll").empty();
+    $("#focusfilter > .focuscoll").append(currentFocus);
+
+    $("#focusfilter").show();
+    $("#kindfilter").hide();
+    resizeFilterBlock();
+    focusFilterState = currentFocus;
+    kindFilterSync();
+
+    textFilter();
+}
+
+function configureKindFilter() {
+    scheduler.add("init", function() {
+        kindFilterState = "all";
+        $("#filter").append("<div id='kindfilter'><a>display packages only</a></div>");
+        $("#kindfilter > a").click(function(event) { kindFilter("packs"); });
+        resizeFilterBlock();
+    });
+}
+
+function kindFilter(kind) {
+    if (kind == "packs") {
+        kindFilterState = "packs";
+        kindFilterSync();
+        $("#kindfilter > a").replaceWith("<a>display all entities</a>");
+        $("#kindfilter > a").click(function(event) { kindFilter("all"); });
+    }
+    else {
+        kindFilterState = "all";
+        kindFilterSync();
+        $("#kindfilter > a").replaceWith("<a>display packages only</a>");
+        $("#kindfilter > a").click(function(event) { kindFilter("packs"); });
+    }
+}
+
+/* Applies the kind filter. */
+function kindFilterSync() {
+    if (kindFilterState == "all" || focusFilterState != null) {
+        $("#tpl a.packhide").text('hide');
+        $("#tpl ol.templates").show();
+    } else {
+        $("#tpl a.packhide").text('show');
+        $("#tpl ol.templates").hide();
+    }
+}
+
+function resizeFilterBlock() {
+    $("#tpl").css("top", $("#filter").outerHeight(true));
+}
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/jquery-ui.js b/site/docs/0.7.0-incubating/api/scala/lib/jquery-ui.js
new file mode 100644
index 0000000..faab0cf
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/jquery-ui.js
@@ -0,0 +1,6 @@
+/*! jQuery UI - v1.9.0 - 2012-10-05
+* http://jqueryui.com
+* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.slider.js, jquery.ui.sortable.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
+* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */
+
+(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"||e.expr.filters.hidden(this)}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.0",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(n[u]=e.isPlainObject(a)?e.widget.extend({},n[u],a):a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():new i(o,this)}),f}},e.Widget=function(e,t){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on({remove:"destroy"}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n){n?(t=e(t),this.bindings=this.bindings.add(t)):(n=t,t=this.element);var r=this;e.each(n,function(n,i){function s(){if(r.options.disabled===!0||e(this).hasClass("ui-state-disabled"))return;return(typeof i=="string"?r[i]:i).apply(r,arguments)}typeof i!="string"&&(s.guid=i.guid=i.guid||s.guid||e.guid++);var o=n.match(/^(\w+)\s*(.*)$/),u=o[1]+r.eventNamespace,a=o[2];a?r.widget().delegate(a,u,s):t.bind(u,s)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.0",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.browser.msie||document.documentMode>=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.0",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n),r=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(r.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),!r.collapsible&&r.active===!1&&(r.active=0),r.active<0&&(r.active+=this.headers.length),this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.originalHeight=this.element[0].style.height,this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(n){var r=e(this),i=r.attr("id"),s=r.next(),o=s.attr("id");i||(i=t+"-header-"+n,r.attr("id",i)),o||(o=t+"-panel-"+n,s.attr("id",o)),r.attr("aria-controls",o),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(r.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&(this.element.css("height",this.originalHeight),e.css("height",""))},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,n,r=this.options.heightStyle,i=this.element.parent();this.element.css("height",this.originalHeight),r==="fill"?(e.support.minHeight||(n=i.css("overflow"),i.css("overflow","hidden")),t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),n&&i.css("overflow",n),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):r==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).height("").height())}).height(t)),r!=="content"&&this.element.height(this.element.height())},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={};if(!t)return;e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._on(this.headers,n)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.uiBackCompat!==!1&&(function(e,t){e.extend(t.options,{navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}});var n=t._create;t._create=function(){if(this.options.navigation){var t=this,r=this.element.find(this.options.header),i=r.next(),s=r.add(i).find("a").filter(this.options.navigationFilter)[0];s&&r.add(i).each(function(n){if(e.contains(this,s))return t.options.active=Math.floor(n/2),!1})}n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{heightStyle:null,autoHeight:!0,clearStyle:!1,fillSpace:!1});var n=t._create,r=t._setOption;e.extend(t,{_create:function(){this.options.heightStyle=this.options.heightStyle||this._mergeHeightStyle(),n.call(this)},_setOption:function(e,t){if(e==="autoHeight"||e==="clearStyle"||e==="fillSpace")this.options.heightStyle=this._mergeHeightStyle();r.apply(this,arguments)},_mergeHeightStyle:function(){var e=this.options;if(e.fillSpace)return"fill";if(e.clearStyle)return"content";if(e.autoHeight)return"auto"}})}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options.icons,{activeHeader:null,headerSelected:"ui-icon-triangle-1-s"});var n=t._createIcons;t._createIcons=function(){this.options.icons&&(this.options.icons.activeHeader=this.options.icons.activeHeader||this.options.icons.headerSelected),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){t.activate=t._activate;var n=t._findActive;t._findActive=function(e){return e===-1&&(e=!1),e&&typeof e!="number"&&(e=this.headers.index(this.headers.filter(e)),e===-1&&(e=!1)),n.call(this,e)}}(jQuery,jQuery.ui.accordion.prototype),jQuery.ui.accordion.prototype.resize=jQuery.ui.accordion.prototype.refresh,function(e,t){e.extend(t.options,{change:null,changestart:null});var n=t._trigger;t._trigger=function(e,t,r){var i=n.apply(this,arguments);return i?(e==="beforeActivate"?i=n.call(this,"changestart",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel}):e==="activate"&&(i=n.call(this,"change",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel})),i):!1}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{animate:null,animated:"slide"});var n=t._create;t._create=function(){var e=this.options;e.animate===null&&(e.animated?e.animated==="slide"?e.animate=300:e.animated==="bounceslide"?e.animate={duration:200,down:{easing:"easeOutBounce",duration:1e3}}:e.animate=e.animated:e.animate=!1),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype))})(jQuery);(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.0",defaultElement:"<input>",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on({keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e,t){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(e){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.9.0",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c="ui-state-hover"+(a?"":" ui-state-active"),h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;e(this).addClass("ui-state-hover"),this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).toggleClass("ui-state-active"),t.buttonElement.attr("aria-pressed",t.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is(":disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.9.0",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.0"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$('<span class="'+this._appendClass+'">'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$('<button type="button"></button>').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+o+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="'"&&!p("'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"'":p("'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="'"&&!u("'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"'":u("'")?l+="'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="'"&&!r("'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":r("'")?t+="'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>":i?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>":i?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">'+this._get(e,"closeText")+"</button>",x=r?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(n?S:"")+(this._isInRange(e,E)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+='<div class="ui-datepicker-group';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+='">'}U+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+R+'">'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var z=N?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+C[X]+'">'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+='<td class="'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+((!tt||_)&&et[2]?' title="'+et[2]+'"':"")+(nt?"":' data-handler="selectDay" data-event="click" data-month="'+G.getMonth()+'" data-year="'+G.getFullYear()+'"')+">"+(tt&&!_?"&#xa0;":nt?'<span class="ui-state-default">'+G.getDate()+"</span>":'<a class="ui-state-default'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+'" href="#">'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),F+=U}B+=F}return B+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='<div class="ui-datepicker-title">',h="";if(s||!a)h+='<span class="ui-datepicker-month">'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+='<option value="'+v+'"'+(v==t?' selected="selected"':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?"&#xa0;":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+='<span class="ui-datepicker-year">'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';for(;b<=w;b++)e.yearshtml+='<option value="'+b+'"'+(b==n?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?"&#xa0;":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.0",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var n="ui-dialog ui-widget ui-widget-content ui-corner-all ",r={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.0",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var t=this,r=this.options,i=r.title||"&#160;",s=(this.uiDialog=e("<div>")).addClass(n+r.dialogClass).css({display:"none",outline:0,zIndex:r.zIndex}).attr("tabIndex",-1).keydown(function(n){r.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===e.ui.keyCode.ESCAPE&&(t.close(n),n.preventDefault())}).mousedown(function(e){t.moveToTop(!1,e)}).appendTo("body"),o=this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(s),u=(this.uiDialogTitlebar=e("<div>")).addClass("ui-dialog-titlebar  ui-widget-header  ui-corner-all  ui-helper-clearfix").prependTo(s),a=e("<a href='#'></a>").addClass("ui-dialog-titlebar-close  ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(u),f=(this.uiDialogTitlebarCloseText=e("<span>")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(a),l=e("<span>").uniqueId().addClass("ui-dialog-title").html(i).prependTo(u),c=(this.uiDialogButtonPane=e("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),h=(this.uiButtonSet=e("<div>")).addClass("ui-dialog-buttonset").appendTo(c);s.attr({role:"dialog","aria-labelledby":l.attr("id")}),u.find("*").add(u).disableSelection(),this._hoverable(a),this._focusable(a),r.draggable&&e.fn.draggable&&this._makeDraggable(),r.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(r.buttons),this._isOpen=!1,e.fn.bgiframe&&s.bgiframe(),this._on(s,{keydown:function(t){if(!r.modal||t.keyCode!==e.ui.keyCode.TAB)return;var n=e(":tabbable",s),i=n.filter(":first"),o=n.filter(":last");if(t.target===o[0]&&!t.shiftKey)return i.focus(1),!1;if(t.target===i[0]&&t.shiftKey)return o.focus(1),!1}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var n=this,r,i;if(!this._isOpen)return;if(!1===this._trigger("beforeClose",t))return;return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this.uiDialog.hide(this.options.hide,function(){n._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(r=0,e(".ui-dialog").each(function(){this!==n.uiDialog[0]&&(i=e(this).css("z-index"),isNaN(i)||(r=Math.max(r,i)))}),e.ui.dialog.maxZ=r),this},isOpen:function(){return this._isOpen},moveToTop:function(t,n){var r=this.options,i;return r.modal&&!t||!r.stack&&!r.modal?this._trigger("focus",n):(r.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=r.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),i={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(i),this._trigger("focus",n),this)},open:function(){if(this._isOpen)return;var t,n=this.options,r=this.uiDialog;return this._size(),this._position(n.position),r.show(n.show),this.overlay=n.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=r)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this},_createButtons:function(t){var n,r,i=this,s=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),typeof t=="object"&&t!==null&&e.each(t,function(){return!(s=!0)}),s?(e.each(t,function(t,n){n=e.isFunction(n)?{click:n,text:t}:n;var r=e("<button type='button'>").attr(n,!0).unbind("click").click(function(){n.click.apply(i.element[0],arguments)}).appendTo(i.uiButtonSet);e.fn.button&&r.button()}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)):this.uiDialog.removeClass("ui-dialog-buttons")},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s)),e.ui.dialog.overlay.resize()}})},_makeResizable:function(n){function u(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}n=n===t?this.options.resizable:n;var r=this,i=this.options,s=this.uiDialog.css("position"),o=typeof n=="string"?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:o,start:function(t,n){e(this).addClass("ui-dialog-resizing"),r._trigger("resizeStart",t,u(n))},resize:function(e,t){r._trigger("resize",e,u(t))},stop:function(t,n){e(this).removeClass("ui-dialog-resizing"),i.height=e(this).height(),i.width=e(this).width(),r._trigger("resizeStop",t,u(n)),e.ui.dialog.overlay.resize()}}).css("position",s).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(t){var n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n.join(" "),at:n.join(" "),offset:r.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()},_setOptions:function(t){var n=this,s={},o=!1;e.each(t,function(e,t){n._setOption(e,t),e in r&&(o=!0),e in i&&(s[e]=t)}),o&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(t,r){var i,s,o=this.uiDialog;switch(t){case"buttons":this._createButtons(r);break;case"closeText":this.uiDialogTitlebarCloseText.text(""+r);break;case"dialogClass":o.removeClass(this.options.dialogClass).addClass(n+r);break;case"disabled":r?o.addClass("ui-dialog-disabled"):o.removeClass("ui-dialog-disabled");break;case"draggable":i=o.is(":data(draggable)"),i&&!r&&o.draggable("destroy"),!i&&r&&this._makeDraggable();break;case"position":this._position(r);break;case"resizable":s=o.is(":data(resizable)"),s&&!r&&o.resizable("destroy"),s&&typeof r=="string"&&o.resizable("option","handles",r),!s&&r!==!1&&this._makeResizable(r);break;case"title":e(".ui-dialog-title",this.uiDialogTitlebar).html(""+(r||"&#160;"))}this._super(t,r)},_size:function(){var t,n,r,i=this.options,s=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),n=Math.max(0,i.minHeight-t),i.height==="auto"?e.support.minHeight?this.element.css({minHeight:n,height:"auto"}):(this.uiDialog.show(),r=this.element.css("height","auto").height(),s||this.uiDialog.hide(),this.element.height(Math.max(r,n))):this.element.height(Math.max(i.height-t,0)),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),e.extend(e.ui.dialog,{uuid:0,maxZ:0,getTitleId:function(e){var t=e.attr("id");return t||(this.uuid+=1,t=this.uuid),"ui-dialog-title-"+t},overlay:function(t){this.$el=e.ui.dialog.overlay.create(t)}}),e.extend(e.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:e.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "),create:function(t){this.instances.length===0&&(setTimeout(function(){e.ui.dialog.overlay.instances.length&&e(document).bind(e.ui.dialog.overlay.events,function(t){if(e(t.target).zIndex()<e.ui.dialog.overlay.maxZ)return!1})},1),e(window).bind("resize.dialog-overlay",e.ui.dialog.overlay.resize));var n=this.oldInstances.pop()||e("<div>").addClass("ui-widget-overlay");return e(document).bind("keydown.dialog-overlay",function(r){var i=e.ui.dialog.overlay.instances;i.length!==0&&i[i.length-1]===n&&t.options.closeOnEscape&&!r.isDefaultPrevented()&&r.keyCode&&r.keyCode===e.ui.keyCode.ESCAPE&&(t.close(r),r.preventDefault())}),n.appendTo(document.body).css({width:this.width(),height:this.height()}),e.fn.bgiframe&&n.bgiframe(),this.instances.push(n),n},destroy:function(t){var n=e.inArray(t,this.instances),r=0;n!==-1&&this.oldInstances.push(this.instances.splice(n,1)[0]),this.instances.length===0&&e([document,window]).unbind(".dialog-overlay"),t.height(0).width(0).remove(),e.each(this.instances,function(){r=Math.max(r,this.css("z-index"))}),this.maxZ=r},height:function(){var t,n;return e.browser.msie?(t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),n=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),t<n?e(window).height()+"px":t+"px"):e(document).height()+"px"},width:function(){var t,n;return e.browser.msie?(t=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),n=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),t<n?e(window).width()+"px":t+"px"):e(document).width()+"px"},resize:function(){var t=e([]);e.each(e.ui.dialog.overlay.instances,function(){t=t.add(this)}),t.css({width:0,height:0}).css({width:e.ui.dialog.overlay.width(),height:e.ui.dialog.overlay.height()})}}),e.extend(e.ui.dialog.overlay.prototype,{destroy:function(){e.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.0",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.browser.msie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.left<u[0]&&(s=u[0]+this.offset.click.left),t.pageY-this.offset.click.top<u[1]&&(o=u[1]+this.offset.click.top),t.pageX-this.offset.click.left>u[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.top<u[1]||f-this.offset.click.top>u[3]?f-this.offset.click.top<u[1]?f+n.grid[1]:f-n.grid[1]:f:f;var l=n.grid[0]?this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX;s=u?l-this.offset.click.left<u[0]||l-this.offset.click.left>u[2]?l-this.offset.click.left<u[0]?l+n.grid[0]:l-n.grid[0]:l:l}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(e){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("draggable"),i=this,s=function(t){var n=this.offset.click.top,r=this.offset.click.left,i=this.positionAbs.top,s=this.positionAbs.left,o=t.height,u=t.width,a=t.top,f=t.left;return e.ui.isOver(i+n,s+r,a,f,o,u)};e.each(r.sortables,function(s){this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n){var r=e("body"),i=e(this).data("draggable").options;r.css("cursor")&&(i._cursor=r.css("cursor")),r.css("cursor",i.cursor)},stop:function(t,n){var r=e(this).data("draggable").options;r._cursor&&e("body").css("cursor",r._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(t,n){var r=e(this).data("draggable");r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"&&(r.overflowOffset=r.scrollParent.offset())},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=!1;if(r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"){if(!i.axis||i.axis!="x")r.overflowOffset.top+r.scrollParent[0].offsetHeight-t.pageY<i.scrollSensitivity?r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop+i.scrollSpeed:t.pageY-r.overflowOffset.top<i.scrollSensitivity&&(r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop-i.scrollSpeed);if(!i.axis||i.axis!="y")r.overflowOffset.left+r.scrollParent[0].offsetWidth-t.pageX<i.scrollSensitivity?r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft+i.scrollSpeed:t.pageX-r.overflowOffset.left<i.scrollSensitivity&&(r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft-i.scrollSpeed)}else{if(!i.axis||i.axis!="x")t.pageY-e(document).scrollTop()<i.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<i.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+i.scrollSpeed));if(!i.axis||i.axis!="y")t.pageX-e(document).scrollLeft()<i.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<i.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+i.scrollSpeed))}s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(r,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n){var r=e(this).data("draggable"),i=r.options;r.snapElements=[],e(i.snap.constructor!=String?i.snap.items||":data(draggable)":i.snap).each(function(){var t=e(this),n=t.offset();this!=r.element[0]&&r.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})})},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=i.snapTolerance,o=n.offset.left,u=o+r.helperProportions.width,a=n.offset.top,f=a+r.helperProportions.height;for(var l=r.snapElements.length-1;l>=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s<o&&o<h+s&&p-s<a&&a<d+s||c-s<o&&o<h+s&&p-s<f&&f<d+s||c-s<u&&u<h+s&&p-s<a&&a<d+s||c-s<u&&u<h+s&&p-s<f&&f<d+s)){r.snapElements[l].snapping&&r.options.snap.release&&r.options.snap.release.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=!1;continue}if(i.snapMode!="inner"){var v=Math.abs(p-f)<=s,m=Math.abs(d-a)<=s,g=Math.abs(c-u)<=s,y=Math.abs(h-o)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p-r.helperProportions.height,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c-r.helperProportions.width}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h}).left-r.margins.left)}var b=v||m||g||y;if(i.snapMode!="outer"){var v=Math.abs(p-a)<=s,m=Math.abs(d-f)<=s,g=Math.abs(c-o)<=s,y=Math.abs(h-u)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d-r.helperProportions.height,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h-r.helperProportions.width}).left-r.margins.left)}!r.snapElements[l].snapping&&(v||m||g||y||b)&&r.options.snap.snap&&r.options.snap.snap.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=v||m||g||y||b}}}),e.ui.plugin.add("draggable","stack",{start:function(t,n){var r=e(this).data("draggable").options,i=e.makeArray(e(r.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!i.length)return;var s=parseInt(i[0].style.zIndex)||0;e(i).each(function(e){this.style.zIndex=s+e}),this[0].style.zIndex=s+i.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);(function(e,t){e.widget("ui.droppable",{version:"1.9.0",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var t=this.options,n=t.accept;this.isover=0,this.isout=1,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];for(var n=0;n<t.length;n++)t[n]==this&&t.splice(n,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t=="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current;if(!r||(r.currentItem||r.element)[0]==this.element[0])return!1;var i=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope==r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(t,n,r){if(!n.offset)return!1;var i=(t.positionAbs||t.position.absolute).left,s=i+t.helperProportions.width,o=(t.positionAbs||t.position.absolute).top,u=o+t.helperProportions.height,a=n.offset.left,f=a+n.proportions.width,l=n.offset.top,c=l+n.proportions.height;switch(r){case"fit":return a<=i&&s<=f&&l<=o&&u<=c;case"intersect":return a<i+t.helperProportions.width/2&&s-t.helperProportions.width/2<f&&l<o+t.helperProportions.height/2&&u-t.helperProportions.height/2<c;case"pointer":var h=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,p=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,d=e.ui.isOver(p,h,l,a,n.proportions.height,n.proportions.width);return d;case"touch":return(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c)&&(i>=a&&i<=f||s>=a&&s<=f||i<a&&s>f);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;o<r.length;o++){if(r[o].options.disabled||t&&!r[o].accept.call(r[o].element[0],t.currentItem||t.element))continue;for(var u=0;u<s.length;u++)if(s[u]==r[o].element[0]){r[o].proportions.height=0;continue e}r[o].visible=r[o].element.css("display")!="none";if(!r[o].visible)continue;i=="mousedown"&&r[o]._activate.call(r[o],n),r[o].offset=r[o].element.offset(),r[o].proportions={width:r[o].element[0].offsetWidth,height:r[o].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r=e.ui.intersect(t,this,this.options.tolerance),i=!r&&this.isover==1?"isout":r&&this.isover==0?"isover":null;if(!i)return;var s;if(this.options.greedy){var o=this.options.scope,u=this.element.parents(":data(droppable)").filter(function(){return e.data(this,"droppable").options.scope===o});u.length&&(s=e.data(u[0],"droppable"),s.greedyChild=i=="isover"?1:0)}s&&i=="isover"&&(s.isover=0,s.isout=1,s._out.call(s,n)),this[i]=1,this[i=="isout"?"isover":"isout"]=0,this[i=="isover"?"_over":"_out"].call(this,n),s&&i=="isout"&&(s.isout=0,s.isover=1,s._over.call(s,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);jQuery.effects||function(e,t){var n=e.uiBackCompat!==!1,r="ui-effects-";e.effects={effect:{}},function(t,n){function p(e,t,n){var r=a[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function d(e){var n=o(),r=n._rgba=[];return e=e.toLowerCase(),h(s,function(t,i){var s,o=i.re.exec(e),a=o&&i.parse(o),f=i.space||"rgba";if(a)return s=n[f](a),n[u[f].cache]=s[u[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&t.extend(r,c.transparent),n):c[e]}function v(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),i=/^([\-+])=\s*(\d+\.?\d*)/,s=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],o=t.Color=function(e,n,r,i){return new t.Color.fn.parse(e,n,r,i)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},a={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},f=o.support={},l=t("<p>")[0],c,h=t.each;l.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=l.style.backgroundColor.indexOf("rgba")>-1,h(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(r,i,s,a){if(r===n)return this._rgba=[null,null,null,null],this;if(r.jquery||r.nodeType)r=t(r).css(i),i=n;var f=this,l=t.type(r),v=this._rgba=[],m;i!==n&&(r=[r,i,s,a],l="array");if(l==="string")return this.parse(d(r)||c._default);if(l==="array")return h(u.rgba.props,function(e,t){v[t.idx]=p(r[t.idx],t)}),this;if(l==="object")return r instanceof o?h(u,function(e,t){r[t.cache]&&(f[t.cache]=r[t.cache].slice())}):h(u,function(t,n){var i=n.cache;h(n.props,function(e,t){if(!f[i]&&n.to){if(e==="alpha"||r[e]==null)return;f[i]=n.to(f._rgba)}f[i][t.idx]=p(r[e],t,!0)}),f[i]&&e.inArray(null,f[i].slice(0,3))<0&&(f[i][3]=1,n.from&&(f._rgba=n.from(f[i])))}),this},is:function(e){var t=o(e),n=!0,r=this;return h(u,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],h(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return h(u,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=o(e),r=n._space(),i=u[r],s=this.alpha()===0?o("transparent"):this,f=s[i.cache]||i.to(s._rgba),l=f.slice();return n=n[i.cache],h(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],u=a[r.type]||{};if(o===null)return;s===null?l[i]=o:(u.mod&&(o-s>u.mod/2?s+=u.mod:s-o>u.mod/2&&(s-=u.mod)),l[i]=p((o-s)*t+s,r))}),this[r](l)},blend:function(e){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=o(e)._rgba;return o(t.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var e="rgba(",n=t.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),e="rgb("),e+n.join()+")"},toHslaString:function(){var e="hsla(",n=t.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),e="hsl("),e+n.join()+")"},toHexString:function(e){var n=this._rgba.slice(),r=n.pop();return e&&n.push(~~(r*255)),"#"+t.map(n,function(e,t){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,u.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,f===0||f===1?c=f:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},u.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s,u,a,f;return[Math.round(v(o,s,t+1/3)*255),Math.round(v(o,s,t)*255),Math.round(v(o,s,t-1/3)*255),i]},h(u,function(e,r){var s=r.props,u=r.cache,a=r.to,f=r.from;o.fn[e]=function(e){a&&!this[u]&&(this[u]=a(this._rgba));if(e===n)return this[u].slice();var r,i=t.type(e),l=i==="array"||i==="object"?e:arguments,c=this[u].slice();return h(s,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=c[t.idx]),c[t.idx]=p(n,t)}),f?(r=o(f(c)),r[u]=c,r):o(c)},h(s,function(n,r){if(o.fn[n])return;o.fn[n]=function(s){var o=t.type(s),u=n==="alpha"?this._hsla?"hsla":"rgba":e,a=this[u](),f=a[r.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=t.type(s)),s==null&&r.empty?this:(o==="string"&&(l=i.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[r.idx]=s,this[u](a)))}})}),h(r,function(e,n){t.cssHooks[n]={set:function(e,r){var i,s,u="";if(t.type(r)!=="string"||(i=d(r))){r=o(i||r);if(!f.rgba&&r._rgba[3]!==1){s=n==="backgroundColor"?e.parentNode:e;while((u===""||u==="transparent")&&s&&s.style)try{u=t.css(s,"backgroundColor"),s=s.parentNode}catch(a){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{e.style[n]=r}catch(r){}}},t.fx.step[n]=function(e){e.colorInit||(e.start=o(e.elem,n),e.end=o(e.end),e.colorInit=!0),t.cssHooks[n].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return h(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},c=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(){var t=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,n={},r,i,s;if(t&&t.length&&t[0]&&t[t[0]]){s=t.length;while(s--)r=t[s],typeof t[r]=="string"&&(n[e.camelCase(r)]=t[r])}else for(r in t)typeof t[r]=="string"&&(n[r]=t[r]);return n}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").andSelf():r;f=f.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i.call(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=jQuery.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function i(n,r,i,s){e.isPlainObject(n)&&(r=n,n=n.effect),n={effect:n},r===t&&(r={}),e.isFunction(r)&&(s=r,i=null,r={});if(typeof r=="number"||e.fx.speeds[r])s=i,i=r,r={};return e.isFunction(i)&&(s=i,i=null),r&&e.extend(n,r),i=i||r.duration,n.duration=e.fx.off?0:typeof i=="number"?i:i in e.fx.speeds?e.fx.speeds[i]:e.fx.speeds._default,n.complete=s||r.complete,n}function s(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]?n&&e.effects[t]?!1:!0:!1}e.extend(e.effects,{version:"1.9.0",save:function(e,t){for(var n=0;n<t.length;n++)t[n]!==null&&e.data(r+t[n],e[0].style[t[n]])},restore:function(e,n){var i,s;for(s=0;s<n.length;s++)n[s]!==null&&(i=e.data(r+n[s]),i===t&&(i=""),e.css(n[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(t,r,s,o){function h(t){function s(){e.isFunction(r)&&r.call(n[0]),e.isFunction(t)&&t()}var n=e(this),r=u.complete,i=u.mode;(n.is(":hidden")?i==="hide":i==="show")?s():l.call(n[0],u,s)}var u=i.apply(this,arguments),a=u.mode,f=u.queue,l=e.effects.effect[u.effect],c=!l&&n&&e.effects[u.effect];return e.fx.off||!l&&!c?a?this[a](u.duration,u.complete):this.each(function(){u.complete&&u.complete.call(this)}):l?f===!1?this.each(h):this.queue(f||"fx",h):c.call(this,{options:u,duration:u.duration,callback:u.complete,mode:u.mode})},_show:e.fn.show,show:function(e){if(s(e))return this._show.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(s(e))return this._hide.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(s(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height","overflow","opacity"],s=["position","top","bottom","left","right","overflow","opacity"],o=["width","height","overflow"],u=["fontSize"],a=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],f=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],l=e.effects.setMode(r,t.mode||"effect"),c=t.restore||l!=="effect",h=t.scale||"both",p=t.origin||["middle","center"],d,v,m,g=r.css("position");l==="show"&&r.show(),d={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},r.from=t.from||d,r.to=t.to||d,m={from:{y:r.from.height/d.height,x:r.from.width/d.width},to:{y:r.to.height/d.height,x:r.to.width/d.width}};if(h==="box"||h==="both")m.from.y!==m.to.y&&(i=i.concat(a),r.from=e.effects.setTransition(r,a,m.from.y,r.from),r.to=e.effects.setTransition(r,a,m.to.y,r.to)),m.from.x!==m.to.x&&(i=i.concat(f),r.from=e.effects.setTransition(r,f,m.from.x,r.from),r.to=e.effects.setTransition(r,f,m.to.x,r.to));(h==="content"||h==="both")&&m.from.y!==m.to.y&&(i=i.concat(u),r.from=e.effects.setTransition(r,u,m.from.y,r.from),r.to=e.effects.setTransition(r,u,m.to.y,r.to)),e.effects.save(r,c?i:s),r.show(),e.effects.createWrapper(r),r.css("overflow","hidden").css(r.from),p&&(v=e.effects.getBaseline(p,d),r.from.top=(d.outerHeight-r.outerHeight())*v.y,r.from.left=(d.outerWidth-r.outerWidth())*v.x,r.to.top=(d.outerHeight-r.to.outerHeight)*v.y,r.to.left=(d.outerWidth-r.to.outerWidth)*v.x),r.css(r.from);if(h==="content"||h==="both")a=a.concat(["marginTop","marginBottom"]).concat(u),f=f.concat(["marginLeft","marginRight"]),o=i.concat(a).concat(f),r.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width()};c&&e.effects.save(n,o),n.from={height:r.height*m.from.y,width:r.width*m.from.x},n.to={height:r.height*m.to.y,width:r.width*m.to.x},m.from.y!==m.to.y&&(n.from=e.effects.setTransition(n,a,m.from.y,n.from),n.to=e.effects.setTransition(n,a,m.to.y,n.to)),m.from.x!==m.to.x&&(n.from=e.effects.setTransition(n,f,m.from.x,n.from),n.to=e.effects.setTransition(n,f,m.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){c&&e.effects.restore(n,o)})});r.animate(r.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){r.to.opacity===0&&r.css("opacity",r.from.opacity),l==="hide"&&r.hide(),e.effects.restore(r,c?i:s),c||(g==="static"?r.css({position:"relative",top:r.to.top,left:r.to.left}):e.each(["top","left"],function(e,t){r.css(t,function(t,n){var i=parseInt(n,10),s=e?r.to.left:r.to.top;return n==="auto"?s+"px":i+s+"px"})})),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery);(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.0",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus+":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"});t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),r.each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);(function(e,t){e.widget("ui.progressbar",{version:"1.9.0",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){e==="value"&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return typeof e!="number"&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);(function(e,t){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,n=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=n.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var r=this.handles.split(",");this.handles={};for(var i=0;i<r.length;i++){var s=e.trim(r[i]),o="ui-resizable-"+s,u=e('<div class="ui-resizable-handle '+o+'"></div>');u.css({zIndex:n.zIndex}),"se"==s&&u.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(u)}}this._renderAxis=function(t){t=t||this.element;for(var n in this.handles){this.handles[n].constructor==String&&(this.handles[n]=e(this.handles[n],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var r=e(this.handles[n],this.element),i=0;i=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth();var s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");t.css(s,i),this._proportionallyResize()}if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),n.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(n.disabled)return;e(this).removeClass("ui-resizable-autohide"),t._handles.show()}).mouseleave(function(){if(n.disabled)return;t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var n=this.element;n.after(this.originalElement.css({position:n.css("position"),width:n.outerWidth(),height:n.outerHeight(),top:n.css("top"),left:n.css("left")})).remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var n=!1;for(var r in this.handles)e(this.handles[r])[0]==t.target&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var r=this.options,i=this.element.position(),s=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(s.is(".ui-draggable")||/absolute/.test(s.css("position")))&&s.css({position:"absolute",top:i.top,left:i.left}),this._renderProxy();var o=n(this.helper.css("left")),u=n(this.helper.css("top"));r.containment&&(o+=e(r.containment).scrollLeft()||0,u+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:u},this.size=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalPosition={left:o,top:u},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof r.aspectRatio=="number"?r.aspectRatio:this.originalSize.width/this.originalSize.height||1;var a=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor",a=="auto"?this.axis+"-resize":a),s.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(e){var t=this.helper,n=this.options,r={},i=this,s=this.originalMousePosition,o=this.axis,u=e.pageX-s.left||0,a=e.pageY-s.top||0,f=this._change[o];if(!f)return!1;var l=f.apply(this,[e,u,a]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)l=this._updateRatio(l,e);return l=this._respectSize(l,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n=this.options,r=this;if(this._helper){var i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:r.sizeDiff.height,u=s?0:r.sizeDiff.width,a={width:r.helper.width()-u,height:r.helper.height()-o},f=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,l=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;n.animate||this.element.css(e.extend(a,{top:l,left:f})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t=this.options,n,i,s,o,u;u={minWidth:r(t.minWidth)?t.minWidth:0,maxWidth:r(t.maxWidth)?t.maxWidth:Infinity,minHeight:r(t.minHeight)?t.minHeight:0,maxHeight:r(t.maxHeight)?t.maxHeight:Infinity};if(this._aspectRatio||e)n=u.minHeight*this.aspectRatio,s=u.minWidth/this.aspectRatio,i=u.maxHeight*this.aspectRatio,o=u.maxWidth/this.aspectRatio,n>u.minWidth&&(u.minWidth=n),s>u.minHeight&&(u.minHeight=s),i<u.maxWidth&&(u.maxWidth=i),o<u.maxHeight&&(u.maxHeight=o);this._vBoundaries=u},_updateCache:function(e){var t=this.options;this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e,t){var n=this.options,i=this.position,s=this.size,o=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),o=="sw"&&(e.left=i.left+(s.width-e.width),e.top=null),o=="nw"&&(e.top=i.top+(s.height-e.height),e.left=i.left+(s.width-e.width)),e},_respectSize:function(e,t){var n=this.helper,i=this._vBoundaries,s=this._aspectRatio||t.shiftKey,o=this.axis,u=r(e.width)&&i.maxWidth&&i.maxWidth<e.width,a=r(e.height)&&i.maxHeight&&i.maxHeight<e.height,f=r(e.width)&&i.minWidth&&i.minWidth>e.width,l=r(e.height)&&i.minHeight&&i.minHeight>e.height;f&&(e.width=i.minWidth),l&&(e.height=i.minHeight),u&&(e.width=i.maxWidth),a&&(e.height=i.maxHeight);var c=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,p=/sw|nw|w/.test(o),d=/nw|ne|n/.test(o);f&&p&&(e.left=c-i.minWidth),u&&p&&(e.left=c-i.maxWidth),l&&d&&(e.top=h-i.minHeight),a&&d&&(e.top=h-i.maxHeight);var v=!e.width&&!e.height;return v&&!e.left&&e.top?e.top=null:v&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){var t=this.options;if(!this._proportionallyResizeElements.length)return;var n=this.helper||this.element;for(var r=0;r<this._proportionallyResizeElements.length;r++){var i=this._proportionallyResizeElements[r];if(!this.borderDif){var s=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],o=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];this.borderDif=e.map(s,function(e,t){var n=parseInt(e,10)||0,r=parseInt(o[t],10)||0;return n+r})}i.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var r=e.browser.msie&&e.browser.version<7,i=r?1:0,s=r?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+s,height:this.element.outerHeight()+s,position:"absolute",left:this.elementOffset.left-i+"px",top:this.elementOffset.top-i+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t,n){return{width:this.originalSize.width+t}},w:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{top:s.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof i.alsoResize=="object"&&!i.alsoResize.parentNode?i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)}):s(i.alsoResize)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(t,n){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r._proportionallyResizeElements,o=s.length&&/textarea/i.test(s[0].nodeName),u=o&&e.ui.hasScroll(s[0],"left")?0:r.sizeDiff.height,a=o?0:r.sizeDiff.width,f={width:r.size.width-a,height:r.size.height-u},l=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,c=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;r.element.animate(e.extend(f,c&&l?{top:c,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var n={width:parseInt(r.element.css("width"),10),height:parseInt(r.element.css("height"),10),top:parseInt(r.element.css("top"),10),left:parseInt(r.element.css("left"),10)};s&&s.length&&e(s[0]).css({width:n.width,height:n.height}),r._updateCache(n),r._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(t,r){var i=e(this).data("resizable"),s=i.options,o=i.element,u=s.containment,a=u instanceof e?u.get(0):/parent/.test(u)?o.parent().get(0):u;if(!a)return;i.containerElement=e(a);if(/document/.test(u)||u==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var f=e(a),l=[];e(["Top","Right","Left","Bottom"]).each(function(e,t){l[e]=n(f.css("padding"+t))}),i.containerOffset=f.offset(),i.containerPosition=f.position(),i.containerSize={height:f.innerHeight()-l[3],width:f.innerWidth()-l[1]};var c=i.containerOffset,h=i.containerSize.height,p=i.containerSize.width,d=e.ui.hasScroll(a,"left")?a.scrollWidth:p,v=e.ui.hasScroll(a)?a.scrollHeight:h;i.parentData={element:a,left:c.left,top:c.top,width:d,height:v}}},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.containerSize,o=r.containerOffset,u=r.size,a=r.position,f=r._aspectRatio||t.shiftKey,l={top:0,left:0},c=r.containerElement;c[0]!=document&&/static/.test(c.css("position"))&&(l=o),a.left<(r._helper?o.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-o.left:r.position.left-l.left),f&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=i.helper?o.left:0),a.top<(r._helper?o.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-o.top:r.position.top),f&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?o.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top;var h=Math.abs((r._helper?r.offset.left-l.left:r.offset.left-l.left)+r.sizeDiff.width),p=Math.abs((r._helper?r.offset.top-l.top:r.offset.top-o.top)+r.sizeDiff.height),d=r.containerElement.get(0)==r.element.parent().get(0),v=/relative|absolute/.test(r.containerElement.css("position"));d&&v&&(h-=r.parentData.left),h+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-h,f&&(r.size.height=r.size.width/r.aspectRatio)),p+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-p,f&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.position,o=r.containerOffset,u=r.containerPosition,a=r.containerElement,f=e(r.helper),l=f.offset(),c=f.outerWidth()-r.sizeDiff.width,h=f.outerHeight()-r.sizeDiff.height;r._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h}),r._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h})}}),e.ui.plugin.add("resizable","ghost",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size;r.ghost=r.originalElement.clone(),r.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:""),r.ghost.appendTo(r.helper)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.ghost.css({position:"relative",height:r.size.height,width:r.size.width})},stop:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.helper&&r.helper.get(0).removeChild(r.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size,o=r.originalSize,u=r.originalPosition,a=r.axis,f=i._aspectRatio||t.shiftKey;i.grid=typeof i.grid=="number"?[i.grid,i.grid]:i.grid;var l=Math.round((s.width-o.width)/(i.grid[0]||1))*(i.grid[0]||1),c=Math.round((s.height-o.height)/(i.grid[1]||1))*(i.grid[1]||1);/^(se|s|e)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c):/^(ne)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c):/^(sw)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.left=u.left-l):(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c,r.position.left=u.left-l)}});var n=function(e){return parseInt(e,10)||0},r=function(e){return!isNaN(parseInt(e,10))}})(jQuery);(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var n;this.refresh=function(){n=e(t.options.filter,t.element[0]),n.addClass("ui-selectee"),n.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=n.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.right<i||a.top>u||a.bottom<s):r.tolerance=="fit"&&(f=a.left>i&&a.right<o&&a.top>s&&a.bottom<u),f?(a.selected&&(a.$element.removeClass("ui-selected"),a.selected=!1),a.unselecting&&(a.$element.removeClass("ui-unselecting"),a.unselecting=!1),a.selecting||(a.$element.addClass("ui-selecting"),a.selecting=!0,n._trigger("selecting",t,{selecting:a.element}))):(a.selecting&&((t.metaKey||t.ctrlKey)&&a.startselected?(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.$element.addClass("ui-selected"),a.selected=!0):(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.startselected&&(a.$element.addClass("ui-unselecting"),a.unselecting=!0),n._trigger("unselecting",t,{unselecting:a.element}))),a.selected&&!t.metaKey&&!t.ctrlKey&&!a.startselected&&(a.$element.removeClass("ui-selected"),a.selected=!1,a.$element.addClass("ui-unselecting"),a.unselecting=!0,n._trigger("unselecting",t,{unselecting:a.element})))}),!1},_mouseStop:function(t){var n=this;this.dragged=!1;var r=this.options;return e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.0",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r=this.options,i=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),s="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=r.values&&r.values.length||1,u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(r.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),r.range&&(r.range===!0&&(r.values||(r.values=[this._valueMin(),this._valueMin()]),r.values.length&&r.values.length!==2&&(r.values=[r.values[0],r.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(r.range==="min"||r.range==="max"?" ui-slider-range-"+r.range:"")));for(t=i.length;t<o;t++)u.push(s);this.handles=i.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){r.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){r.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(e){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r,i){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");for(var t=0;t<this.items.length;t++)for(var n=0;n<e.length;n++)e[n]==this.items[t].item[0]&&this.items.splice(t,1)},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else if(this.currentContainer!=this.containers[r]){var s=1e4,o=null,u=this.positionAbs[this.containers[r].floating?"left":"top"];for(var a=this.items.length-1;a>=0;a--){if(!e.contains(this.containers[r].element[0],this.items[a].item[0]))continue;var f=this.containers[r].floating?this.items[a].item.offset().left:this.items[a].item.offset().top;Math.abs(f-u)<s&&(s=Math.abs(f-u),o=this.items[a],this.direction=f-u>0?"down":"up")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.browser.msie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.9.0",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.uiSpinner.addClass("ui-state-active"),this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.uiSpinner.removeClass("ui-state-active"),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this._hoverable(e),this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-state-default ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._spin((e||1)*this.options.step)},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._spin((e||1)*-this.options.step)},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);(function(e,t){function i(){return++n}function s(e){return e=e.cloneNode(!1),e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.0",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t,n=this,r=this.options,i=r.active;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",r.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(i===null){location.hash&&this.anchors.each(function(e,t){if(t.hash===location.hash)return i=e,!1}),i===null&&(i=this.tabs.filter(".ui-tabs-active").index());if(i===null||i===-1)i=this.tabs.length?0:!1}i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),i===-1&&(i=r.collapsible?!1:0)),r.active=i,!r.collapsible&&r.active===!1&&this.anchors.length&&(r.active=0),e.isArray(r.disabled)&&(r.disabled=e.unique(r.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return n.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(r.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t,n=this.options,r=this.tablist.children(":has(a[href])");n.disabled=e.map(r.filter(".ui-state-disabled"),function(e){return r.index(e)}),this._processTabs(),n.active===!1||!this.anchors.length?(n.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===n.disabled.length?(n.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,n.active-1),!1)):n.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t,n){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e,t){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading&#8230;</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(e){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r=this._superApply(arguments);return r?(e==="beforeActivate"&&n.newTab.length?r=this._super("select",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()}):e==="activate"&&n.newTab.length&&(r=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),r):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(e){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.0",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]",position:{my:"left+15 center",at:"right center",collision:"flipfit flipfit"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={}},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=e(t?t.target:this.element).closest(this.options.items);if(!n.length)return;if(this.options.track&&n.data("ui-tooltip-id")){this._find(n).position(e.extend({of:n},this.options.position)),this._off(this.document,"mousemove");return}n.attr("title")&&n.data("ui-tooltip-title",n.attr("title")),n.data("tooltip-open",!0),this._updateContent(n,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("tooltip-open"))return;i._delay(function(){this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function u(e){o.of=e,s.position(o)}var s,o;if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.originalEvent.type)?(o=e.extend({},this.options.position),this._on(this.document,{mousemove:u}),u(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this._trigger("open",t,{tooltip:s}),this._on(r,{mouseleave:"close",focusout:"close",keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}}})},close:function(t,n){var i=this,s=e(t?t.currentTarget:this.element),o=this._find(s);if(this.closing)return;if(!n&&t&&t.type!=="focusout"&&this.document[0].activeElement===s[0])return;s.data("ui-tooltip-title")&&s.attr("title",s.data("ui-tooltip-title")),r(s),o.stop(!0),this._hide(o,this.options.hide,function(){e(this).remove(),delete i.tooltips[this.id]}),s.removeData("tooltip-open"),this._off(s,"mouseleave focusout keyup"),this._off(this.document,"mousemove"),this.closing=!0,this._trigger("close",t,{tooltip:o}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);
\ No newline at end of file
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/jquery.js b/site/docs/0.7.0-incubating/api/scala/lib/jquery.js
new file mode 100644
index 0000000..bc3fbc8
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/jquery.js
@@ -0,0 +1,2 @@
+/*! jQuery v1.8.2 jquery.com | jquery.org/license */
+(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bZ(c)&&(e[f]=p._data(c,"olddisplay",cc(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function ca(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bV[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bV[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bV[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bV[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bV[e]+"Width"))||0));return f}function cb(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?"border":"content"),e)+"px"}function cc(a){if(bS[a])return bS[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cA(a,c,d,e,"*",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(" ")?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":(a+"").replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e==="function"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!=="string"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")||(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)d=p._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)f.indexOf(" "+b[g]+" ")<0&&(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=b+""}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&p.expr.match.needsContext.test(f),namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=k.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){h={},j=[];for(d=0;d<q;d++)l=o[d],m=l.selector,h[m]===b&&(h[m]=l.needsContext?p(m,this).index(f)>=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){i=u[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){l=i.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,g=((p.event.special[l.origType]||{}).handle||l.handler).apply(i.elem,r),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h<i;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),j&&b.push(h);return g}function bl(a,b,c,d,e,f){return d&&!d[o]&&(d=bl(d)),e&&!e[o]&&(e=bl(e,f)),z(function(f,g,h,i){if(f&&e)return;var j,k,l,m=[],n=[],o=g.length,p=f||bo(b||"*",h.nodeType?[h]:h,[],f),q=a&&(f||!b)?bk(p,m,a,h,i):p,r=c?e||(f?a:o||d)?[]:g:q;c&&c(q,r,h,i);if(d){l=bk(r,n),d(l,[],h,i),j=l.length;while(j--)if(k=l[j])r[n[j]]=!(q[n[j]]=k)}if(f){j=a&&r.length;while(j--)if(k=r[j])f[m[j]]=!(g[m[j]]=k)}else r=bk(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):w.apply(g,r)})}function bm(a){var b,c,d,f=a.length,g=e.relative[a[0].type],h=g||e.relative[" "],i=g?1:0,j=bi(function(a){return a===b},h,!0),k=bi(function(a){return y.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i<f;i++)if(c=e.relative[a[i].type])m=[bi(bj(m),c)];else{c=e.filter[a[i].type].apply(null,a[i].matches);if(c[o]){d=++i;for(;d<f;d++)if(e.relative[a[d].type])break;return bl(i>1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i<d&&bm(a.slice(i,d)),d<f&&bm(a=a.slice(d)),d<f&&a.join(""))}m.push(c)}return bj(m)}function bn(a,b){var d=b.length>0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)bc(a,b[e],c,d);return c}function bp(a,b,c,d,f){var g,h,j,k,l,m=bh(a),n=m.length;if(!d&&m.length===1){h=m[0]=m[0].slice(0);if(h.length>2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;b<c;b++)if(this[b]===a)return b;return-1},z=function(a,b){return a[o]=b==null||b,a},A=function(){var a={},b=[];return z(function(c,d){return b.push(c)>e.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="<a name='"+o+"'></a><div name='"+o+"'></div>",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:bf(function(a,b,c){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:bf(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},j=s.compareDocumentPosition?function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bg(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bg(e[j],f[j]);return j===c?bg(a,f[j],-1):bg(e[j],b,1)},[0,0].sort(j),m=!k,bc.uniqueSort=function(a){var b,c=1;k=m,a.sort(j);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},bc.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},i=bc.compile=function(a,b){var c,d=[],e=[],f=D[o][a];if(!f){b||(b=bh(a)),c=b.length;while(c--)f=bm(b[c]),f[o]?d.push(f):e.push(f);f=D(a,bn(e,d))}return f},r.querySelectorAll&&function(){var a,b=bp,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[":focus"],f=[":active",":focus"],h=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.oMatchesSelector||s.msMatchesSelector;X(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'/>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$("show"),slideUp:c$("hide"),slideToggle:c$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j={top:0,left:0},k=this[0],l=k&&k.ownerDocument;if(!l)return;return(d=l.body)===k?p.offset.bodyOffset(k):(c=l.documentElement,p.contains(c,k)?(typeof k.getBoundingClientRect!="undefined"&&(j=k.getBoundingClientRect()),e=da(l),f=c.clientTop||d.clientTop||0,g=c.clientLeft||d.clientLeft||0,h=e.pageYOffset||c.scrollTop,i=e.pageXOffset||c.scrollLeft,{top:j.top+h-f,left:j.left+i-g}):j)},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
\ No newline at end of file
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/jquery.layout.js b/site/docs/0.7.0-incubating/api/scala/lib/jquery.layout.js
new file mode 100644
index 0000000..d5e008d
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/jquery.layout.js
@@ -0,0 +1,5486 @@
+/**
+ * @preserve jquery.layout 1.3.0 - Release Candidate 30.62
+ * $Date: 2012-08-04 08:00:00 (Thu, 23 Aug 2012) $
+ * $Rev: 303006 $
+ *
+ * Copyright (c) 2012 
+ *   Fabrizio Balliano (http://www.fabrizioballiano.net)
+ *   Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * Changelog: http://layout.jquery-dev.net/changelog.cfm#1.3.0.rc30.62
+ * NOTE: This is a short-term release to patch a couple of bugs.
+ * These bugs are listed as officially fixed in RC30.7, which will be released shortly.
+ *
+ * Docs: http://layout.jquery-dev.net/documentation.html
+ * Tips: http://layout.jquery-dev.net/tips.html
+ * Help: http://groups.google.com/group/jquery-ui-layout
+ */
+
+/* JavaDoc Info: http://code.google.com/closure/compiler/docs/js-for-compiler.html
+ * {!Object}	non-nullable type (never NULL)
+ * {?string}	nullable type (sometimes NULL) - default for {Object}
+ * {number=}	optional parameter
+ * {*}			ALL types
+ */
+
+// NOTE: For best readability, view with a fixed-width font and tabs equal to 4-chars
+
+;(function ($) {
+
+// alias Math methods - used a lot!
+var	min		= Math.min
+,	max		= Math.max
+,	round	= Math.floor
+
+,	isStr	=  function (v) { return $.type(v) === "string"; }
+
+,	runPluginCallbacks = function (Instance, a_fn) {
+		if ($.isArray(a_fn))
+			for (var i=0, c=a_fn.length; i<c; i++) {
+				var fn = a_fn[i];
+				try {
+					if (isStr(fn)) // 'name' of a function
+						fn = eval(fn);
+					if ($.isFunction(fn))
+						fn( Instance );
+				} catch (ex) {}
+			}
+	}
+
+;
+
+
+/*
+ *	GENERIC $.layout METHODS - used by all layouts
+ */
+$.layout = {
+
+	version:	"1.3.rc30.62"
+,	revision:	0.033006 // 1.3.0 final = 1.0300 - major(n+).minor(nn)+patch(nn+)
+
+	// can update code here if $.browser is phased out
+,	browser: {
+		mozilla:	!!$.browser.mozilla
+	,	webkit:		!!$.browser.webkit || !!$.browser.safari // webkit = jQ 1.4
+	,	msie:		!!$.browser.msie
+	,	isIE6:		$.browser.msie && $.browser.version == 6
+	,	boxModel:	$.support.boxModel !== false || !$.browser.msie // ONLY IE reverts to old box-model - update for older jQ onReady
+	,	version:	$.browser.version // not used in Layout core, but may be used by plugins
+	}
+
+	// *PREDEFINED* EFFECTS & DEFAULTS 
+	// MUST list effect here - OR MUST set an fxSettings option (can be an empty hash: {})
+,	effects: {
+
+	//	Pane Open/Close Animations
+		slide: {
+			all:	{ duration:  "fast"	} // eg: duration: 1000, easing: "easeOutBounce"
+		,	north:	{ direction: "up"	}
+		,	south:	{ direction: "down"	}
+		,	east:	{ direction: "right"}
+		,	west:	{ direction: "left"	}
+		}
+	,	drop: {
+			all:	{ duration:  "slow"	}
+		,	north:	{ direction: "up"	}
+		,	south:	{ direction: "down"	}
+		,	east:	{ direction: "right"}
+		,	west:	{ direction: "left"	}
+		}
+	,	scale: {
+			all:	{ duration:	"fast"	}
+		}
+	//	these are not recommended, but can be used
+	,	blind:		{}
+	,	clip:		{}
+	,	explode:	{}
+	,	fade:		{}
+	,	fold:		{}
+	,	puff:		{}
+
+	//	Pane Resize Animations
+	,	size: {
+			all:	{ easing:	"swing"	}
+		}
+	}
+
+	// INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
+,	config: {
+		optionRootKeys:	"effects,panes,north,south,west,east,center".split(",")
+	,	allPanes:		"north,south,west,east,center".split(",")
+	,	borderPanes:	"north,south,west,east".split(",")
+	,	oppositeEdge: {
+			north:	"south"
+		,	south:	"north"
+		,	east: 	"west"
+		,	west: 	"east"
+		}
+	//	offscreen data
+	,	offscreenCSS:	{ left: "-99999px", right: "auto" } // used by hide/close if useOffscreenClose=true
+	,	offscreenReset:	"offscreenReset" // key used for data
+	//	CSS used in multiple places
+	,	hidden:		{ visibility: "hidden" }
+	,	visible:	{ visibility: "visible" }
+	//	layout element settings
+	,	resizers: {
+			cssReq: {
+				position: 	"absolute"
+			,	padding: 	0
+			,	margin: 	0
+			,	fontSize:	"1px"
+			,	textAlign:	"left"	// to counter-act "center" alignment!
+			,	overflow: 	"hidden" // prevent toggler-button from overflowing
+			//	SEE $.layout.defaults.zIndexes.resizer_normal
+			}
+		,	cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+				background: "#DDD"
+			,	border:		"none"
+			}
+		}
+	,	togglers: {
+			cssReq: {
+				position: 	"absolute"
+			,	display: 	"block"
+			,	padding: 	0
+			,	margin: 	0
+			,	overflow:	"hidden"
+			,	textAlign:	"center"
+			,	fontSize:	"1px"
+			,	cursor: 	"pointer"
+			,	zIndex: 	1
+			}
+		,	cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+				background: "#AAA"
+			}
+		}
+	,	content: {
+			cssReq: {
+				position:	"relative" /* contain floated or positioned elements */
+			}
+		,	cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+				overflow:	"auto"
+			,	padding:	"10px"
+			}
+		,	cssDemoPane: { // DEMO CSS - REMOVE scrolling from 'pane' when it has a content-div
+				overflow:	"hidden"
+			,	padding:	0
+			}
+		}
+	,	panes: { // defaults for ALL panes - overridden by 'per-pane settings' below
+			cssReq: {
+				position: 	"absolute"
+			,	margin:		0
+			//	$.layout.defaults.zIndexes.pane_normal
+			}
+		,	cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+				padding:	"10px"
+			,	background:	"#FFF"
+			,	border:		"1px solid #BBB"
+			,	overflow:	"auto"
+			}
+		}
+	,	north: {
+			side:			"Top"
+		,	sizeType:		"Height"
+		,	dir:			"horz"
+		,	cssReq: {
+				top: 		0
+			,	bottom: 	"auto"
+			,	left: 		0
+			,	right: 		0
+			,	width: 		"auto"
+			//	height: 	DYNAMIC
+			}
+		}
+	,	south: {
+			side:			"Bottom"
+		,	sizeType:		"Height"
+		,	dir:			"horz"
+		,	cssReq: {
+				top: 		"auto"
+			,	bottom: 	0
+			,	left: 		0
+			,	right: 		0
+			,	width: 		"auto"
+			//	height: 	DYNAMIC
+			}
+		}
+	,	east: {
+			side:			"Right"
+		,	sizeType:		"Width"
+		,	dir:			"vert"
+		,	cssReq: {
+				left: 		"auto"
+			,	right: 		0
+			,	top: 		"auto" // DYNAMIC
+			,	bottom: 	"auto" // DYNAMIC
+			,	height: 	"auto"
+			//	width: 		DYNAMIC
+			}
+		}
+	,	west: {
+			side:			"Left"
+		,	sizeType:		"Width"
+		,	dir:			"vert"
+		,	cssReq: {
+				left: 		0
+			,	right: 		"auto"
+			,	top: 		"auto" // DYNAMIC
+			,	bottom: 	"auto" // DYNAMIC
+			,	height: 	"auto"
+			//	width: 		DYNAMIC
+			}
+		}
+	,	center: {
+			dir:			"center"
+		,	cssReq: {
+				left: 		"auto" // DYNAMIC
+			,	right: 		"auto" // DYNAMIC
+			,	top: 		"auto" // DYNAMIC
+			,	bottom: 	"auto" // DYNAMIC
+			,	height: 	"auto"
+			,	width: 		"auto"
+			}
+		}
+	}
+
+	// CALLBACK FUNCTION NAMESPACE - used to store reusable callback functions
+,	callbacks: {}
+
+,	getParentPaneElem: function (el) {
+		// must pass either a container or pane element
+		var $el = $(el)
+		,	layout = $el.data("layout") || $el.data("parentLayout");
+		if (layout) {
+			var $cont = layout.container;
+			// see if this container is directly-nested inside an outer-pane
+			if ($cont.data("layoutPane")) return $cont;
+			var $pane = $cont.closest("."+ $.layout.defaults.panes.paneClass);
+			// if a pane was found, return it
+			if ($pane.data("layoutPane")) return $pane;
+		}
+		return null;
+	}
+
+,	getParentPaneInstance: function (el) {
+		// must pass either a container or pane element
+		var $pane = $.layout.getParentPaneElem(el);
+		return $pane ? $pane.data("layoutPane") : null;
+	}
+
+,	getParentLayoutInstance: function (el) {
+		// must pass either a container or pane element
+		var $pane = $.layout.getParentPaneElem(el);
+		return $pane ? $pane.data("parentLayout") : null;
+	}
+
+,	getEventObject: function (evt) {
+		return typeof evt === "object" && evt.stopPropagation ? evt : null;
+	}
+,	parsePaneName: function (evt_or_pane) {
+		// getEventObject() automatically calls .stopPropagation(), WHICH MUST BE DONE!
+		var evt = $.layout.getEventObject( evt_or_pane );
+		if (evt) {
+			// ALWAYS stop propagation of events triggered in Layout!
+			evt.stopPropagation();
+			return $(this).data("layoutEdge");
+		}
+		else
+			return evt_or_pane;
+	}
+
+
+	// LAYOUT-PLUGIN REGISTRATION
+	// more plugins can added beyond this default list
+,	plugins: {
+		draggable:		!!$.fn.draggable // resizing
+	,	effects: {
+			core:		!!$.effects		// animimations (specific effects tested by initOptions)
+		,	slide:		$.effects && $.effects.slide // default effect
+		}
+	}
+
+//	arrays of plugin or other methods to be triggered for events in *each layout* - will be passed 'Instance'
+,	onCreate:	[]	// runs when layout is just starting to be created - right after options are set
+,	onLoad:		[]	// runs after layout container and global events init, but before initPanes is called
+,	onReady:	[]	// runs after initialization *completes* - ie, after initPanes completes successfully
+,	onDestroy:	[]	// runs after layout is destroyed
+,	onUnload:	[]	// runs after layout is destroyed OR when page unloads
+,	afterOpen:	[]	// runs after setAsOpen() completes
+,	afterClose:	[]	// runs after setAsClosed() completes
+
+	/*
+	*	GENERIC UTILITY METHODS
+	*/
+
+	// calculate and return the scrollbar width, as an integer
+,	scrollbarWidth:		function () { return window.scrollbarWidth  || $.layout.getScrollbarSize('width'); }
+,	scrollbarHeight:	function () { return window.scrollbarHeight || $.layout.getScrollbarSize('height'); }
+,	getScrollbarSize:	function (dim) {
+		var $c	= $('<div style="position: absolute; top: -10000px; left: -10000px; width: 100px; height: 100px; overflow: scroll;"></div>').appendTo("body");
+		var d	= { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight };
+		$c.remove();
+		window.scrollbarWidth	= d.width;
+		window.scrollbarHeight	= d.height;
+		return dim.match(/^(width|height)$/) ? d[dim] : d;
+	}
+
+
+	/**
+	* Returns hash container 'display' and 'visibility'
+	*
+	* @see	$.swap() - swaps CSS, runs callback, resets CSS
+	*/
+,	showInvisibly: function ($E, force) {
+		if ($E && $E.length && (force || $E.css('display') === "none")) { // only if not *already hidden*
+			var s = $E[0].style
+				// save ONLY the 'style' props because that is what we must restore
+			,	CSS = { display: s.display || '', visibility: s.visibility || '' };
+			// show element 'invisibly' so can be measured
+			$E.css({ display: "block", visibility: "hidden" });
+			return CSS;
+		}
+		return {};
+	}
+
+	/**
+	* Returns data for setting size of an element (container or a pane).
+	*
+	* @see  _create(), onWindowResize() for container, plus others for pane
+	* @return JSON  Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc
+	*/
+,	getElementDimensions: function ($E) {
+		var
+			d	= {}			// dimensions hash
+		,	x	= d.css = {}	// CSS hash
+		,	i	= {}			// TEMP insets
+		,	b, p				// TEMP border, padding
+		,	N	= $.layout.cssNum
+		,	off = $E.offset()
+		;
+		d.offsetLeft = off.left;
+		d.offsetTop  = off.top;
+
+		$.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge
+			b = x["border" + e] = $.layout.borderWidth($E, e);
+			p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e);
+			i[e] = b + p; // total offset of content from outer side
+			d["inset"+ e] = p;	// eg: insetLeft = paddingLeft
+		});
+
+		d.offsetWidth	= $E.innerWidth();	// offsetWidth is used in calc when doing manual resize
+		d.offsetHeight	= $E.innerHeight();	// ditto
+		d.outerWidth	= $E.outerWidth();
+		d.outerHeight	= $E.outerHeight();
+		d.innerWidth	= max(0, d.outerWidth  - i.Left - i.Right);
+		d.innerHeight	= max(0, d.outerHeight - i.Top  - i.Bottom);
+
+		x.width		= $E.width();
+		x.height	= $E.height();
+		x.top		= N($E,"top",true);
+		x.bottom	= N($E,"bottom",true);
+		x.left		= N($E,"left",true);
+		x.right		= N($E,"right",true);
+
+		//d.visible	= $E.is(":visible");// && x.width > 0 && x.height > 0;
+
+		return d;
+	}
+
+,	getElementCSS: function ($E, list) {
+		var
+			CSS	= {}
+		,	style	= $E[0].style
+		,	props	= list.split(",")
+		,	sides	= "Top,Bottom,Left,Right".split(",")
+		,	attrs	= "Color,Style,Width".split(",")
+		,	p, s, a, i, j, k
+		;
+		for (i=0; i < props.length; i++) {
+			p = props[i];
+			if (p.match(/(border|padding|margin)$/))
+				for (j=0; j < 4; j++) {
+					s = sides[j];
+					if (p === "border")
+						for (k=0; k < 3; k++) {
+							a = attrs[k];
+							CSS[p+s+a] = style[p+s+a];
+						}
+					else
+						CSS[p+s] = style[p+s];
+				}
+			else
+				CSS[p] = style[p];
+		};
+		return CSS
+	}
+
+	/**
+	* Return the innerWidth for the current browser/doctype
+	*
+	* @see  initPanes(), sizeMidPanes(), initHandles(), sizeHandles()
+	* @param  {Array.<Object>}	$E  Must pass a jQuery object - first element is processed
+	* @param  {number=}			outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized
+	* @return {number}			Returns the innerWidth of the elem by subtracting padding and borders
+	*/
+,	cssWidth: function ($E, outerWidth) {
+		// a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed
+		if (outerWidth <= 0) return 0;
+
+		if (!$.layout.browser.boxModel) return outerWidth;
+
+		// strip border and padding from outerWidth to get CSS Width
+		var b = $.layout.borderWidth
+		,	n = $.layout.cssNum
+		,	W = outerWidth
+				- b($E, "Left")
+				- b($E, "Right")
+				- n($E, "paddingLeft")		
+				- n($E, "paddingRight");
+
+		return max(0,W);
+	}
+
+	/**
+	* Return the innerHeight for the current browser/doctype
+	*
+	* @see  initPanes(), sizeMidPanes(), initHandles(), sizeHandles()
+	* @param  {Array.<Object>}	$E  Must pass a jQuery object - first element is processed
+	* @param  {number=}			outerHeight  (optional) Can pass a width, allowing calculations BEFORE element is resized
+	* @return {number}			Returns the innerHeight of the elem by subtracting padding and borders
+	*/
+,	cssHeight: function ($E, outerHeight) {
+		// a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed
+		if (outerHeight <= 0) return 0;
+
+		if (!$.layout.browser.boxModel) return outerHeight;
+
+		// strip border and padding from outerHeight to get CSS Height
+		var b = $.layout.borderWidth
+		,	n = $.layout.cssNum
+		,	H = outerHeight
+			- b($E, "Top")
+			- b($E, "Bottom")
+			- n($E, "paddingTop")
+			- n($E, "paddingBottom");
+
+		return max(0,H);
+	}
+
+	/**
+	* Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist
+	*
+	* @see  Called by many methods
+	* @param {Array.<Object>}	$E					Must pass a jQuery object - first element is processed
+	* @param {string}			prop				The name of the CSS property, eg: top, width, etc.
+	* @param {boolean=}			[allowAuto=false]	true = return 'auto' if that is value; false = return 0
+	* @return {(string|number)}						Usually used to get an integer value for position (top, left) or size (height, width)
+	*/
+,	cssNum: function ($E, prop, allowAuto) {
+		if (!$E.jquery) $E = $($E);
+		var CSS = $.layout.showInvisibly($E)
+		,	p	= $.css($E[0], prop, true)
+		,	v	= allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0);
+		$E.css( CSS ); // RESET
+		return v;
+	}
+
+,	borderWidth: function (el, side) {
+		if (el.jquery) el = el[0];
+		var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left
+		return $.css(el, b+"Style", true) === "none" ? 0 : (parseInt($.css(el, b+"Width", true), 10) || 0);
+	}
+
+	/**
+	* Mouse-tracking utility - FUTURE REFERENCE
+	*
+	* init: if (!window.mouse) {
+	*			window.mouse = { x: 0, y: 0 };
+	*			$(document).mousemove( $.layout.trackMouse );
+	*		}
+	*
+	* @param {Object}		evt
+	*
+,	trackMouse: function (evt) {
+		window.mouse = { x: evt.clientX, y: evt.clientY };
+	}
+	*/
+
+	/**
+	* SUBROUTINE for preventPrematureSlideClose option
+	*
+	* @param {Object}		evt
+	* @param {Object=}		el
+	*/
+,	isMouseOverElem: function (evt, el) {
+		var
+			$E	= $(el || this)
+		,	d	= $E.offset()
+		,	T	= d.top
+		,	L	= d.left
+		,	R	= L + $E.outerWidth()
+		,	B	= T + $E.outerHeight()
+		,	x	= evt.pageX	// evt.clientX ?
+		,	y	= evt.pageY	// evt.clientY ?
+		;
+		// if X & Y are < 0, probably means is over an open SELECT
+		return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B));
+	}
+
+	/**
+	* Message/Logging Utility
+	*
+	* @example $.layout.msg("My message");				// log text
+	* @example $.layout.msg("My message", true);		// alert text
+	* @example $.layout.msg({ foo: "bar" }, "Title");	// log hash-data, with custom title
+	* @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR-
+	* @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data
+	*
+	* @param {(Object|string)}			info			String message OR Hash/Array
+	* @param {(Boolean|string|Object)=}	[popup=false]	True means alert-box - can be skipped
+	* @param {(Object|string)=}			[debugTitle=""]	Title for Hash data - can be skipped
+	* @param {Object=}					[debugOpts]		Extra options for debug output
+	*/
+,	msg: function (info, popup, debugTitle, debugOpts) {
+		if ($.isPlainObject(info) && window.debugData) {
+			if (typeof popup === "string") {
+				debugOpts	= debugTitle;
+				debugTitle	= popup;
+			}
+			else if (typeof debugTitle === "object") {
+				debugOpts	= debugTitle;
+				debugTitle	= null;
+			}
+			var t = debugTitle || "log( <object> )"
+			,	o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts);
+			if (popup === true || o.display)
+				debugData( info, t, o );
+			else if (window.console)
+				console.log(debugData( info, t, o ));
+		}
+		else if (popup)
+			alert(info);
+		else if (window.console)
+			console.log(info);
+		else {
+			var id	= "#layoutLogger"
+			,	$l = $(id);
+			if (!$l.length)
+				$l = createLog();
+			$l.children("ul").append('<li style="padding: 4px 10px; margin: 0; border-top: 1px solid #CCC;">'+ info.replace(/\</g,"&lt;").replace(/\>/g,"&gt;") +'</li>');
+		}
+
+		function createLog () {
+			var pos = $.support.fixedPosition ? 'fixed' : 'absolute'
+			,	$e = $('<div id="layoutLogger" style="position: '+ pos +'; top: 5px; z-index: 999999; max-width: 25%; overflow: hidden; border: 1px solid #000; border-radius: 5px; background: #FBFBFB; box-shadow: 0 2px 10px rgba(0,0,0,0.3);">'
+				+	'<div style="font-size: 13px; font-weight: bold; padding: 5px 10px; background: #F6F6F6; border-radius: 5px 5px 0 0; cursor: move;">'
+				+	'<span style="float: right; padding-left: 7px; cursor: pointer;" title="Remove Console" onclick="$(this).closest(\'#layoutLogger\').remove()">X</span>Layout console.log</div>'
+				+	'<ul style="font-size: 13px; font-weight: none; list-style: none; margin: 0; padding: 0 0 2px;"></ul>'
+				+ '</div>'
+				).appendTo("body");
+			$e.css('left', $(window).width() - $e.outerWidth() - 5)
+			if ($.ui.draggable) $e.draggable({ handle: ':first-child' });
+			return $e;
+		};
+	}
+
+};
+
+// DEFAULT OPTIONS
+$.layout.defaults = {
+/*
+ *	LAYOUT & LAYOUT-CONTAINER OPTIONS
+ *	- none of these options are applicable to individual panes
+ */
+	name:						""			// Not required, but useful for buttons and used for the state-cookie
+,	containerSelector:			""			// ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested
+,	containerClass:				"ui-layout-container" // layout-container element
+,	scrollToBookmarkOnLoad:		true		// after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark)
+,	resizeWithWindow:			true		// bind thisLayout.resizeAll() to the window.resize event
+,	resizeWithWindowDelay:		200			// delay calling resizeAll because makes window resizing very jerky
+,	resizeWithWindowMaxDelay:	0			// 0 = none - force resize every XX ms while window is being resized
+,	onresizeall_start:			null		// CALLBACK when resizeAll() STARTS	- NOT pane-specific
+,	onresizeall_end:			null		// CALLBACK when resizeAll() ENDS	- NOT pane-specific
+,	onload_start:				null		// CALLBACK when Layout inits - after options initialized, but before elements
+,	onload_end:					null		// CALLBACK when Layout inits - after EVERYTHING has been initialized
+,	onunload_start:				null		// CALLBACK when Layout is destroyed OR onWindowUnload
+,	onunload_end:				null		// CALLBACK when Layout is destroyed OR onWindowUnload
+,	initPanes:					true		// false = DO NOT initialize the panes onLoad - will init later
+,	showErrorMessages:			true		// enables fatal error messages to warn developers of common errors
+,	showDebugMessages:			false		// display console-and-alert debug msgs - IF this Layout version _has_ debugging code!
+//	Changing this zIndex value will cause other zIndex values to automatically change
+,	zIndex:						null		// the PANE zIndex - resizers and masks will be +1
+//	DO NOT CHANGE the zIndex values below unless you clearly understand their relationships
+,	zIndexes: {								// set _default_ z-index values here...
+		pane_normal:			0			// normal z-index for panes
+	,	content_mask:			1			// applied to overlays used to mask content INSIDE panes during resizing
+	,	resizer_normal:			2			// normal z-index for resizer-bars
+	,	pane_sliding:			100			// applied to *BOTH* the pane and its resizer when a pane is 'slid open'
+	,	pane_animate:			1000		// applied to the pane when being animated - not applied to the resizer
+	,	resizer_drag:			10000		// applied to the CLONED resizer-bar when being 'dragged'
+	}
+,	errors: {
+		pane:					"pane"		// description of "layout pane element" - used only in error messages
+	,	selector:				"selector"	// description of "jQuery-selector" - used only in error messages
+	,	addButtonError:			"Error Adding Button \n\nInvalid "
+	,	containerMissing:		"UI Layout Initialization Error\n\nThe specified layout-container does not exist."
+	,	centerPaneMissing:		"UI Layout Initialization Error\n\nThe center-pane element does not exist.\n\nThe center-pane is a required element."
+	,	noContainerHeight:		"UI Layout Initialization Warning\n\nThe layout-container \"CONTAINER\" has no height.\n\nTherefore the layout is 0-height and hence 'invisible'!"
+	,	callbackError:			"UI Layout Callback Error\n\nThe EVENT callback is not a valid function."
+	}
+/*
+ *	PANE DEFAULT SETTINGS
+ *	- settings under the 'panes' key become the default settings for *all panes*
+ *	- ALL pane-options can also be set specifically for each panes, which will override these 'default values'
+ */
+,	panes: { // default options for 'all panes' - will be overridden by 'per-pane settings'
+		applyDemoStyles: 		false		// NOTE: renamed from applyDefaultStyles for clarity
+	,	closable:				true		// pane can open & close
+	,	resizable:				true		// when open, pane can be resized 
+	,	slidable:				true		// when closed, pane can 'slide open' over other panes - closes on mouse-out
+	,	initClosed:				false		// true = init pane as 'closed'
+	,	initHidden: 			false 		// true = init pane as 'hidden' - no resizer-bar/spacing
+	//	SELECTORS
+	//,	paneSelector:			""			// MUST be pane-specific - jQuery selector for pane
+	,	contentSelector:		".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane!
+	,	contentIgnoreSelector:	".ui-layout-ignore"	// element(s) to 'ignore' when measuring 'content'
+	,	findNestedContent:		false		// true = $P.find(contentSelector), false = $P.children(contentSelector)
+	//	GENERIC ROOT-CLASSES - for auto-generated classNames
+	,	paneClass:				"ui-layout-pane"	// Layout Pane
+	,	resizerClass:			"ui-layout-resizer"	// Resizer Bar
+	,	togglerClass:			"ui-layout-toggler"	// Toggler Button
+	,	buttonClass:			"ui-layout-button"	// CUSTOM Buttons	- eg: '[ui-layout-button]-toggle/-open/-close/-pin'
+	//	ELEMENT SIZE & SPACING
+	//,	size:					100			// MUST be pane-specific -initial size of pane
+	,	minSize:				0			// when manually resizing a pane
+	,	maxSize:				0			// ditto, 0 = no limit
+	,	spacing_open:			6			// space between pane and adjacent panes - when pane is 'open'
+	,	spacing_closed:			6			// ditto - when pane is 'closed'
+	,	togglerLength_open:		50			// Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides
+	,	togglerLength_closed: 	50			// 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden'
+	,	togglerAlign_open:		"center"	// top/left, bottom/right, center, OR...
+	,	togglerAlign_closed:	"center"	// 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right
+	,	togglerContent_open:	""			// text or HTML to put INSIDE the toggler
+	,	togglerContent_closed:	""			// ditto
+	//	RESIZING OPTIONS
+	,	resizerDblClickToggle:	true		// 
+	,	autoResize:				true		// IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes
+	,	autoReopen:				true		// IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed
+	,	resizerDragOpacity:		1			// option for ui.draggable
+	//,	resizerCursor:			""			// MUST be pane-specific - cursor when over resizer-bar
+	,	maskContents:			false		// true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES
+	,	maskObjects:			false		// true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask
+	,	maskZindex:				null		// will override zIndexes.content_mask if specified - not applicable to iframe-panes
+	,	resizingGrid:			false		// grid size that the resizers will snap-to during resizing, eg: [20,20]
+	,	livePaneResizing:		false		// true = LIVE Resizing as resizer is dragged
+	,	liveContentResizing:	false		// true = re-measure header/footer heights as resizer is dragged
+	,	liveResizingTolerance:	1			// how many px change before pane resizes, to control performance
+	//	SLIDING OPTIONS
+	,	sliderCursor:			"pointer"	// cursor when resizer-bar will trigger 'sliding'
+	,	slideTrigger_open:		"click"		// click, dblclick, mouseenter
+	,	slideTrigger_close:		"mouseleave"// click, mouseleave
+	,	slideDelay_open:		300			// applies only for mouseenter event - 0 = instant open
+	,	slideDelay_close:		300			// applies only for mouseleave event (300ms is the minimum!)
+	,	hideTogglerOnSlide:		false		// when pane is slid-open, should the toggler show?
+	,	preventQuickSlideClose:	$.layout.browser.webkit // Chrome triggers slideClosed as it is opening
+	,	preventPrematureSlideClose: false	// handle incorrect mouseleave trigger, like when over a SELECT-list in IE
+	//	PANE-SPECIFIC TIPS & MESSAGES
+	,	tips: {
+			Open:				"Open"		// eg: "Open Pane"
+		,	Close:				"Close"
+		,	Resize:				"Resize"
+		,	Slide:				"Slide Open"
+		,	Pin:				"Pin"
+		,	Unpin:				"Un-Pin"
+		,	noRoomToOpen:		"Not enough room to show this panel."	// alert if user tries to open a pane that cannot
+		,	minSizeWarning:		"Panel has reached its minimum size"	// displays in browser statusbar
+		,	maxSizeWarning:		"Panel has reached its maximum size"	// ditto
+		}
+	//	HOT-KEYS & MISC
+	,	showOverflowOnHover:	false		// will bind allowOverflow() utility to pane.onMouseOver
+	,	enableCursorHotkey:		true		// enabled 'cursor' hotkeys
+	//,	customHotkey:			""			// MUST be pane-specific - EITHER a charCode OR a character
+	,	customHotkeyModifier:	"SHIFT"		// either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT'
+	//	PANE ANIMATION
+	//	NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed
+	,	fxName:					"slide" 	// ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size'
+	,	fxSpeed:				null		// slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration
+	,	fxSettings:				{}			// can be passed, eg: { easing: "easeOutBounce", duration: 1500 }
+	,	fxOpacityFix:			true		// tries to fix opacity in IE to restore anti-aliasing after animation
+	,	animatePaneSizing:		false		// true = animate resizing after dragging resizer-bar OR sizePane() is called
+	/*  NOTE: Action-specific FX options are auto-generated from the options above if not specifically set:
+		fxName_open:			"slide"		// 'Open' pane animation
+		fnName_close:			"slide"		// 'Close' pane animation
+		fxName_size:			"slide"		// 'Size' pane animation - when animatePaneSizing = true
+		fxSpeed_open:			null
+		fxSpeed_close:			null
+		fxSpeed_size:			null
+		fxSettings_open:		{}
+		fxSettings_close:		{}
+		fxSettings_size:		{}
+	*/
+	//	CHILD/NESTED LAYOUTS
+	,	childOptions:			null		// Layout-options for nested/child layout - even {} is valid as options
+	,	initChildLayout:		true		// true = child layout will be created as soon as _this_ layout completes initialization
+	,	destroyChildLayout:		true		// true = destroy child-layout if this pane is destroyed
+	,	resizeChildLayout:		true		// true = trigger child-layout.resizeAll() when this pane is resized
+	//	EVENT TRIGGERING
+	,	triggerEventsOnLoad:	false		// true = trigger onopen OR onclose callbacks when layout initializes
+	,	triggerEventsDuringLiveResize: true	// true = trigger onresize callback REPEATEDLY if livePaneResizing==true
+	//	PANE CALLBACKS
+	,	onshow_start:			null		// CALLBACK when pane STARTS to Show	- BEFORE onopen/onhide_start
+	,	onshow_end:				null		// CALLBACK when pane ENDS being Shown	- AFTER  onopen/onhide_end
+	,	onhide_start:			null		// CALLBACK when pane STARTS to Close	- BEFORE onclose_start
+	,	onhide_end:				null		// CALLBACK when pane ENDS being Closed	- AFTER  onclose_end
+	,	onopen_start:			null		// CALLBACK when pane STARTS to Open
+	,	onopen_end:				null		// CALLBACK when pane ENDS being Opened
+	,	onclose_start:			null		// CALLBACK when pane STARTS to Close
+	,	onclose_end:			null		// CALLBACK when pane ENDS being Closed
+	,	onresize_start:			null		// CALLBACK when pane STARTS being Resized ***FOR ANY REASON***
+	,	onresize_end:			null		// CALLBACK when pane ENDS being Resized ***FOR ANY REASON***
+	,	onsizecontent_start:	null		// CALLBACK when sizing of content-element STARTS
+	,	onsizecontent_end:		null		// CALLBACK when sizing of content-element ENDS
+	,	onswap_start:			null		// CALLBACK when pane STARTS to Swap
+	,	onswap_end:				null		// CALLBACK when pane ENDS being Swapped
+	,	ondrag_start:			null		// CALLBACK when pane STARTS being ***MANUALLY*** Resized
+	,	ondrag_end:				null		// CALLBACK when pane ENDS being ***MANUALLY*** Resized
+	}
+/*
+ *	PANE-SPECIFIC SETTINGS
+ *	- options listed below MUST be specified per-pane - they CANNOT be set under 'panes'
+ *	- all options under the 'panes' key can also be set specifically for any pane
+ *	- most options under the 'panes' key apply only to 'border-panes' - NOT the center-pane
+ */
+,	north: {
+		paneSelector:			".ui-layout-north"
+	,	size:					"auto"		// eg: "auto", "30%", .30, 200
+	,	resizerCursor:			"n-resize"	// custom = url(myCursor.cur)
+	,	customHotkey:			""			// EITHER a charCode (43) OR a character ("o")
+	}
+,	south: {
+		paneSelector:			".ui-layout-south"
+	,	size:					"auto"
+	,	resizerCursor:			"s-resize"
+	,	customHotkey:			""
+	}
+,	east: {
+		paneSelector:			".ui-layout-east"
+	,	size:					200
+	,	resizerCursor:			"e-resize"
+	,	customHotkey:			""
+	}
+,	west: {
+		paneSelector:			".ui-layout-west"
+	,	size:					200
+	,	resizerCursor:			"w-resize"
+	,	customHotkey:			""
+	}
+,	center: {
+		paneSelector:			".ui-layout-center"
+	,	minWidth:				0
+	,	minHeight:				0
+	}
+};
+
+$.layout.optionsMap = {
+	// layout/global options - NOT pane-options
+	layout: ("stateManagement,effects,zIndexes,errors,"
+	+	"name,zIndex,scrollToBookmarkOnLoad,showErrorMessages,"
+	+	"resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay,"
+	+	"onresizeall,onresizeall_start,onresizeall_end,onload,onunload").split(",")
+//	borderPanes: [ ALL options that are NOT specified as 'layout' ]
+	// default.panes options that apply to the center-pane (most options apply _only_ to border-panes)
+,	center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad,"
+	+	"showOverflowOnHover,maskContents,maskObjects,liveContentResizing,"
+	+	"childOptions,initChildLayout,resizeChildLayout,destroyChildLayout,"
+	+	"onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",")
+	// options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key
+,	noDefault: ("paneSelector,resizerCursor,customHotkey").split(",")
+};
+
+/**
+ * Processes options passed in converts flat-format data into subkey (JSON) format
+ * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName
+ * Plugins may also call this method so they can transform their own data
+ *
+ * @param  {!Object}	hash	Data/options passed by user - may be a single level or nested levels
+ * @return {Object}				Returns hash of minWidth & minHeight
+ */
+$.layout.transformData = function (hash) {
+	var	json = { panes: {}, center: {} } // init return object
+	,	data, branch, optKey, keys, key, val, i, c;
+
+	if (typeof hash !== "object") return json; // no options passed
+
+	// convert all 'flat-keys' to 'sub-key' format
+	for (optKey in hash) {
+		branch	= json;
+		data	= $.layout.optionsMap.layout;
+		val		= hash[ optKey ];
+		keys	= optKey.split("__"); // eg: west__size or north__fxSettings__duration
+		c		= keys.length - 1;
+		// convert underscore-delimited to subkeys
+		for (i=0; i <= c; i++) {
+			key = keys[i];
+			if (i === c)
+				branch[key] = val;
+			else if (!branch[key])
+				branch[key] = {}; // create the subkey
+			// recurse to sub-key for next loop - if not done
+			branch = branch[key];
+		}
+	}
+
+	return json;
+};
+
+// INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
+$.layout.backwardCompatibility = {
+	// data used by renameOldOptions()
+	map: {
+	//	OLD Option Name:			NEW Option Name
+		applyDefaultStyles:			"applyDemoStyles"
+	,	resizeNestedLayout:			"resizeChildLayout"
+	,	resizeWhileDragging:		"livePaneResizing"
+	,	resizeContentWhileDragging:	"liveContentResizing"
+	,	triggerEventsWhileDragging:	"triggerEventsDuringLiveResize"
+	,	maskIframesOnResize:		"maskContents"
+	,	useStateCookie:				"stateManagement.enabled"
+	,	"cookie.autoLoad":			"stateManagement.autoLoad"
+	,	"cookie.autoSave":			"stateManagement.autoSave"
+	,	"cookie.keys":				"stateManagement.stateKeys"
+	,	"cookie.name":				"stateManagement.cookie.name"
+	,	"cookie.domain":			"stateManagement.cookie.domain"
+	,	"cookie.path":				"stateManagement.cookie.path"
+	,	"cookie.expires":			"stateManagement.cookie.expires"
+	,	"cookie.secure":			"stateManagement.cookie.secure"
+	//	OLD Language options
+	,	noRoomToOpenTip:			"tips.noRoomToOpen"
+	,	togglerTip_open:			"tips.Close"	// open   = Close
+	,	togglerTip_closed:			"tips.Open"		// closed = Open
+	,	resizerTip:					"tips.Resize"
+	,	sliderTip:					"tips.Slide"
+	}
+
+/**
+* @param {Object}	opts
+*/
+,	renameOptions: function (opts) {
+		var map = $.layout.backwardCompatibility.map
+		,	oldData, newData, value
+		;
+		for (var itemPath in map) {
+			oldData	= getBranch( itemPath );
+			value	= oldData.branch[ oldData.key ];
+			if (value !== undefined) {
+				newData = getBranch( map[itemPath], true );
+				newData.branch[ newData.key ] = value;
+				delete oldData.branch[ oldData.key ];
+			}
+		}
+
+		/**
+		* @param {string}	path
+		* @param {boolean=}	[create=false]	Create path if does not exist
+		*/
+		function getBranch (path, create) {
+			var a = path.split(".") // split keys into array
+			,	c = a.length - 1
+			,	D = { branch: opts, key: a[c] } // init branch at top & set key (last item)
+			,	i = 0, k, undef;
+			for (; i<c; i++) { // skip the last key (data)
+				k = a[i];
+				if (D.branch[ k ] == undefined) { // child-key does not exist
+					if (create) {
+						D.branch = D.branch[ k ] = {}; // create child-branch
+					}
+					else // can't go any farther
+						D.branch = {}; // branch is undefined
+				}
+				else
+					D.branch = D.branch[ k ]; // get child-branch
+			}
+			return D;
+		};
+	}
+
+/**
+* @param {Object}	opts
+*/
+,	renameAllOptions: function (opts) {
+		var ren = $.layout.backwardCompatibility.renameOptions;
+		// rename root (layout) options
+		ren( opts );
+		// rename 'defaults' to 'panes'
+		if (opts.defaults) {
+			if (typeof opts.panes !== "object")
+				opts.panes = {};
+			$.extend(true, opts.panes, opts.defaults);
+			delete opts.defaults;
+		}
+		// rename options in the options.panes key
+		if (opts.panes) ren( opts.panes );
+		// rename options inside *each pane key*, eg: options.west
+		$.each($.layout.config.allPanes, function (i, pane) {
+			if (opts[pane]) ren( opts[pane] );
+		});	
+		return opts;
+	}
+};
+
+
+
+
+/*	============================================================
+ *	BEGIN WIDGET: $( selector ).layout( {options} );
+ *	============================================================
+ */
+$.fn.layout = function (opts) {
+	var
+
+	// local aliases to global data
+	browser	= $.layout.browser
+,	_c		= $.layout.config
+
+	// local aliases to utlity methods
+,	cssW	= $.layout.cssWidth
+,	cssH	= $.layout.cssHeight
+,	elDims	= $.layout.getElementDimensions
+,	elCSS	= $.layout.getElementCSS
+,	evtObj	= $.layout.getEventObject
+,	evtPane	= $.layout.parsePaneName
+
+/**
+ * options - populated by initOptions()
+ */
+,	options = $.extend(true, {}, $.layout.defaults)
+,	effects	= options.effects = $.extend(true, {}, $.layout.effects)
+
+/**
+ * layout-state object
+ */
+,	state = {
+		// generate unique ID to use for event.namespace so can unbind only events added by 'this layout'
+		id:			"layout"+ $.now()	// code uses alias: sID
+	,	initialized: false
+	,	container:	{} // init all keys
+	,	north:		{}
+	,	south:		{}
+	,	east:		{}
+	,	west:		{}
+	,	center:		{}
+	}
+
+/**
+ * parent/child-layout pointers
+ */
+//,	hasParentLayout	= false	- exists ONLY inside Instance so can be set externally
+,	children = {
+		north:		null
+	,	south:		null
+	,	east:		null
+	,	west:		null
+	,	center:		null
+	}
+
+/*
+ * ###########################
+ *  INTERNAL HELPER FUNCTIONS
+ * ###########################
+ */
+
+	/**
+	* Manages all internal timers
+	*/
+,	timer = {
+		data:	{}
+	,	set:	function (s, fn, ms) { timer.clear(s); timer.data[s] = setTimeout(fn, ms); }
+	,	clear:	function (s) { var t=timer.data; if (t[s]) {clearTimeout(t[s]); delete t[s];} }
+	}
+
+	/**
+	* Alert or console.log a message - IF option is enabled.
+	*
+	* @param {(string|!Object)}	msg		Message (or debug-data) to display
+	* @param {?boolean}			popup	True by default, means 'alert', false means use console.log
+	* @param {?boolean}			debug	True means is a widget debugging message
+	*/
+,	_log = function (msg, popup, debug) {
+		var o = options;
+		if ((o.showErrorMessages && !debug) || (debug && o.showDebugMessages))
+			$.layout.msg( o.name +' / '+ msg, (popup !== false) );
+		return false;
+	}
+
+	/**
+	* Executes a Callback function after a trigger event, like resize, open or close
+	*
+	* @param {string}			evtName			Name of the layout callback, eg "onresize_start"
+	* @param {?string}			pane			This is passed only so we can pass the 'pane object' to the callback
+	* @param {?string|?boolean}	skipBoundEvents	True = do not run events bound to the elements - only the callbacks set in options
+	*/
+,	_runCallbacks = function (evtName, pane, skipBoundEvents) {
+		var	paneCB	= pane && isStr(pane)
+		,	s		= paneCB ? state[pane] : state
+		,	o		= paneCB ? options[pane] : options
+		,	lName	= options.name
+			// names like onopen and onopen_end separate are interchangeable in options...
+		,	lng		= evtName + (evtName.match(/_/) ? "" : "_end")
+		,	shrt	= lng.match(/_end$/) ? lng.substr(0, lng.length - 4) : ""
+		,	fn		= o[lng] || o[shrt]
+		,	retVal	= "NC" // NC = No Callback
+		,	args	= []
+		,	$P
+		;
+		if ( !paneCB && $.type(skipBoundEvents) !== 'boolean' )
+			skipBoundEvents = pane; // allow pane param to be skipped for Layout callback
+
+		// first trigger the callback set in the options
+		if (fn) {
+			try {
+				// convert function name (string) to function object
+				if (isStr( fn )) {
+					if (fn.match(/,/)) {
+						// function name cannot contain a comma, 
+						// so must be a function name AND a parameter to pass
+						args = fn.split(",")
+						,	fn = eval(args[0]);
+					}
+					else // just the name of an external function?
+						fn = eval(fn);
+				}
+				// execute the callback, if exists
+				if ($.isFunction( fn )) {
+					if (args.length)
+						retVal = fn(args[1]); // pass the argument parsed from 'list'
+					else if ( paneCB )
+						// pass data: pane-name, pane-element, pane-state, pane-options, and layout-name
+						retVal = fn( pane, $Ps[pane], s, o, lName );
+					else // must be a layout/container callback - pass suitable info
+						retVal = fn( Instance, s, o, lName );
+				}
+			}
+			catch (ex) {
+				_log( options.errors.callbackError.replace(/EVENT/, $.trim(pane +" "+ lng)), false );
+			}
+		}
+
+		// trigger additional events bound directly to the pane
+		if (!skipBoundEvents && retVal !== false) {
+			if ( paneCB ) { // PANE events can be bound to each pane-elements
+				$P	= $Ps[pane];
+				o	= options[pane];
+				s	= state[pane];
+				$P.triggerHandler('layoutpane'+ lng, [ pane, $P, s, o, lName ]);
+				if (shrt)
+					$P.triggerHandler('layoutpane'+ shrt, [ pane, $P, s, o, lName ]);
+			}
+			else { // LAYOUT events can be bound to the container-element
+				$N.triggerHandler('layout'+ lng, [ Instance, s, o, lName ]);
+				if (shrt)
+					$N.triggerHandler('layout'+ shrt, [ Instance, s, o, lName ]);
+			}
+		}
+
+		// ALWAYS resizeChildLayout after a resize event - even during initialization
+		if (evtName === "onresize_end" || evtName === "onsizecontent_end")
+			resizeChildLayout(pane); 
+
+		return retVal;
+	}
+
+
+	/**
+	* cure iframe display issues in IE & other browsers
+	*/
+,	_fixIframe = function (pane) {
+		if (browser.mozilla) return; // skip FireFox - it auto-refreshes iframes onShow
+		var $P = $Ps[pane];
+		// if the 'pane' is an iframe, do it
+		if (state[pane].tagName === "IFRAME")
+			$P.css(_c.hidden).css(_c.visible); 
+		else // ditto for any iframes INSIDE the pane
+			$P.find('IFRAME').css(_c.hidden).css(_c.visible);
+	}
+
+	/**
+	* @param  {string}		pane		Can accept ONLY a 'pane' (east, west, etc)
+	* @param  {number=}		outerSize	(optional) Can pass a width, allowing calculations BEFORE element is resized
+	* @return {number}		Returns the innerHeight/Width of el by subtracting padding and borders
+	*/
+,	cssSize = function (pane, outerSize) {
+		var fn = _c[pane].dir=="horz" ? cssH : cssW;
+		return fn($Ps[pane], outerSize);
+	}
+
+	/**
+	* @param  {string}		pane		Can accept ONLY a 'pane' (east, west, etc)
+	* @return {Object}		Returns hash of minWidth & minHeight
+	*/
+,	cssMinDims = function (pane) {
+		// minWidth/Height means CSS width/height = 1px
+		var	$P	= $Ps[pane]
+		,	dir	= _c[pane].dir
+		,	d	= {
+				minWidth:	1001 - cssW($P, 1000)
+			,	minHeight:	1001 - cssH($P, 1000)
+			}
+		;
+		if (dir === "horz") d.minSize = d.minHeight;
+		if (dir === "vert") d.minSize = d.minWidth;
+		return d;
+	}
+
+	// TODO: see if these methods can be made more useful...
+	// TODO: *maybe* return cssW/H from these so caller can use this info
+
+	/**
+	* @param {(string|!Object)}		el
+	* @param {number=}				outerWidth
+	* @param {boolean=}				[autoHide=false]
+	*/
+,	setOuterWidth = function (el, outerWidth, autoHide) {
+		var $E = el, w;
+		if (isStr(el)) $E = $Ps[el]; // west
+		else if (!el.jquery) $E = $(el);
+		w = cssW($E, outerWidth);
+		$E.css({ width: w });
+		if (w > 0) {
+			if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) {
+				$E.show().data('autoHidden', false);
+				if (!browser.mozilla) // FireFox refreshes iframes - IE does not
+					// make hidden, then visible to 'refresh' display after animation
+					$E.css(_c.hidden).css(_c.visible);
+			}
+		}
+		else if (autoHide && !$E.data('autoHidden'))
+			$E.hide().data('autoHidden', true);
+	}
+
+	/**
+	* @param {(string|!Object)}		el
+	* @param {number=}				outerHeight
+	* @param {boolean=}				[autoHide=false]
+	*/
+,	setOuterHeight = function (el, outerHeight, autoHide) {
+		var $E = el, h;
+		if (isStr(el)) $E = $Ps[el]; // west
+		else if (!el.jquery) $E = $(el);
+		h = cssH($E, outerHeight);
+		$E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent
+		if (h > 0 && $E.innerWidth() > 0) {
+			if (autoHide && $E.data('autoHidden')) {
+				$E.show().data('autoHidden', false);
+				if (!browser.mozilla) // FireFox refreshes iframes - IE does not
+					$E.css(_c.hidden).css(_c.visible);
+			}
+		}
+		else if (autoHide && !$E.data('autoHidden'))
+			$E.hide().data('autoHidden', true);
+	}
+
+	/**
+	* @param {(string|!Object)}		el
+	* @param {number=}				outerSize
+	* @param {boolean=}				[autoHide=false]
+	*/
+,	setOuterSize = function (el, outerSize, autoHide) {
+		if (_c[pane].dir=="horz") // pane = north or south
+			setOuterHeight(el, outerSize, autoHide);
+		else // pane = east or west
+			setOuterWidth(el, outerSize, autoHide);
+	}
+
+
+	/**
+	* Converts any 'size' params to a pixel/integer size, if not already
+	* If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated
+	*
+	/**
+	* @param  {string}				pane
+	* @param  {(string|number)=}	size
+	* @param  {string=}				[dir]
+	* @return {number}
+	*/
+,	_parseSize = function (pane, size, dir) {
+		if (!dir) dir = _c[pane].dir;
+
+		if (isStr(size) && size.match(/%/))
+			size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal
+
+		if (size === 0)
+			return 0;
+		else if (size >= 1)
+			return parseInt(size, 10);
+
+		var o = options, avail = 0;
+		if (dir=="horz") // north or south or center.minHeight
+			avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0);
+		else if (dir=="vert") // east or west or center.minWidth
+			avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0);
+
+		if (size === -1) // -1 == 100%
+			return avail;
+		else if (size > 0) // percentage, eg: .25
+			return round(avail * size);
+		else if (pane=="center")
+			return 0;
+		else { // size < 0 || size=='auto' || size==Missing || size==Invalid
+			// auto-size the pane
+			var	dim	= (dir === "horz" ? "height" : "width")
+			,	$P	= $Ps[pane]
+			,	$C	= dim === 'height' ? $Cs[pane] : false
+			,	vis	= $.layout.showInvisibly($P) // show pane invisibly if hidden
+			,	szP	= $P.css(dim) // SAVE current pane size
+			,	szC	= $C ? $C.css(dim) : 0 // SAVE current content size
+			;
+			$P.css(dim, "auto");
+			if ($C) $C.css(dim, "auto");
+			size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE
+			$P.css(dim, szP).css(vis); // RESET size & visibility
+			if ($C) $C.css(dim, szC);
+			return size;
+		}
+	}
+
+	/**
+	* Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added
+	*
+	* @param  {(string|!Object)}	pane
+	* @param  {boolean=}			[inclSpace=false]
+	* @return {number}				Returns EITHER Width for east/west panes OR Height for north/south panes
+	*/
+,	getPaneSize = function (pane, inclSpace) {
+		var 
+			$P	= $Ps[pane]
+		,	o	= options[pane]
+		,	s	= state[pane]
+		,	oSp	= (inclSpace ? o.spacing_open : 0)
+		,	cSp	= (inclSpace ? o.spacing_closed : 0)
+		;
+		if (!$P || s.isHidden)
+			return 0;
+		else if (s.isClosed || (s.isSliding && inclSpace))
+			return cSp;
+		else if (_c[pane].dir === "horz")
+			return $P.outerHeight() + oSp;
+		else // dir === "vert"
+			return $P.outerWidth() + oSp;
+	}
+
+	/**
+	* Calculate min/max pane dimensions and limits for resizing
+	*
+	* @param  {string}		pane
+	* @param  {boolean=}	[slide=false]
+	*/
+,	setSizeLimits = function (pane, slide) {
+		if (!isInitialized()) return;
+		var 
+			o				= options[pane]
+		,	s				= state[pane]
+		,	c				= _c[pane]
+		,	dir				= c.dir
+		,	side			= c.side.toLowerCase()
+		,	type			= c.sizeType.toLowerCase()
+		,	isSliding		= (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param
+		,	$P				= $Ps[pane]
+		,	paneSpacing		= o.spacing_open
+		//	measure the pane on the *opposite side* from this pane
+		,	altPane			= _c.oppositeEdge[pane]
+		,	altS			= state[altPane]
+		,	$altP			= $Ps[altPane]
+		,	altPaneSize		= (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth()))
+		,	altPaneSpacing	= ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0)
+		//	limitSize prevents this pane from 'overlapping' opposite pane
+		,	containerSize	= (dir=="horz" ? sC.innerHeight : sC.innerWidth)
+		,	minCenterDims	= cssMinDims("center")
+		,	minCenterSize	= dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth)
+		//	if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them
+		,	limitSize		= (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing)))
+		,	minSize			= s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize )
+		,	maxSize			= s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize )
+		,	r				= s.resizerPosition = {} // used to set resizing limits
+		,	top				= sC.insetTop
+		,	left			= sC.insetLeft
+		,	W				= sC.innerWidth
+		,	H				= sC.innerHeight
+		,	rW				= o.spacing_open // subtract resizer-width to get top/left position for south/east
+		;
+		switch (pane) {
+			case "north":	r.min = top + minSize;
+							r.max = top + maxSize;
+							break;
+			case "west":	r.min = left + minSize;
+							r.max = left + maxSize;
+							break;
+			case "south":	r.min = top + H - maxSize - rW;
+							r.max = top + H - minSize - rW;
+							break;
+			case "east":	r.min = left + W - maxSize - rW;
+							r.max = left + W - minSize - rW;
+							break;
+		};
+	}
+
+	/**
+	* Returns data for setting the size/position of center pane. Also used to set Height for east/west panes
+	*
+	* @return JSON  Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height
+	*/
+,	calcNewCenterPaneDims = function () {
+		var d = {
+			top:	getPaneSize("north", true) // true = include 'spacing' value for pane
+		,	bottom:	getPaneSize("south", true)
+		,	left:	getPaneSize("west", true)
+		,	right:	getPaneSize("east", true)
+		,	width:	0
+		,	height:	0
+		};
+
+		// NOTE: sC = state.container
+		// calc center-pane outer dimensions
+		d.width		= sC.innerWidth - d.left - d.right;  // outerWidth
+		d.height	= sC.innerHeight - d.bottom - d.top; // outerHeight
+		// add the 'container border/padding' to get final positions relative to the container
+		d.top		+= sC.insetTop;
+		d.bottom	+= sC.insetBottom;
+		d.left		+= sC.insetLeft;
+		d.right		+= sC.insetRight;
+
+		return d;
+	}
+
+
+	/**
+	* @param {!Object}		el
+	* @param {boolean=}		[allStates=false]
+	*/
+,	getHoverClasses = function (el, allStates) {
+		var
+			$El		= $(el)
+		,	type	= $El.data("layoutRole")
+		,	pane	= $El.data("layoutEdge")
+		,	o		= options[pane]
+		,	root	= o[type +"Class"]
+		,	_pane	= "-"+ pane // eg: "-west"
+		,	_open	= "-open"
+		,	_closed	= "-closed"
+		,	_slide	= "-sliding"
+		,	_hover	= "-hover " // NOTE the trailing space
+		,	_state	= $El.hasClass(root+_closed) ? _closed : _open
+		,	_alt	= _state === _closed ? _open : _closed
+		,	classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover)
+		;
+		if (allStates) // when 'removing' classes, also remove alternate-state classes
+			classes += (root+_alt+_hover) + (root+_pane+_alt+_hover);
+
+		if (type=="resizer" && $El.hasClass(root+_slide))
+			classes += (root+_slide+_hover) + (root+_pane+_slide+_hover);
+
+		return $.trim(classes);
+	}
+,	addHover	= function (evt, el) {
+		var $E = $(el || this);
+		if (evt && $E.data("layoutRole") === "toggler")
+			evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar
+		$E.addClass( getHoverClasses($E) );
+	}
+,	removeHover	= function (evt, el) {
+		var $E = $(el || this);
+		$E.removeClass( getHoverClasses($E, true) );
+	}
+
+,	onResizerEnter	= function (evt) { // ALSO called by toggler.mouseenter
+		if ($.fn.disableSelection)
+			$("body").disableSelection();
+	}
+,	onResizerLeave	= function (evt, el) {
+		var
+			e = el || this // el is only passed when called by the timer
+		,	pane = $(e).data("layoutEdge")
+		,	name = pane +"ResizerLeave"
+		;
+		timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set
+		timer.clear(name); // cancel enableSelection timer - may re/set below
+		// this method calls itself on a timer because it needs to allow
+		// enough time for dragging to kick-in and set the isResizing flag
+		// dragging has a 100ms delay set, so this delay must be >100
+		if (!el) // 1st call - mouseleave event
+			timer.set(name, function(){ onResizerLeave(evt, e); }, 200);
+		// if user is resizing, then dragStop will enableSelection(), so can skip it here
+		else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer
+			$("body").enableSelection();
+	}
+
+/*
+ * ###########################
+ *   INITIALIZATION METHODS
+ * ###########################
+ */
+
+	/**
+	* Initialize the layout - called automatically whenever an instance of layout is created
+	*
+	* @see  none - triggered onInit
+	* @return  mixed	true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort
+	*/
+,	_create = function () {
+		// initialize config/options
+		initOptions();
+		var o = options;
+
+		// TEMP state so isInitialized returns true during init process
+		state.creatingLayout = true;
+
+		// init plugins for this layout, if there are any (eg: stateManagement)
+		runPluginCallbacks( Instance, $.layout.onCreate );
+
+		// options & state have been initialized, so now run beforeLoad callback
+		// onload will CANCEL layout creation if it returns false
+		if (false === _runCallbacks("onload_start"))
+			return 'cancel';
+
+		// initialize the container element
+		_initContainer();
+
+		// bind hotkey function - keyDown - if required
+		initHotkeys();
+
+		// bind window.onunload
+		$(window).bind("unload."+ sID, unload);
+
+		// init plugins for this layout, if there are any (eg: customButtons)
+		runPluginCallbacks( Instance, $.layout.onLoad );
+
+		// if layout elements are hidden, then layout WILL NOT complete initialization!
+		// initLayoutElements will set initialized=true and run the onload callback IF successful
+		if (o.initPanes) _initLayoutElements();
+
+		delete state.creatingLayout;
+
+		return state.initialized;
+	}
+
+	/**
+	* Initialize the layout IF not already
+	*
+	* @see  All methods in Instance run this test
+	* @return  boolean	true = layoutElements have been initialized | false = panes are not initialized (yet)
+	*/
+,	isInitialized = function () {
+		if (state.initialized || state.creatingLayout) return true;	// already initialized
+		else return _initLayoutElements();	// try to init panes NOW
+	}
+
+	/**
+	* Initialize the layout - called automatically whenever an instance of layout is created
+	*
+	* @see  _create() & isInitialized
+	* @return  An object pointer to the instance created
+	*/
+,	_initLayoutElements = function (retry) {
+		// initialize config/options
+		var o = options;
+
+		// CANNOT init panes inside a hidden container!
+		if (!$N.is(":visible")) {
+			// handle Chrome bug where popup window 'has no height'
+			// if layout is BODY element, try again in 50ms
+			// SEE: http://layout.jquery-dev.net/samples/test_popup_window.html
+			if ( !retry && browser.webkit && $N[0].tagName === "BODY" )
+				setTimeout(function(){ _initLayoutElements(true); }, 50);
+			return false;
+		}
+
+		// a center pane is required, so make sure it exists
+		if (!getPane("center").length) {
+			return _log( o.errors.centerPaneMissing );
+		}
+
+		// TEMP state so isInitialized returns true during init process
+		state.creatingLayout = true;
+
+		// update Container dims
+		$.extend(sC, elDims( $N ));
+
+		// initialize all layout elements
+		initPanes();	// size & position panes - calls initHandles() - which calls initResizable()
+
+		if (o.scrollToBookmarkOnLoad) {
+			var l = self.location;
+			if (l.hash) l.replace( l.hash ); // scrollTo Bookmark
+		}
+
+		// check to see if this layout 'nested' inside a pane
+		if (Instance.hasParentLayout)
+			o.resizeWithWindow = false;
+		// bind resizeAll() for 'this layout instance' to window.resize event
+		else if (o.resizeWithWindow)
+			$(window).bind("resize."+ sID, windowResize);
+
+		delete state.creatingLayout;
+		state.initialized = true;
+
+		// init plugins for this layout, if there are any
+		runPluginCallbacks( Instance, $.layout.onReady );
+
+		// now run the onload callback, if exists
+		_runCallbacks("onload_end");
+
+		return true; // elements initialized successfully
+	}
+
+	/**
+	* Initialize nested layouts - called when _initLayoutElements completes
+	*
+	* NOT CURRENTLY USED
+	*
+	* @see _initLayoutElements
+	* @return  An object pointer to the instance created
+	*/
+,	_initChildLayouts = function () {
+		$.each(_c.allPanes, function (idx, pane) {
+			if (options[pane].initChildLayout)
+				createChildLayout( pane );
+		});
+	}
+
+	/**
+	* Initialize nested layouts for a specific pane - can optionally pass layout-options
+	*
+	* @see _initChildLayouts
+	* @param {string|Object}	evt_or_pane	The pane being opened, ie: north, south, east, or west
+	* @param {Object=}			[opts]		Layout-options - if passed, will OVERRRIDE options[pane].childOptions
+	* @return  An object pointer to the layout instance created - or null
+	*/
+,	createChildLayout = function (evt_or_pane, opts) {
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$P	= $Ps[pane]
+		,	C	= children
+		;
+		if ($P) {
+			var	$C	= $Cs[pane]
+			,	o	= opts || options[pane].childOptions
+			,	d	= "layout"
+			//	determine which element is supposed to be the 'child container'
+			//	if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane
+			,	$Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P)
+			,	containerFound = $Cont.length
+			//	see if a child-layout ALREADY exists on this element
+			,	child = containerFound ? (C[pane] = $Cont.data(d) || null) : null
+			;
+			// if no layout exists, but childOptions are set, try to create the layout now
+			if (!child && containerFound && o)
+				child = C[pane] = $Cont.eq(0).layout(o) || null;
+			if (child)
+				child.hasParentLayout = true;	// set parent-flag in child
+		}
+		Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null
+	}
+
+,	windowResize = function () {
+		var delay = Number(options.resizeWithWindowDelay);
+		if (delay < 10) delay = 100; // MUST have a delay!
+		// resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway
+		timer.clear("winResize"); // if already running
+		timer.set("winResize", function(){
+			timer.clear("winResize");
+			timer.clear("winResizeRepeater");
+			var dims = elDims( $N );
+			// only trigger resizeAll() if container has changed size
+			if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight)
+				resizeAll();
+		}, delay);
+		// ALSO set fixed-delay timer, if not already running
+		if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater();
+	}
+
+,	setWindowResizeRepeater = function () {
+		var delay = Number(options.resizeWithWindowMaxDelay);
+		if (delay > 0)
+			timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay);
+	}
+
+,	unload = function () {
+		var o = options;
+
+		_runCallbacks("onunload_start");
+
+		// trigger plugin callabacks for this layout (eg: stateManagement)
+		runPluginCallbacks( Instance, $.layout.onUnload );
+
+		_runCallbacks("onunload_end");
+	}
+
+	/**
+	* Validate and initialize container CSS and events
+	*
+	* @see  _create()
+	*/
+,	_initContainer = function () {
+		var
+			N		= $N[0]
+		,	tag		= sC.tagName = N.tagName
+		,	id		= sC.id = N.id
+		,	cls		= sC.className = N.className
+		,	o		= options
+		,	name	= o.name
+		,	fullPage= (tag === "BODY")
+		,	props	= "overflow,position,margin,padding,border"
+		,	css		= "layoutCSS"
+		,	CSS		= {}
+		,	hid		= "hidden" // used A LOT!
+		//	see if this container is a 'pane' inside an outer-layout
+		,	parent	= $N.data("parentLayout")	// parent-layout Instance
+		,	pane	= $N.data("layoutEdge")		// pane-name in parent-layout
+		,	isChild	= parent && pane
+		;
+		// sC -> state.container
+		sC.selector = $N.selector.split(".slice")[0];
+		sC.ref		= (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages
+
+		$N	.data({
+				layout: Instance
+			,	layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID
+			})
+			.addClass(o.containerClass)
+		;
+		var layoutMethods = {
+			destroy:	''
+		,	initPanes:	''
+		,	resizeAll:	'resizeAll'
+		,	resize:		'resizeAll'
+		};
+		// loop hash and bind all methods - include layoutID namespacing
+		for (name in layoutMethods) {
+			$N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]);
+		}
+
+		// if this container is another layout's 'pane', then set child/parent pointers
+		if (isChild) {
+			// update parent flag
+			Instance.hasParentLayout = true;
+			// set pointers to THIS child-layout (Instance) in parent-layout
+			// NOTE: parent.PANE.child is an ALIAS to parent.children.PANE
+			parent[pane].child = parent.children[pane] = $N.data("layout");
+		}
+
+		// SAVE original container CSS for use in destroy()
+		if (!$N.data(css)) {
+			// handle props like overflow different for BODY & HTML - has 'system default' values
+			if (fullPage) {
+				CSS = $.extend( elCSS($N, props), {
+					height:		$N.css("height")
+				,	overflow:	$N.css("overflow")
+				,	overflowX:	$N.css("overflowX")
+				,	overflowY:	$N.css("overflowY")
+				});
+				// ALSO SAVE <HTML> CSS
+				var $H = $("html");
+				$H.data(css, {
+					height:		"auto" // FF would return a fixed px-size!
+				,	overflow:	$H.css("overflow")
+				,	overflowX:	$H.css("overflowX")
+				,	overflowY:	$H.css("overflowY")
+				});
+			}
+			else // handle props normally for non-body elements
+				CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY");
+
+			$N.data(css, CSS);
+		}
+
+		try { // format html/body if this is a full page layout
+			if (fullPage) {
+				$("html").css({
+					height:		"100%"
+				,	overflow:	hid
+				,	overflowX:	hid
+				,	overflowY:	hid
+				});
+				$("body").css({
+					position:	"relative"
+				,	height:		"100%"
+				,	overflow:	hid
+				,	overflowX:	hid
+				,	overflowY:	hid
+				,	margin:		0
+				,	padding:	0		// TODO: test whether body-padding could be handled?
+				,	border:		"none"	// a body-border creates problems because it cannot be measured!
+				});
+
+				// set current layout-container dimensions
+				$.extend(sC, elDims( $N ));
+			}
+			else { // set required CSS for overflow and position
+				// ENSURE container will not 'scroll'
+				CSS = { overflow: hid, overflowX: hid, overflowY: hid }
+				var
+					p = $N.css("position")
+				,	h = $N.css("height")
+				;
+				// if this is a NESTED layout, then container/outer-pane ALREADY has position and height
+				if (!isChild) {
+					if (!p || !p.match(/fixed|absolute|relative/))
+						CSS.position = "relative"; // container MUST have a 'position'
+					/*
+					if (!h || h=="auto")
+						CSS.height = "100%"; // container MUST have a 'height'
+					*/
+				}
+				$N.css( CSS );
+
+				// set current layout-container dimensions
+				if ( $N.is(":visible") ) {
+					$.extend(sC, elDims( $N ));
+					if (sC.innerHeight < 1)
+						_log( o.errors.noContainerHeight.replace(/CONTAINER/, sC.ref) );
+				}
+			}
+		} catch (ex) {}
+	}
+
+	/**
+	* Bind layout hotkeys - if options enabled
+	*
+	* @see  _create() and addPane()
+	* @param {string=}	[panes=""]	The edge(s) to process
+	*/
+,	initHotkeys = function (panes) {
+		panes = panes ? panes.split(",") : _c.borderPanes;
+		// bind keyDown to capture hotkeys, if option enabled for ANY pane
+		$.each(panes, function (i, pane) {
+			var o = options[pane];
+			if (o.enableCursorHotkey || o.customHotkey) {
+				$(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE
+				return false; // BREAK - binding was done
+			}
+		});
+	}
+
+	/**
+	* Build final OPTIONS data
+	*
+	* @see  _create()
+	*/
+,	initOptions = function () {
+		var data, d, pane, key, val, i, c, o;
+
+		// reprocess user's layout-options to have correct options sub-key structure
+		opts = $.layout.transformData( opts ); // panes = default subkey
+
+		// auto-rename old options for backward compatibility
+		opts = $.layout.backwardCompatibility.renameAllOptions( opts );
+
+		// if user-options has 'panes' key (pane-defaults), clean it...
+		if (!$.isEmptyObject(opts.panes)) {
+			// REMOVE any pane-defaults that MUST be set per-pane
+			data = $.layout.optionsMap.noDefault;
+			for (i=0, c=data.length; i<c; i++) {
+				key = data[i];
+				delete opts.panes[key]; // OK if does not exist
+			}
+			// REMOVE any layout-options specified under opts.panes
+			data = $.layout.optionsMap.layout;
+			for (i=0, c=data.length; i<c; i++) {
+				key = data[i];
+				delete opts.panes[key]; // OK if does not exist
+			}
+		}
+
+		// MOVE any NON-layout-options from opts-root to opts.panes
+		data = $.layout.optionsMap.layout;
+		var rootKeys = $.layout.config.optionRootKeys;
+		for (key in opts) {
+			val = opts[key];
+			if ($.inArray(key, rootKeys) < 0 && $.inArray(key, data) < 0) {
+				if (!opts.panes[key])
+					opts.panes[key] = $.isPlainObject(val) ? $.extend(true, {}, val) : val;
+				delete opts[key]
+			}
+		}
+
+		// START by updating ALL options from opts
+		$.extend(true, options, opts);
+
+		// CREATE final options (and config) for EACH pane
+		$.each(_c.allPanes, function (i, pane) {
+
+			// apply 'pane-defaults' to CONFIG.[PANE]
+			_c[pane] = $.extend(true, {}, _c.panes, _c[pane]);
+
+			d = options.panes;
+			o = options[pane];
+
+			// center-pane uses SOME keys in defaults.panes branch
+			if (pane === 'center') {
+				// ONLY copy keys from opts.panes listed in: $.layout.optionsMap.center
+				data = $.layout.optionsMap.center;		// list of 'center-pane keys'
+				for (i=0, c=data.length; i<c; i++) {	// loop the list...
+					key = data[i];
+					// only need to use pane-default if pane-specific value not set
+					if (!opts.center[key] && (opts.panes[key] || !o[key]))
+						o[key] = d[key]; // pane-default
+				}
+			}
+			else {
+				// border-panes use ALL keys in defaults.panes branch
+				o = options[pane] = $.extend(true, {}, d, o); // re-apply pane-specific opts AFTER pane-defaults
+				createFxOptions( pane );
+				// ensure all border-pane-specific base-classes exist
+				if (!o.resizerClass)	o.resizerClass	= "ui-layout-resizer";
+				if (!o.togglerClass)	o.togglerClass	= "ui-layout-toggler";
+			}
+			// ensure we have base pane-class (ALL panes)
+			if (!o.paneClass) o.paneClass = "ui-layout-pane";
+		});
+
+		// update options.zIndexes if a zIndex-option specified
+		var zo	= opts.zIndex
+		,	z	= options.zIndexes;
+		if (zo > 0) {
+			z.pane_normal		= zo;
+			z.content_mask		= max(zo+1, z.content_mask);	// MIN = +1
+			z.resizer_normal	= max(zo+2, z.resizer_normal);	// MIN = +2
+		}
+
+		// DELETE 'panes' key now that we are done - values were copied to EACH pane
+		delete options.panes;
+
+
+		function createFxOptions ( pane ) {
+			var	o = options[pane]
+			,	d = options.panes;
+			// ensure fxSettings key to avoid errors
+			if (!o.fxSettings) o.fxSettings = {};
+			if (!d.fxSettings) d.fxSettings = {};
+
+			$.each(["_open","_close","_size"], function (i,n) { 
+				var
+					sName		= "fxName"+ n
+				,	sSpeed		= "fxSpeed"+ n
+				,	sSettings	= "fxSettings"+ n
+					// recalculate fxName according to specificity rules
+				,	fxName = o[sName] =
+						o[sName]	// options.west.fxName_open
+					||	d[sName]	// options.panes.fxName_open
+					||	o.fxName	// options.west.fxName
+					||	d.fxName	// options.panes.fxName
+					||	"none"		// MEANS $.layout.defaults.panes.fxName == "" || false || null || 0
+				;
+				// validate fxName to ensure is valid effect - MUST have effect-config data in options.effects
+				if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName])
+					fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName
+
+				// set vars for effects subkeys to simplify logic
+				var	fx		= options.effects[fxName] || {}	// effects.slide
+				,	fx_all	= fx.all	|| null				// effects.slide.all
+				,	fx_pane	= fx[pane]	|| null				// effects.slide.west
+				;
+				// create fxSpeed[_open|_close|_size]
+				o[sSpeed] =
+					o[sSpeed]				// options.west.fxSpeed_open
+				||	d[sSpeed]				// options.west.fxSpeed_open
+				||	o.fxSpeed				// options.west.fxSpeed
+				||	d.fxSpeed				// options.panes.fxSpeed
+				||	null					// DEFAULT - let fxSetting.duration control speed
+				;
+				// create fxSettings[_open|_close|_size]
+				o[sSettings] = $.extend(
+					true
+				,	{}
+				,	fx_all					// effects.slide.all
+				,	fx_pane					// effects.slide.west
+				,	d.fxSettings			// options.panes.fxSettings
+				,	o.fxSettings			// options.west.fxSettings
+				,	d[sSettings]			// options.panes.fxSettings_open
+				,	o[sSettings]			// options.west.fxSettings_open
+				);
+			});
+
+			// DONE creating action-specific-settings for this pane,
+			// so DELETE generic options - are no longer meaningful
+			delete o.fxName;
+			delete o.fxSpeed;
+			delete o.fxSettings;
+		}
+	}
+
+	/**
+	* Initialize module objects, styling, size and position for all panes
+	*
+	* @see  _initElements()
+	* @param {string}	pane		The pane to process
+	*/
+,	getPane = function (pane) {
+		var sel = options[pane].paneSelector
+		if (sel.substr(0,1)==="#") // ID selector
+			// NOTE: elements selected 'by ID' DO NOT have to be 'children'
+			return $N.find(sel).eq(0);
+		else { // class or other selector
+			var $P = $N.children(sel).eq(0);
+			// look for the pane nested inside a 'form' element
+			return $P.length ? $P : $N.children("form:first").children(sel).eq(0);
+		}
+	}
+
+,	initPanes = function (evt) {
+		// stopPropagation if called by trigger("layoutinitpanes") - use evtPane utility 
+		evtPane(evt);
+
+		// NOTE: do north & south FIRST so we can measure their height - do center LAST
+		$.each(_c.allPanes, function (idx, pane) {
+			addPane( pane, true );
+		});
+
+		// init the pane-handles NOW in case we have to hide or close the pane below
+		initHandles();
+
+		// now that all panes have been initialized and initially-sized,
+		// make sure there is really enough space available for each pane
+		$.each(_c.borderPanes, function (i, pane) {
+			if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN
+				setSizeLimits(pane);
+				makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit()
+			}
+		});
+		// size center-pane AGAIN in case we 'closed' a border-pane in loop above
+		sizeMidPanes("center");
+
+		//	Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing!
+		//	Before RC30.3, there was a 10ms delay here, but that caused layout 
+		//	to load asynchrously, which is BAD, so try skipping delay for now
+
+		// process pane contents and callbacks, and init/resize child-layout if exists
+		$.each(_c.allPanes, function (i, pane) {
+			var o = options[pane];
+			if ($Ps[pane]) {
+				if (state[pane].isVisible) { // pane is OPEN
+					sizeContent(pane);
+					// trigger pane.onResize if triggerEventsOnLoad = true
+					if (o.triggerEventsOnLoad)
+						_runCallbacks("onresize_end", pane);
+				else // automatic if onresize called, otherwise call it specifically
+					// resize child - IF inner-layout already exists (created before this layout)
+					resizeChildLayout(pane);
+				}
+				// init childLayout - even if pane is not visible
+				if (o.initChildLayout && o.childOptions)
+					createChildLayout(pane);
+			}
+		});
+	}
+
+	/**
+	* Add a pane to the layout - subroutine of initPanes()
+	*
+	* @see  initPanes()
+	* @param {string}	pane			The pane to process
+	* @param {boolean=}	[force=false]	Size content after init
+	*/
+,	addPane = function (pane, force) {
+		if (!force && !isInitialized()) return;
+		var
+			o		= options[pane]
+		,	s		= state[pane]
+		,	c		= _c[pane]
+		,	fx		= s.fx
+		,	dir		= c.dir
+		,	spacing	= o.spacing_open || 0
+		,	isCenter = (pane === "center")
+		,	CSS		= {}
+		,	$P		= $Ps[pane]
+		,	size, minSize, maxSize
+		;
+		// if pane-pointer already exists, remove the old one first
+		if ($P)
+			removePane( pane, false, true, false );
+		else
+			$Cs[pane] = false; // init
+
+		$P = $Ps[pane] = getPane(pane);
+		if (!$P.length) {
+			$Ps[pane] = false; // logic
+			return;
+		}
+
+		// SAVE original Pane CSS
+		if (!$P.data("layoutCSS")) {
+			var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border";
+			$P.data("layoutCSS", elCSS($P, props));
+		}
+
+		// create alias for pane data in Instance - initHandles will add more
+		Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] };
+
+		// add classes, attributes & events
+		$P	.data({
+				parentLayout:	Instance		// pointer to Layout Instance
+			,	layoutPane:		Instance[pane]	// NEW pointer to pane-alias-object
+			,	layoutEdge:		pane
+			,	layoutRole:		"pane"
+			})
+			.css(c.cssReq).css("zIndex", options.zIndexes.pane_normal)
+			.css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles
+			.addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector'
+			.bind("mouseenter."+ sID, addHover )
+			.bind("mouseleave."+ sID, removeHover )
+			;
+		var paneMethods = {
+				hide:				''
+			,	show:				''
+			,	toggle:				''
+			,	close:				''
+			,	open:				''
+			,	slideOpen:			''
+			,	slideClose:			''
+			,	slideToggle:		''
+			,	size:				'sizePane'
+			,	sizePane:			'sizePane'
+			,	sizeContent:		''
+			,	sizeHandles:		''
+			,	enableClosable:		''
+			,	disableClosable:	''
+			,	enableSlideable:	''
+			,	disableSlideable:	''
+			,	enableResizable:	''
+			,	disableResizable:	''
+			,	swapPanes:			'swapPanes'
+			,	swap:				'swapPanes'
+			,	move:				'swapPanes'
+			,	removePane:			'removePane'
+			,	remove:				'removePane'
+			,	createChildLayout:	''
+			,	resizeChildLayout:	''
+			,	resizeAll:			'resizeAll'
+			,	resizeLayout:		'resizeAll'
+			}
+		,	name;
+		// loop hash and bind all methods - include layoutID namespacing
+		for (name in paneMethods) {
+			$P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]);
+		}
+
+		// see if this pane has a 'scrolling-content element'
+		initContent(pane, false); // false = do NOT sizeContent() - called later
+
+		if (!isCenter) {
+			// call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden)
+			// if o.size is auto or not valid, then MEASURE the pane and use that as its 'size'
+			size	= s.size = _parseSize(pane, o.size);
+			minSize	= _parseSize(pane,o.minSize) || 1;
+			maxSize	= _parseSize(pane,o.maxSize) || 100000;
+			if (size > 0) size = max(min(size, maxSize), minSize);
+
+			// state for border-panes
+			s.isClosed  = false; // true = pane is closed
+			s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes
+			s.isResizing= false; // true = pane is in process of being resized
+			s.isHidden	= false; // true = pane is hidden - no spacing, resizer or toggler is visible!
+
+			// array for 'pin buttons' whose classNames are auto-updated on pane-open/-close
+			if (!s.pins) s.pins = [];
+		}
+		//	states common to ALL panes
+		s.tagName	= $P[0].tagName;
+		s.edge		= pane;		// useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going)
+		s.noRoom	= false;	// true = pane 'automatically' hidden due to insufficient room - will unhide automatically
+		s.isVisible	= true;		// false = pane is invisible - closed OR hidden - simplify logic
+
+		// set css-position to account for container borders & padding
+		switch (pane) {
+			case "north": 	CSS.top 	= sC.insetTop;
+							CSS.left 	= sC.insetLeft;
+							CSS.right	= sC.insetRight;
+							break;
+			case "south": 	CSS.bottom	= sC.insetBottom;
+							CSS.left 	= sC.insetLeft;
+							CSS.right 	= sC.insetRight;
+							break;
+			case "west": 	CSS.left 	= sC.insetLeft; // top, bottom & height set by sizeMidPanes()
+							break;
+			case "east": 	CSS.right 	= sC.insetRight; // ditto
+							break;
+			case "center":	// top, left, width & height set by sizeMidPanes()
+		}
+
+		if (dir === "horz") // north or south pane
+			CSS.height = cssH($P, size);
+		else if (dir === "vert") // east or west pane
+			CSS.width = cssW($P, size);
+		//else if (isCenter) {}
+
+		$P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes
+		if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback
+
+		// close or hide the pane if specified in settings
+		if (o.initClosed && o.closable && !o.initHidden)
+			close(pane, true, true); // true, true = force, noAnimation
+		else if (o.initHidden || o.initClosed)
+			hide(pane); // will be completely invisible - no resizer or spacing
+		else if (!s.noRoom)
+			// make the pane visible - in case was initially hidden
+			$P.css("display","block");
+		// ELSE setAsOpen() - called later by initHandles()
+
+		// RESET visibility now - pane will appear IF display:block
+		$P.css("visibility","visible");
+
+		// check option for auto-handling of pop-ups & drop-downs
+		if (o.showOverflowOnHover)
+			$P.hover( allowOverflow, resetOverflow );
+
+		// if manually adding a pane AFTER layout initialization, then...
+		if (state.initialized) {
+			initHandles( pane );
+			initHotkeys( pane );
+			resizeAll(); // will sizeContent if pane is visible
+			if (s.isVisible) { // pane is OPEN
+				if (o.triggerEventsOnLoad)
+					_runCallbacks("onresize_end", pane);
+				else // automatic if onresize called, otherwise call it specifically
+					// resize child - IF inner-layout already exists (created before this layout)
+					resizeChildLayout(pane); // a previously existing childLayout
+			}
+			if (o.initChildLayout && o.childOptions)
+				createChildLayout(pane);
+		}
+	}
+
+	/**
+	* Initialize module objects, styling, size and position for all resize bars and toggler buttons
+	*
+	* @see  _create()
+	* @param {string=}	[panes=""]	The edge(s) to process
+	*/
+,	initHandles = function (panes) {
+		panes = panes ? panes.split(",") : _c.borderPanes;
+
+		// create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV
+		$.each(panes, function (i, pane) {
+			var $P		= $Ps[pane];
+			$Rs[pane]	= false; // INIT
+			$Ts[pane]	= false;
+			if (!$P) return; // pane does not exist - skip
+
+			var 
+				o		= options[pane]
+			,	s		= state[pane]
+			,	c		= _c[pane]
+			,	paneId	= o.paneSelector.substr(0,1) === "#" ? o.paneSelector.substr(1) : ""
+			,	rClass	= o.resizerClass
+			,	tClass	= o.togglerClass
+			,	side	= c.side.toLowerCase()
+			,	spacing	= (s.isVisible ? o.spacing_open : o.spacing_closed)
+			,	_pane	= "-"+ pane // used for classNames
+			,	_state	= (s.isVisible ? "-open" : "-closed") // used for classNames
+			,	I		= Instance[pane]
+				// INIT RESIZER BAR
+			,	$R		= I.resizer = $Rs[pane] = $("<div></div>")
+				// INIT TOGGLER BUTTON
+			,	$T		= I.toggler = (o.closable ? $Ts[pane] = $("<div></div>") : false)
+			;
+
+			//if (s.isVisible && o.resizable) ... handled by initResizable
+			if (!s.isVisible && o.slidable)
+				$R.attr("title", o.tips.Slide).css("cursor", o.sliderCursor);
+
+			$R	// if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer"
+				.attr("id", paneId ? paneId +"-resizer" : "" )
+				.data({
+					parentLayout:	Instance
+				,	layoutPane:		Instance[pane]	// NEW pointer to pane-alias-object
+				,	layoutEdge:		pane
+				,	layoutRole:		"resizer"
+				})
+				.css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal)
+				.css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles
+				.addClass(rClass +" "+ rClass+_pane)
+				.hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead
+				.hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter
+				.appendTo($N) // append DIV to container
+			;
+
+			if ($T) {
+				$T	// if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler"
+					.attr("id", paneId ? paneId +"-toggler" : "" )
+					.data({
+						parentLayout:	Instance
+					,	layoutPane:		Instance[pane]	// NEW pointer to pane-alias-object
+					,	layoutEdge:		pane
+					,	layoutRole:		"toggler"
+					})
+					.css(_c.togglers.cssReq) // add base/required styles
+					.css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles
+					.addClass(tClass +" "+ tClass+_pane)
+					.hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead
+					.bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer
+					.appendTo($R) // append SPAN to resizer DIV
+				;
+				// ADD INNER-SPANS TO TOGGLER
+				if (o.togglerContent_open) // ui-layout-open
+					$("<span>"+ o.togglerContent_open +"</span>")
+						.data({
+							layoutEdge:		pane
+						,	layoutRole:		"togglerContent"
+						})
+						.data("layoutRole", "togglerContent")
+						.data("layoutEdge", pane)
+						.addClass("content content-open")
+						.css("display","none")
+						.appendTo( $T )
+						//.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead!
+					;
+				if (o.togglerContent_closed) // ui-layout-closed
+					$("<span>"+ o.togglerContent_closed +"</span>")
+						.data({
+							layoutEdge:		pane
+						,	layoutRole:		"togglerContent"
+						})
+						.addClass("content content-closed")
+						.css("display","none")
+						.appendTo( $T )
+						//.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead!
+					;
+				// ADD TOGGLER.click/.hover
+				enableClosable(pane);
+			}
+
+			// add Draggable events
+			initResizable(pane);
+
+			// ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open"
+			if (s.isVisible)
+				setAsOpen(pane);	// onOpen will be called, but NOT onResize
+			else {
+				setAsClosed(pane);	// onClose will be called
+				bindStartSlidingEvent(pane, true); // will enable events IF option is set
+			}
+
+		});
+
+		// SET ALL HANDLE DIMENSIONS
+		sizeHandles();
+	}
+
+
+	/**
+	* Initialize scrolling ui-layout-content div - if exists
+	*
+	* @see  initPane() - or externally after an Ajax injection
+	* @param {string}	[pane]			The pane to process
+	* @param {boolean=}	[resize=true]	Size content after init
+	*/
+,	initContent = function (pane, resize) {
+		if (!isInitialized()) return;
+		var 
+			o	= options[pane]
+		,	sel	= o.contentSelector
+		,	I	= Instance[pane]
+		,	$P	= $Ps[pane]
+		,	$C
+		;
+		if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent)
+			? $P.find(sel).eq(0) // match 1-element only
+			: $P.children(sel).eq(0)
+		;
+		if ($C && $C.length) {
+			$C.data("layoutRole", "content");
+			// SAVE original Pane CSS
+			if (!$C.data("layoutCSS"))
+				$C.data("layoutCSS", elCSS($C, "height"));
+			$C.css( _c.content.cssReq );
+			if (o.applyDemoStyles) {
+				$C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div
+				$P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane
+			}
+			state[pane].content = {}; // init content state
+			if (resize !== false) sizeContent(pane);
+			// sizeContent() is called AFTER init of all elements
+		}
+		else
+			I.content = $Cs[pane] = false;
+	}
+
+
+	/**
+	* Add resize-bars to all panes that specify it in options
+	* -dependancy: $.fn.resizable - will skip if not found
+	*
+	* @see  _create()
+	* @param {string=}	[panes=""]	The edge(s) to process
+	*/
+,	initResizable = function (panes) {
+		var	draggingAvailable = $.layout.plugins.draggable
+		,	side // set in start()
+		;
+		panes = panes ? panes.split(",") : _c.borderPanes;
+
+		$.each(panes, function (idx, pane) {
+			var o = options[pane];
+			if (!draggingAvailable || !$Ps[pane] || !o.resizable) {
+				o.resizable = false;
+				return true; // skip to next
+			}
+
+			var s		= state[pane]
+			,	z		= options.zIndexes
+			,	c		= _c[pane]
+			,	side	= c.dir=="horz" ? "top" : "left"
+			,	opEdge	= _c.oppositeEdge[pane]
+			,	masks	=  pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "")
+			,	$P 		= $Ps[pane]
+			,	$R		= $Rs[pane]
+			,	base	= o.resizerClass
+			,	lastPos	= 0 // used when live-resizing
+			,	r, live // set in start because may change
+			//	'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process
+			,	resizerClass		= base+"-drag"				// resizer-drag
+			,	resizerPaneClass	= base+"-"+pane+"-drag"		// resizer-north-drag
+			//	'helper' class is applied to the CLONED resizer-bar while it is being dragged
+			,	helperClass			= base+"-dragging"			// resizer-dragging
+			,	helperPaneClass		= base+"-"+pane+"-dragging" // resizer-north-dragging
+			,	helperLimitClass	= base+"-dragging-limit"	// resizer-drag
+			,	helperPaneLimitClass = base+"-"+pane+"-dragging-limit"	// resizer-north-drag
+			,	helperClassesSet	= false 					// logic var
+			;
+
+			if (!s.isClosed)
+				$R.attr("title", o.tips.Resize)
+				  .css("cursor", o.resizerCursor); // n-resize, s-resize, etc
+
+			$R.draggable({
+				containment:	$N[0] // limit resizing to layout container
+			,	axis:			(c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis
+			,	delay:			0
+			,	distance:		1
+			,	grid:			o.resizingGrid
+			//	basic format for helper - style it using class: .ui-draggable-dragging
+			,	helper:			"clone"
+			,	opacity:		o.resizerDragOpacity
+			,	addClasses:		false // avoid ui-state-disabled class when disabled
+			//,	iframeFix:		o.draggableIframeFix // TODO: consider using when bug is fixed
+			,	zIndex:			z.resizer_drag
+
+			,	start: function (e, ui) {
+					// REFRESH options & state pointers in case we used swapPanes
+					o = options[pane];
+					s = state[pane];
+					// re-read options
+					live = o.livePaneResizing;
+
+					// ondrag_start callback - will CANCEL hide if returns false
+					// TODO: dragging CANNOT be cancelled like this, so see if there is a way?
+					if (false === _runCallbacks("ondrag_start", pane)) return false;
+
+					s.isResizing	= true; // prevent pane from closing while resizing
+					timer.clear(pane+"_closeSlider"); // just in case already triggered
+
+					// SET RESIZER LIMITS - used in drag()
+					setSizeLimits(pane); // update pane/resizer state
+					r = s.resizerPosition;
+					lastPos = ui.position[ side ]
+
+					$R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes
+					helperClassesSet = false; // reset logic var - see drag()
+
+					// DISABLE TEXT SELECTION (probably already done by resizer.mouseOver)
+					$('body').disableSelection(); 
+
+					// MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS
+					showMasks( masks );
+				}
+
+			,	drag: function (e, ui) {
+					if (!helperClassesSet) { // can only add classes after clone has been added to the DOM
+						//$(".ui-draggable-dragging")
+						ui.helper
+							.addClass( helperClass +" "+ helperPaneClass ) // add helper classes
+							.css({ right: "auto", bottom: "auto" })	// fix dir="rtl" issue
+							.children().css("visibility","hidden")	// hide toggler inside dragged resizer-bar
+						;
+						helperClassesSet = true;
+						// draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane!
+						if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding);
+					}
+					// CONTAIN RESIZER-BAR TO RESIZING LIMITS
+					var limit = 0;
+					if (ui.position[side] < r.min) {
+						ui.position[side] = r.min;
+						limit = -1;
+					}
+					else if (ui.position[side] > r.max) {
+						ui.position[side] = r.max;
+						limit = 1;
+					}
+					// ADD/REMOVE dragging-limit CLASS
+					if (limit) {
+						ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit
+						window.defaultStatus = (limit>0 && pane.match(/(north|west)/)) || (limit<0 && pane.match(/(south|east)/)) ? o.tips.maxSizeWarning : o.tips.minSizeWarning;
+					}
+					else {
+						ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit
+						window.defaultStatus = "";
+					}
+					// DYNAMICALLY RESIZE PANES IF OPTION ENABLED
+					// won't trigger unless resizer has actually moved!
+					if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) {
+						lastPos = ui.position[side];
+						resizePanes(e, ui, pane)
+					}
+				}
+
+			,	stop: function (e, ui) {
+					$('body').enableSelection(); // RE-ENABLE TEXT SELECTION
+					window.defaultStatus = ""; // clear 'resizing limit' message from statusbar
+					$R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer
+					s.isResizing = false;
+					resizePanes(e, ui, pane, true, masks); // true = resizingDone
+				}
+
+			});
+		});
+
+		/**
+		* resizePanes
+		*
+		* Sub-routine called from stop() - and drag() if livePaneResizing
+		*
+		* @param {!Object}		evt
+		* @param {!Object}		ui
+		* @param {string}		pane
+		* @param {boolean=}		[resizingDone=false]
+		*/
+		var resizePanes = function (evt, ui, pane, resizingDone, masks) {
+			var	dragPos	= ui.position
+			,	c		= _c[pane]
+			,	o		= options[pane]
+			,	s		= state[pane]
+			,	resizerPos
+			;
+			switch (pane) {
+				case "north":	resizerPos = dragPos.top; break;
+				case "west":	resizerPos = dragPos.left; break;
+				case "south":	resizerPos = sC.offsetHeight - dragPos.top  - o.spacing_open; break;
+				case "east":	resizerPos = sC.offsetWidth  - dragPos.left - o.spacing_open; break;
+			};
+			// remove container margin from resizer position to get the pane size
+			var newSize = resizerPos - sC["inset"+ c.side];
+
+			// Disable OR Resize Mask(s) created in drag.start
+			if (!resizingDone) {
+				// ensure we meet liveResizingTolerance criteria
+				if (Math.abs(newSize - s.size) < o.liveResizingTolerance)
+					return; // SKIP resize this time
+				// resize the pane
+				manualSizePane(pane, newSize, false, true); // true = noAnimation
+				sizeMasks(); // resize all visible masks
+			}
+			else { // resizingDone
+				// ondrag_end callback
+				if (false !== _runCallbacks("ondrag_end", pane))
+					manualSizePane(pane, newSize, false, true); // true = noAnimation
+				hideMasks(); // hide all masks, which include panes with 'content/iframe-masks'
+				if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane
+					showMasks( masks, true ); // true = onlyForObjects
+			}
+		};
+	}
+
+	/**
+	 *	sizeMask
+	 *
+	 *	Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane
+	 *	Called when mask created, and during livePaneResizing
+	 */
+,	sizeMask = function () {
+		var $M		= $(this)
+		,	pane	= $M.data("layoutMask") // eg: "west"
+		,	s		= state[pane]
+		;
+		// only masks over an IFRAME-pane need manual resizing
+		if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes
+			$M.css({
+				top:	s.offsetTop
+			,	left:	s.offsetLeft
+			,	width:	s.outerWidth
+			,	height:	s.outerHeight
+			});
+		/* ALT Method...
+		var $P = $Ps[pane];
+		$M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight });
+		*/
+	}
+,	sizeMasks = function () {
+		$Ms.each( sizeMask ); // resize all 'visible' masks
+	}
+
+,	showMasks = function (panes, onlyForObjects) {
+		var a	= panes ? panes.split(",") : $.layout.config.allPanes
+		,	z	= options.zIndexes
+		,	o, s;
+		$.each(a, function(i,p){
+			s = state[p];
+			o = options[p];
+			if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) {
+				getMasks(p).each(function(){
+					sizeMask.call(this);
+					this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1
+					this.style.display = "block";
+				});
+			}
+		});
+	}
+
+,	hideMasks = function () {
+		// ensure no pane is resizing - could be a timing issue
+		var skip;
+		$.each( $.layout.config.borderPanes, function(i,p){
+			if (state[p].isResizing) {
+				skip = true;
+				return false; // BREAK
+			}
+		});
+		if (!skip)
+			$Ms.hide(); // hide ALL masks
+	}
+
+,	getMasks = function (pane) {
+		var $Masks	= $([])
+		,	$M, i = 0, c = $Ms.length
+		;
+		for (; i<c; i++) {
+			$M = $Ms.eq(i);
+			if ($M.data("layoutMask") === pane)
+				$Masks = $Masks.add( $M );
+		}
+		if ($Masks.length)
+			return $Masks;
+		else
+			return createMasks(pane);
+	}
+
+	/**
+	 *	createMasks
+	 *
+	 *	Generates both DIV (ALWAYS used) and IFRAME (optional) elements as masks
+	 *	An IFRAME mask is created *under* the DIV when maskObjects=true, because a DIV cannot mask an applet
+	 */
+,	createMasks = function (pane) {
+		var
+			$P		= $Ps[pane]
+		,	s		= state[pane]
+		,	o		= options[pane]
+		,	z		= options.zIndexes
+		//,	objMask	= o.maskObjects && s.tagName != "IFRAME" // check for option
+		,	$Masks	= $([])
+		,	isIframe, el, $M, css, i
+		;
+		if (!o.maskContents && !o.maskObjects) return $Masks;
+		// if o.maskObjects=true, then loop TWICE to create BOTH kinds of mask, else only create a DIV
+		for (i=0; i < (o.maskObjects ? 2 : 1); i++) {
+			isIframe = o.maskObjects && i==0;
+			el = document.createElement( isIframe ? "iframe" : "div" );
+			$M = $(el).data("layoutMask", pane); // add data to relate mask to pane
+			el.className = "ui-layout-mask ui-layout-mask-"+ pane; // for user styling
+			css = el.style;
+			// styles common to both DIVs and IFRAMES
+			css.display		= "block";
+			css.position	= "absolute";
+			if (isIframe) { // IFRAME-only props
+				el.frameborder = 0;
+				el.src		= "about:blank";
+				css.opacity	= 0;
+				css.filter	= "Alpha(Opacity='0')";
+				css.border	= 0;
+			}
+			// if pane is an IFRAME, then must mask the pane itself
+			if (s.tagName == "IFRAME") {
+				// NOTE sizing done by a subroutine so can be called during live-resizing
+				css.zIndex	= z.pane_normal+1; // 1-higher than pane
+				$N.append( el ); // append to LAYOUT CONTAINER
+			}
+			// otherwise put masks *inside the pane* to mask its contents
+			else {
+				$M.addClass("ui-layout-mask-inside-pane");
+				css.zIndex	= o.maskZindex || z.content_mask; // usually 1, but customizable
+				css.top		= 0;
+				css.left	= 0;
+				css.width	= "100%";
+				css.height	= "100%";
+				$P.append( el ); // append INSIDE pane element
+			}
+			// add to return object
+			$Masks = $Masks.add( el );
+			// add Mask to cached array so can be resized & reused
+			$Ms = $Ms.add( el );
+		}
+		return $Masks;
+	}
+
+
+	/**
+	* Destroy this layout and reset all elements
+	*
+	* @param {boolean=}	[destroyChildren=false]		Destory Child-Layouts first?
+	*/
+,	destroy = function (evt_or_destroyChildren, destroyChildren) {
+		// UNBIND layout events and remove global object
+		$(window).unbind("."+ sID);		// resize & unload
+		$(document).unbind("."+ sID);	// keyDown (hotkeys)
+
+		if (typeof evt_or_destroyChildren === "object")
+			// stopPropagation if called by trigger("layoutdestroy") - use evtPane utility 
+			evtPane(evt_or_destroyChildren);
+		else // no event, so transfer 1st param to destroyChildren param
+			destroyChildren = evt_or_destroyChildren;
+
+		// need to look for parent layout BEFORE we remove the container data, else skips a level
+		//var parentPane = Instance.hasParentLayout ? $.layout.getParentPaneInstance( $N ) : null;
+
+		// reset layout-container
+		$N	.clearQueue()
+			.removeData("layout")
+			.removeData("layoutContainer")
+			.removeClass(options.containerClass)
+			.unbind("."+ sID) // remove ALL Layout events
+		;
+
+		// remove all mask elements that have been created
+		$Ms.remove();
+
+		// loop all panes to remove layout classes, attributes and bindings
+		$.each(_c.allPanes, function (i, pane) {
+			removePane( pane, false, true, destroyChildren ); // true = skipResize
+		});
+
+		// do NOT reset container CSS if is a 'pane' (or 'content') in an outer-layout - ie, THIS layout is 'nested'
+		var css = "layoutCSS";
+		if ($N.data(css) && !$N.data("layoutRole")) // RESET CSS
+			$N.css( $N.data(css) ).removeData(css);
+
+		// for full-page layouts, also reset the <HTML> CSS
+		if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET <HTML> CSS
+			$N.css( $N.data(css) ).removeData(css);
+
+		// trigger plugins for this layout, if there are any
+		runPluginCallbacks( Instance, $.layout.onDestroy );
+
+		// trigger state-management and onunload callback
+		unload();
+
+		// clear the Instance of everything except for container & options (so could recreate)
+		// RE-CREATE: myLayout = myLayout.container.layout( myLayout.options );
+		for (n in Instance)
+			if (!n.match(/^(container|options)$/)) delete Instance[ n ];
+		// add a 'destroyed' flag to make it easy to check
+		Instance.destroyed = true;
+
+		// if this is a child layout, CLEAR the child-pointer in the parent
+		/* for now the pointer REMAINS, but with only container, options and destroyed keys
+		if (parentPane) {
+			var layout = parentPane.pane.data("parentLayout");
+			parentPane.child = layout.children[ parentPane.name ] = null;
+		}
+		*/
+
+		return Instance; // for coding convenience
+	}
+
+	/**
+	* Remove a pane from the layout - subroutine of destroy()
+	*
+	* @see  destroy()
+	* @param {string|Object}	evt_or_pane			The pane to process
+	* @param {boolean=}			[remove=false]		Remove the DOM element?
+	* @param {boolean=}			[skipResize=false]	Skip calling resizeAll()?
+	* @param {boolean=}			[destroyChild=true]	Destroy Child-layouts? If not passed, obeys options setting
+	*/
+,	removePane = function (evt_or_pane, remove, skipResize, destroyChild) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$P	= $Ps[pane]
+		,	$C	= $Cs[pane]
+		,	$R	= $Rs[pane]
+		,	$T	= $Ts[pane]
+		;
+		// NOTE: elements can still exist even after remove()
+		//		so check for missing data(), which is cleared by removed()
+		if ($P && $.isEmptyObject( $P.data() )) $P = false;
+		if ($C && $.isEmptyObject( $C.data() )) $C = false;
+		if ($R && $.isEmptyObject( $R.data() )) $R = false;
+		if ($T && $.isEmptyObject( $T.data() )) $T = false;
+
+		if ($P) $P.stop(true, true);
+
+		//	check for a child layout
+		var	o	= options[pane]
+		,	s	= state[pane]
+		,	d	= "layout"
+		,	css	= "layoutCSS"
+		,	child	= children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null
+		,	destroy	= destroyChild !== undefined ? destroyChild : o.destroyChildLayout
+		;
+
+		// FIRST destroy the child-layout(s)
+		if (destroy && child && !child.destroyed) {
+			child.destroy(true);	// tell child-layout to destroy ALL its child-layouts too
+			if (child.destroyed)	// destroy was successful
+				child = null;		// clear pointer for logic below 
+		}
+
+		if ($P && remove && !child)
+			$P.remove();
+		else if ($P && $P[0]) {
+			//	create list of ALL pane-classes that need to be removed
+			var	root	= o.paneClass // default="ui-layout-pane"
+			,	pRoot	= root +"-"+ pane // eg: "ui-layout-pane-west"
+			,	_open	= "-open"
+			,	_sliding= "-sliding"
+			,	_closed	= "-closed"
+			,	classes	= [	root, root+_open, root+_closed, root+_sliding,		// generic classes
+							pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ]	// pane-specific classes
+			;
+			$.merge(classes, getHoverClasses($P, true)); // ADD hover-classes
+			// remove all Layout classes from pane-element
+			$P	.removeClass( classes.join(" ") ) // remove ALL pane-classes
+				.removeData("parentLayout")
+				.removeData("layoutPane")
+				.removeData("layoutRole")
+				.removeData("layoutEdge")
+				.removeData("autoHidden")	// in case set
+				.unbind("."+ sID) // remove ALL Layout events
+				// TODO: remove these extra unbind commands when jQuery is fixed
+				//.unbind("mouseenter"+ sID)
+				//.unbind("mouseleave"+ sID)
+			;
+			// do NOT reset CSS if this pane/content is STILL the container of a nested layout!
+			// the nested layout will reset its 'container' CSS when/if it is destroyed
+			if ($C && $C.data(d)) {
+				// a content-div may not have a specific width, so give it one to contain the Layout
+				$C.width( $C.width() );
+				child.resizeAll(); // now resize the Layout
+			}
+			else if ($C)
+				$C.css( $C.data(css) ).removeData(css).removeData("layoutRole");
+			// remove pane AFTER content in case there was a nested layout
+			if (!$P.data(d))
+				$P.css( $P.data(css) ).removeData(css);
+		}
+
+		// REMOVE pane resizer and toggler elements
+		if ($T) $T.remove();
+		if ($R) $R.remove();
+
+		// CLEAR all pointers and state data
+		Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false;
+		s = { removed: true };
+
+		if (!skipResize)
+			resizeAll();
+	}
+
+
+/*
+ * ###########################
+ *	   ACTION METHODS
+ * ###########################
+ */
+
+,	_hidePane = function (pane) {
+		var $P	= $Ps[pane]
+		,	o	= options[pane]
+		,	s	= $P[0].style
+		;
+		if (o.useOffscreenClose) {
+			if (!$P.data(_c.offscreenReset))
+				$P.data(_c.offscreenReset, { left: s.left, right: s.right });
+			$P.css( _c.offscreenCSS );
+		}
+		else
+			$P.hide().removeData(_c.offscreenReset);
+	}
+
+,	_showPane = function (pane) {
+		var $P	= $Ps[pane]
+		,	o	= options[pane]
+		,	off	= _c.offscreenCSS
+		,	old	= $P.data(_c.offscreenReset)
+		,	s	= $P[0].style
+		;
+		$P	.show() // ALWAYS show, just in case
+			.removeData(_c.offscreenReset);
+		if (o.useOffscreenClose && old) {
+			if (s.left == off.left)
+				s.left = old.left;
+			if (s.right == off.right)
+				s.right = old.right;
+		}
+	}
+
+
+	/**
+	* Completely 'hides' a pane, including its spacing - as if it does not exist
+	* The pane is not actually 'removed' from the source, so can use 'show' to un-hide it
+	*
+	* @param {string|Object}	evt_or_pane			The pane being hidden, ie: north, south, east, or west
+	* @param {boolean=}			[noAnimation=false]	
+	*/
+,	hide = function (evt_or_pane, noAnimation) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	o	= options[pane]
+		,	s	= state[pane]
+		,	$P	= $Ps[pane]
+		,	$R	= $Rs[pane]
+		;
+		if (!$P || s.isHidden) return; // pane does not exist OR is already hidden
+
+		// onhide_start callback - will CANCEL hide if returns false
+		if (state.initialized && false === _runCallbacks("onhide_start", pane)) return;
+
+		s.isSliding = false; // just in case
+
+		// now hide the elements
+		if ($R) $R.hide(); // hide resizer-bar
+		if (!state.initialized || s.isClosed) {
+			s.isClosed = true; // to trigger open-animation on show()
+			s.isHidden  = true;
+			s.isVisible = false;
+			if (!state.initialized)
+				_hidePane(pane); // no animation when loading page
+			sizeMidPanes(_c[pane].dir === "horz" ? "" : "center");
+			if (state.initialized || o.triggerEventsOnLoad)
+				_runCallbacks("onhide_end", pane);
+		}
+		else {
+			s.isHiding = true; // used by onclose
+			close(pane, false, noAnimation); // adjust all panes to fit
+		}
+	}
+
+	/**
+	* Show a hidden pane - show as 'closed' by default unless openPane = true
+	*
+	* @param {string|Object}	evt_or_pane			The pane being opened, ie: north, south, east, or west
+	* @param {boolean=}			[openPane=false]
+	* @param {boolean=}			[noAnimation=false]
+	* @param {boolean=}			[noAlert=false]
+	*/
+,	show = function (evt_or_pane, openPane, noAnimation, noAlert) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	o	= options[pane]
+		,	s	= state[pane]
+		,	$P	= $Ps[pane]
+		,	$R	= $Rs[pane]
+		;
+		if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden
+
+		// onshow_start callback - will CANCEL show if returns false
+		if (false === _runCallbacks("onshow_start", pane)) return;
+
+		s.isSliding = false; // just in case
+		s.isShowing = true; // used by onopen/onclose
+		//s.isHidden  = false; - will be set by open/close - if not cancelled
+
+		// now show the elements
+		//if ($R) $R.show(); - will be shown by open/close
+		if (openPane === false)
+			close(pane, true); // true = force
+		else
+			open(pane, false, noAnimation, noAlert); // adjust all panes to fit
+	}
+
+
+	/**
+	* Toggles a pane open/closed by calling either open or close
+	*
+	* @param {string|Object}	evt_or_pane		The pane being toggled, ie: north, south, east, or west
+	* @param {boolean=}			[slide=false]
+	*/
+,	toggle = function (evt_or_pane, slide) {
+		if (!isInitialized()) return;
+		var	evt		= evtObj(evt_or_pane)
+		,	pane	= evtPane.call(this, evt_or_pane)
+		,	s		= state[pane]
+		;
+		if (evt) // called from to $R.dblclick OR triggerPaneEvent
+			evt.stopImmediatePropagation();
+		if (s.isHidden)
+			show(pane); // will call 'open' after unhiding it
+		else if (s.isClosed)
+			open(pane, !!slide);
+		else
+			close(pane);
+	}
+
+
+	/**
+	* Utility method used during init or other auto-processes
+	*
+	* @param {string}	pane   The pane being closed
+	* @param {boolean=}	[setHandles=false]
+	*/
+,	_closePane = function (pane, setHandles) {
+		var
+			$P	= $Ps[pane]
+		,	s	= state[pane]
+		;
+		_hidePane(pane);
+		s.isClosed = true;
+		s.isVisible = false;
+		// UNUSED: if (setHandles) setAsClosed(pane, true); // true = force
+	}
+
+	/**
+	* Close the specified pane (animation optional), and resize all other panes as needed
+	*
+	* @param {string|Object}	evt_or_pane			The pane being closed, ie: north, south, east, or west
+	* @param {boolean=}			[force=false]
+	* @param {boolean=}			[noAnimation=false]
+	* @param {boolean=}			[skipCallback=false]
+	*/
+,	close = function (evt_or_pane, force, noAnimation, skipCallback) {
+		var	pane = evtPane.call(this, evt_or_pane);
+		// if pane has been initialized, but NOT the complete layout, close pane instantly
+		if (!state.initialized && $Ps[pane]) {
+			_closePane(pane); // INIT pane as closed
+			return;
+		}
+		if (!isInitialized()) return;
+
+		var
+			$P	= $Ps[pane]
+		,	$R	= $Rs[pane]
+		,	$T	= $Ts[pane]
+		,	o	= options[pane]
+		,	s	= state[pane]
+		,	c	= _c[pane]
+		,	doFX, isShowing, isHiding, wasSliding;
+
+		// QUEUE in case another action/animation is in progress
+		$N.queue(function( queueNext ){
+	
+			if ( !$P
+			||	(!o.closable && !s.isShowing && !s.isHiding)	// invalid request // (!o.resizable && !o.closable) ???
+			||	(!force && s.isClosed && !s.isShowing)			// already closed
+			) return queueNext();
+
+			// onclose_start callback - will CANCEL hide if returns false
+			// SKIP if just 'showing' a hidden pane as 'closed'
+			var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane);
+
+			// transfer logic vars to temp vars
+			isShowing	= s.isShowing;
+			isHiding	= s.isHiding;
+			wasSliding	= s.isSliding;
+			// now clear the logic vars (REQUIRED before aborting)
+			delete s.isShowing;
+			delete s.isHiding;
+
+			if (abort) return queueNext();
+
+			doFX		= !noAnimation && !s.isClosed && (o.fxName_close != "none");
+			s.isMoving	= true;
+			s.isClosed	= true;
+			s.isVisible	= false;
+			// update isHidden BEFORE sizing panes
+			if (isHiding) s.isHidden = true;
+			else if (isShowing) s.isHidden = false;
+
+			if (s.isSliding) // pane is being closed, so UNBIND trigger events
+				bindStopSlidingEvents(pane, false); // will set isSliding=false
+			else // resize panes adjacent to this one
+				sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback
+
+			// if this pane has a resizer bar, move it NOW - before animation
+			setAsClosed(pane);
+
+			// CLOSE THE PANE
+			if (doFX) { // animate the close
+				// mask panes with objects
+				var masks = "center"+ (c.dir=="horz" ? ",west,east" : "");
+				showMasks( masks, true );	// true = ONLY mask panes with maskObjects=true
+				lockPaneForFX(pane, true);	// need to set left/top so animation will work
+				$P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () {
+					lockPaneForFX(pane, false); // undo
+					if (s.isClosed) close_2();
+					queueNext();
+				});
+			}
+			else { // hide the pane without animation
+				_hidePane(pane);
+				close_2();
+				queueNext();
+			};
+		});
+
+		// SUBROUTINE
+		function close_2 () {
+			s.isMoving	= false;
+			bindStartSlidingEvent(pane, true); // will enable if o.slidable = true
+
+			// if opposite-pane was autoClosed, see if it can be autoOpened now
+			var altPane = _c.oppositeEdge[pane];
+			if (state[ altPane ].noRoom) {
+				setSizeLimits( altPane );
+				makePaneFit( altPane );
+			}
+
+			// hide any masks shown while closing
+			hideMasks();
+
+			if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) {
+				// onclose callback - UNLESS just 'showing' a hidden pane as 'closed'
+				if (!isShowing)	_runCallbacks("onclose_end", pane);
+				// onhide OR onshow callback
+				if (isShowing)	_runCallbacks("onshow_end", pane);
+				if (isHiding)	_runCallbacks("onhide_end", pane);
+			}
+		}
+	}
+
+	/**
+	* @param {string}	pane	The pane just closed, ie: north, south, east, or west
+	*/
+,	setAsClosed = function (pane) {
+		var
+			$P		= $Ps[pane]
+		,	$R		= $Rs[pane]
+		,	$T		= $Ts[pane]
+		,	o		= options[pane]
+		,	s		= state[pane]
+		,	side	= _c[pane].side.toLowerCase()
+		,	inset	= "inset"+ _c[pane].side
+		,	rClass	= o.resizerClass
+		,	tClass	= o.togglerClass
+		,	_pane	= "-"+ pane // used for classNames
+		,	_open	= "-open"
+		,	_sliding= "-sliding"
+		,	_closed	= "-closed"
+		;
+		$R
+			.css(side, sC[inset]) // move the resizer
+			.removeClass( rClass+_open +" "+ rClass+_pane+_open )
+			.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+			.addClass( rClass+_closed +" "+ rClass+_pane+_closed )
+			.unbind("dblclick."+ sID)
+		;
+		// DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent?
+		if (o.resizable && $.layout.plugins.draggable)
+			$R
+				.draggable("disable")
+				.removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here
+				.css("cursor", "default")
+				.attr("title","")
+			;
+
+		// if pane has a toggler button, adjust that too
+		if ($T) {
+			$T
+				.removeClass( tClass+_open +" "+ tClass+_pane+_open )
+				.addClass( tClass+_closed +" "+ tClass+_pane+_closed )
+				.attr("title", o.tips.Open) // may be blank
+			;
+			// toggler-content - if exists
+			$T.children(".content-open").hide();
+			$T.children(".content-closed").css("display","block");
+		}
+
+		// sync any 'pin buttons'
+		syncPinBtns(pane, false);
+
+		if (state.initialized) {
+			// resize 'length' and position togglers for adjacent panes
+			sizeHandles();
+		}
+	}
+
+	/**
+	* Open the specified pane (animation optional), and resize all other panes as needed
+	*
+	* @param {string|Object}	evt_or_pane			The pane being opened, ie: north, south, east, or west
+	* @param {boolean=}			[slide=false]
+	* @param {boolean=}			[noAnimation=false]
+	* @param {boolean=}			[noAlert=false]
+	*/
+,	open = function (evt_or_pane, slide, noAnimation, noAlert) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$P	= $Ps[pane]
+		,	$R	= $Rs[pane]
+		,	$T	= $Ts[pane]
+		,	o	= options[pane]
+		,	s	= state[pane]
+		,	c	= _c[pane]
+		,	doFX, isShowing
+		;
+		// QUEUE in case another action/animation is in progress
+		$N.queue(function( queueNext ){
+
+			if ( !$P
+			||	(!o.resizable && !o.closable && !s.isShowing)	// invalid request
+			||	(s.isVisible && !s.isSliding)					// already open
+			) return queueNext();
+
+			// pane can ALSO be unhidden by just calling show(), so handle this scenario
+			if (s.isHidden && !s.isShowing) {
+				queueNext(); // call before show() because it needs the queue free
+				show(pane, true);
+				return;
+			}
+
+			if (o.autoResize && s.size != o.size) // resize pane to original size set in options
+				sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation
+			else
+				// make sure there is enough space available to open the pane
+				setSizeLimits(pane, slide);
+
+			// onopen_start callback - will CANCEL open if returns false
+			var cbReturn = _runCallbacks("onopen_start", pane);
+
+			if (cbReturn === "abort")
+				return queueNext();
+
+			// update pane-state again in case options were changed in onopen_start
+			if (cbReturn !== "NC") // NC = "No Callback"
+				setSizeLimits(pane, slide);
+
+			if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN!
+				syncPinBtns(pane, false); // make sure pin-buttons are reset
+				if (!noAlert && o.tips.noRoomToOpen)
+					alert(o.tips.noRoomToOpen);
+				return queueNext(); // ABORT
+			}
+
+			if (slide) // START Sliding - will set isSliding=true
+				bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
+			else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead
+				bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false
+			else if (o.slidable)
+				bindStartSlidingEvent(pane, false); // UNBIND trigger events
+
+			s.noRoom = false; // will be reset by makePaneFit if 'noRoom'
+			makePaneFit(pane);
+
+			// transfer logic var to temp var
+			isShowing = s.isShowing;
+			// now clear the logic var
+			delete s.isShowing;
+
+			doFX		= !noAnimation && s.isClosed && (o.fxName_open != "none");
+			s.isMoving	= true;
+			s.isVisible	= true;
+			s.isClosed	= false;
+			// update isHidden BEFORE sizing panes - WHY??? Old?
+			if (isShowing) s.isHidden = false;
+
+			if (doFX) { // ANIMATE
+				// mask panes with objects
+				var masks = "center"+ (c.dir=="horz" ? ",west,east" : "");
+				if (s.isSliding) masks += ","+ _c.oppositeEdge[pane];
+				showMasks( masks, true );	// true = ONLY mask panes with maskObjects=true
+				lockPaneForFX(pane, true);	// need to set left/top so animation will work
+				$P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() {
+					lockPaneForFX(pane, false); // undo
+					if (s.isVisible) open_2(); // continue
+					queueNext();
+				});
+			}
+			else { // no animation
+				_showPane(pane);// just show pane and...
+				open_2();		// continue
+				queueNext();
+			};
+		});
+
+		// SUBROUTINE
+		function open_2 () {
+			s.isMoving	= false;
+
+			// cure iframe display issues
+			_fixIframe(pane);
+
+			// NOTE: if isSliding, then other panes are NOT 'resized'
+			if (!s.isSliding) { // resize all panes adjacent to this one
+				hideMasks(); // remove any masks shown while opening
+				sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback
+			}
+
+			// set classes, position handles and execute callbacks...
+			setAsOpen(pane);
+		};
+	
+	}
+
+	/**
+	* @param {string}	pane		The pane just opened, ie: north, south, east, or west
+	* @param {boolean=}	[skipCallback=false]
+	*/
+,	setAsOpen = function (pane, skipCallback) {
+		var 
+			$P		= $Ps[pane]
+		,	$R		= $Rs[pane]
+		,	$T		= $Ts[pane]
+		,	o		= options[pane]
+		,	s		= state[pane]
+		,	side	= _c[pane].side.toLowerCase()
+		,	inset	= "inset"+ _c[pane].side
+		,	rClass	= o.resizerClass
+		,	tClass	= o.togglerClass
+		,	_pane	= "-"+ pane // used for classNames
+		,	_open	= "-open"
+		,	_closed	= "-closed"
+		,	_sliding= "-sliding"
+		;
+		$R
+			.css(side, sC[inset] + getPaneSize(pane)) // move the resizer
+			.removeClass( rClass+_closed +" "+ rClass+_pane+_closed )
+			.addClass( rClass+_open +" "+ rClass+_pane+_open )
+		;
+		if (s.isSliding)
+			$R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+		else // in case 'was sliding'
+			$R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+
+		if (o.resizerDblClickToggle)
+			$R.bind("dblclick", toggle );
+		removeHover( 0, $R ); // remove hover classes
+		if (o.resizable && $.layout.plugins.draggable)
+			$R	.draggable("enable")
+				.css("cursor", o.resizerCursor)
+				.attr("title", o.tips.Resize);
+		else if (!s.isSliding)
+			$R.css("cursor", "default"); // n-resize, s-resize, etc
+
+		// if pane also has a toggler button, adjust that too
+		if ($T) {
+			$T	.removeClass( tClass+_closed +" "+ tClass+_pane+_closed )
+				.addClass( tClass+_open +" "+ tClass+_pane+_open )
+				.attr("title", o.tips.Close); // may be blank
+			removeHover( 0, $T ); // remove hover classes
+			// toggler-content - if exists
+			$T.children(".content-closed").hide();
+			$T.children(".content-open").css("display","block");
+		}
+
+		// sync any 'pin buttons'
+		syncPinBtns(pane, !s.isSliding);
+
+		// update pane-state dimensions - BEFORE resizing content
+		$.extend(s, elDims($P));
+
+		if (state.initialized) {
+			// resize resizer & toggler sizes for all panes
+			sizeHandles();
+			// resize content every time pane opens - to be sure
+			sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving'
+		}
+
+		if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) {
+			// onopen callback
+			_runCallbacks("onopen_end", pane);
+			// onshow callback - TODO: should this be here?
+			if (s.isShowing) _runCallbacks("onshow_end", pane);
+
+			// ALSO call onresize because layout-size *may* have changed while pane was closed
+			if (state.initialized)
+				_runCallbacks("onresize_end", pane);
+		}
+
+		// TODO: Somehow sizePane("north") is being called after this point???
+	}
+
+
+	/**
+	* slideOpen / slideClose / slideToggle
+	*
+	* Pass-though methods for sliding
+	*/
+,	slideOpen = function (evt_or_pane) {
+		if (!isInitialized()) return;
+		var	evt		= evtObj(evt_or_pane)
+		,	pane	= evtPane.call(this, evt_or_pane)
+		,	s		= state[pane]
+		,	delay	= options[pane].slideDelay_open
+		;
+		// prevent event from triggering on NEW resizer binding created below
+		if (evt) evt.stopImmediatePropagation();
+
+		if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0)
+			// trigger = mouseenter - use a delay
+			timer.set(pane+"_openSlider", open_NOW, delay);
+		else
+			open_NOW(); // will unbind events if is already open
+
+		/**
+		* SUBROUTINE for timed open
+		*/
+		function open_NOW () {
+			if (!s.isClosed) // skip if no longer closed!
+				bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
+			else if (!s.isMoving)
+				open(pane, true); // true = slide - open() will handle binding
+		};
+	}
+
+,	slideClose = function (evt_or_pane) {
+		if (!isInitialized()) return;
+		var	evt		= evtObj(evt_or_pane)
+		,	pane	= evtPane.call(this, evt_or_pane)
+		,	o		= options[pane]
+		,	s		= state[pane]
+		,	delay	= s.isMoving ? 1000 : 300 // MINIMUM delay - option may override
+		;
+		if (s.isClosed || s.isResizing)
+			return; // skip if already closed OR in process of resizing
+		else if (o.slideTrigger_close === "click")
+			close_NOW(); // close immediately onClick
+		else if (o.preventQuickSlideClose && s.isMoving)
+			return; // handle Chrome quick-close on slide-open
+		else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane]))
+			return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE
+		else if (evt) // trigger = mouseleave - use a delay
+			// 1 sec delay if 'opening', else .3 sec
+			timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay));
+		else // called programically
+			close_NOW();
+
+		/**
+		* SUBROUTINE for timed close
+		*/
+		function close_NOW () {
+			if (s.isClosed) // skip 'close' if already closed!
+				bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here?
+			else if (!s.isMoving)
+				close(pane); // close will handle unbinding
+		};
+	}
+
+	/**
+	* @param {string|Object}	evt_or_pane		The pane being opened, ie: north, south, east, or west
+	*/
+,	slideToggle = function (evt_or_pane) {
+		var pane = evtPane.call(this, evt_or_pane);
+		toggle(pane, true);
+	}
+
+
+	/**
+	* Must set left/top on East/South panes so animation will work properly
+	*
+	* @param {string}	pane	The pane to lock, 'east' or 'south' - any other is ignored!
+	* @param {boolean}	doLock  true = set left/top, false = remove
+	*/
+,	lockPaneForFX = function (pane, doLock) {
+		var $P	= $Ps[pane]
+		,	s	= state[pane]
+		,	o	= options[pane]
+		,	z	= options.zIndexes
+		;
+		if (doLock) {
+			$P.css({ zIndex: z.pane_animate }); // overlay all elements during animation
+			if (pane=="south")
+				$P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() });
+			else if (pane=="east")
+				$P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() });
+		}
+		else { // animation DONE - RESET CSS
+			// TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome
+			$P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) });
+			if (pane=="south")
+				$P.css({ top: "auto" });
+			// if pane is positioned 'off-screen', then DO NOT screw with it!
+			else if (pane=="east" && !$P.css("left").match(/\-99999/))
+				$P.css({ left: "auto" });
+			// fix anti-aliasing in IE - only needed for animations that change opacity
+			if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1)
+				$P[0].style.removeAttribute('filter');
+		}
+	}
+
+
+	/**
+	* Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger
+	*
+	* @see  open(), close()
+	* @param {string}	pane	The pane to enable/disable, 'north', 'south', etc.
+	* @param {boolean}	enable	Enable or Disable sliding?
+	*/
+,	bindStartSlidingEvent = function (pane, enable) {
+		var o		= options[pane]
+		,	$P		= $Ps[pane]
+		,	$R		= $Rs[pane]
+		,	evtName	= o.slideTrigger_open.toLowerCase()
+		;
+		if (!$R || (enable && !o.slidable)) return;
+
+		// make sure we have a valid event
+		if (evtName.match(/mouseover/))
+			evtName = o.slideTrigger_open = "mouseenter";
+		else if (!evtName.match(/(click|dblclick|mouseenter)/)) 
+			evtName = o.slideTrigger_open = "click";
+
+		$R
+			// add or remove event
+			[enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen)
+			// set the appropriate cursor & title/tip
+			.css("cursor", enable ? o.sliderCursor : "default")
+			.attr("title", enable ? o.tips.Slide : "")
+		;
+	}
+
+	/**
+	* Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed
+	* Also increases zIndex when pane is sliding open
+	* See bindStartSlidingEvent for code to control 'slide open'
+	*
+	* @see  slideOpen(), slideClose()
+	* @param {string}	pane	The pane to process, 'north', 'south', etc.
+	* @param {boolean}	enable	Enable or Disable events?
+	*/
+,	bindStopSlidingEvents = function (pane, enable) {
+		var	o		= options[pane]
+		,	s		= state[pane]
+		,	c		= _c[pane]
+		,	z		= options.zIndexes
+		,	evtName	= o.slideTrigger_close.toLowerCase()
+		,	action	= (enable ? "bind" : "unbind")
+		,	$P		= $Ps[pane]
+		,	$R		= $Rs[pane]
+		;
+		s.isSliding = enable; // logic
+		timer.clear(pane+"_closeSlider"); // just in case
+
+		// remove 'slideOpen' event from resizer
+		// ALSO will raise the zIndex of the pane & resizer
+		if (enable) bindStartSlidingEvent(pane, false);
+
+		// RE/SET zIndex - increases when pane is sliding-open, resets to normal when not
+		$P.css("zIndex", enable ? z.pane_sliding : z.pane_normal);
+		$R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1
+
+		// make sure we have a valid event
+		if (!evtName.match(/(click|mouseleave)/))
+			evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout'
+
+		// add/remove slide triggers
+		$R[action](evtName, slideClose); // base event on resize
+		// need extra events for mouseleave
+		if (evtName === "mouseleave") {
+			// also close on pane.mouseleave
+			$P[action]("mouseleave."+ sID, slideClose);
+			// cancel timer when mouse moves between 'pane' and 'resizer'
+			$R[action]("mouseenter."+ sID, cancelMouseOut);
+			$P[action]("mouseenter."+ sID, cancelMouseOut);
+		}
+
+		if (!enable)
+			timer.clear(pane+"_closeSlider");
+		else if (evtName === "click" && !o.resizable) {
+			// IF pane is not resizable (which already has a cursor and tip) 
+			// then set the a cursor & title/tip on resizer when sliding
+			$R.css("cursor", enable ? o.sliderCursor : "default");
+			$R.attr("title", enable ? o.tips.Close : ""); // use Toggler-tip, eg: "Close Pane"
+		}
+
+		// SUBROUTINE for mouseleave timer clearing
+		function cancelMouseOut (evt) {
+			timer.clear(pane+"_closeSlider");
+			evt.stopPropagation();
+		}
+	}
+
+
+	/**
+	* Hides/closes a pane if there is insufficient room - reverses this when there is room again
+	* MUST have already called setSizeLimits() before calling this method
+	*
+	* @param {string}	pane					The pane being resized
+	* @param {boolean=}	[isOpening=false]		Called from onOpen?
+	* @param {boolean=}	[skipCallback=false]	Should the onresize callback be run?
+	* @param {boolean=}	[force=false]
+	*/
+,	makePaneFit = function (pane, isOpening, skipCallback, force) {
+		var
+			o	= options[pane]
+		,	s	= state[pane]
+		,	c	= _c[pane]
+		,	$P	= $Ps[pane]
+		,	$R	= $Rs[pane]
+		,	isSidePane 	= c.dir==="vert"
+		,	hasRoom		= false
+		;
+		// special handling for center & east/west panes
+		if (pane === "center" || (isSidePane && s.noVerticalRoom)) {
+			// see if there is enough room to display the pane
+			// ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth);
+			hasRoom = (s.maxHeight >= 0);
+			if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now
+				_showPane(pane);
+				if ($R) $R.show();
+				s.isVisible = true;
+				s.noRoom = false;
+				if (isSidePane) s.noVerticalRoom = false;
+				_fixIframe(pane);
+			}
+			else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now
+				_hidePane(pane);
+				if ($R) $R.hide();
+				s.isVisible = false;
+				s.noRoom = true;
+			}
+		}
+
+		// see if there is enough room to fit the border-pane
+		if (pane === "center") {
+			// ignore center in this block
+		}
+		else if (s.minSize <= s.maxSize) { // pane CAN fit
+			hasRoom = true;
+			if (s.size > s.maxSize) // pane is too big - shrink it
+				sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation
+			else if (s.size < s.minSize) // pane is too small - enlarge it
+				sizePane(pane, s.minSize, skipCallback, force, true);
+			// need s.isVisible because new pseudoClose method keeps pane visible, but off-screen
+			else if ($R && s.isVisible && $P.is(":visible")) {
+				// make sure resizer-bar is positioned correctly
+				// handles situation where nested layout was 'hidden' when initialized
+				var	side = c.side.toLowerCase()
+				,	pos  = s.size + sC["inset"+ c.side]
+				;
+				if ($.layout.cssNum($R, side) != pos) $R.css( side, pos );
+			}
+
+			// if was previously hidden due to noRoom, then RESET because NOW there is room
+			if (s.noRoom) {
+				// s.noRoom state will be set by open or show
+				if (s.wasOpen && o.closable) {
+					if (o.autoReopen)
+						open(pane, false, true, true); // true = noAnimation, true = noAlert
+					else // leave the pane closed, so just update state
+						s.noRoom = false;
+				}
+				else
+					show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert
+			}
+		}
+		else { // !hasRoom - pane CANNOT fit
+			if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now...
+				s.noRoom = true; // update state
+				s.wasOpen = !s.isClosed && !s.isSliding;
+				if (s.isClosed){} // SKIP
+				else if (o.closable) // 'close' if possible
+					close(pane, true, true); // true = force, true = noAnimation
+				else // 'hide' pane if cannot just be closed
+					hide(pane, true); // true = noAnimation
+			}
+		}
+	}
+
+
+	/**
+	* sizePane / manualSizePane
+	* sizePane is called only by internal methods whenever a pane needs to be resized
+	* manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized'
+	*
+	* @param {string|Object}	evt_or_pane				The pane being resized
+	* @param {number}			size					The *desired* new size for this pane - will be validated
+	* @param {boolean=}			[skipCallback=false]	Should the onresize callback be run?
+	* @param {boolean=}			[noAnimation=false]
+	*/
+,	manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	o	= options[pane]
+		,	s	= state[pane]
+		//	if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete...
+		,	forceResize = o.livePaneResizing && !s.isResizing
+		;
+		// ANY call to manualSizePane disables autoResize - ie, percentage sizing
+		o.autoResize = false;
+		// flow-through...
+		sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled
+	}
+
+	/**
+	* @param {string|Object}	evt_or_pane				The pane being resized
+	* @param {number}			size					The *desired* new size for this pane - will be validated
+	* @param {boolean=}			[skipCallback=false]	Should the onresize callback be run?
+	* @param {boolean=}			[force=false]			Force resizing even if does not seem necessary
+	* @param {boolean=}			[noAnimation=false]
+	*/
+,	sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) {
+		if (!isInitialized()) return;
+		var	pane	= evtPane.call(this, evt_or_pane) // probably NEVER called from event?
+		,	o		= options[pane]
+		,	s		= state[pane]
+		,	$P		= $Ps[pane]
+		,	$R		= $Rs[pane]
+		,	side	= _c[pane].side.toLowerCase()
+		,	dimName	= _c[pane].sizeType.toLowerCase()
+		,	inset	= "inset"+ _c[pane].side
+		,	skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize
+		,	doFX	= noAnimation !== true && o.animatePaneSizing
+		,	oldSize, newSize
+		;
+		// QUEUE in case another action/animation is in progress
+		$N.queue(function( queueNext ){
+			// calculate 'current' min/max sizes
+			setSizeLimits(pane); // update pane-state
+			oldSize = s.size;
+			size = _parseSize(pane, size); // handle percentages & auto
+			size = max(size, _parseSize(pane, o.minSize));
+			size = min(size, s.maxSize);
+			if (size < s.minSize) { // not enough room for pane!
+				queueNext(); // call before makePaneFit() because it needs the queue free
+				makePaneFit(pane, false, skipCallback);	// will hide or close pane
+				return;
+			}
+
+			// IF newSize is same as oldSize, then nothing to do - abort
+			if (!force && size === oldSize)
+				return queueNext();
+
+			// onresize_start callback CANNOT cancel resizing because this would break the layout!
+			if (!skipCallback && state.initialized && s.isVisible)
+				_runCallbacks("onresize_start", pane);
+
+			// resize the pane, and make sure its visible
+			newSize = cssSize(pane, size);
+
+			if (doFX && $P.is(":visible")) { // ANIMATE
+				var fx		= $.layout.effects.size[pane] || $.layout.effects.size.all
+				,	easing	= o.fxSettings_size.easing || fx.easing
+				,	z		= options.zIndexes
+				,	props	= {};
+				props[ dimName ] = newSize +'px';
+				s.isMoving = true;
+				// overlay all elements during animation
+				$P.css({ zIndex: z.pane_animate })
+				  .show().animate( props, o.fxSpeed_size, easing, function(){
+					// reset zIndex after animation
+					$P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) });
+					s.isMoving = false;
+					sizePane_2(); // continue
+					queueNext();
+				});
+			}
+			else { // no animation
+				$P.css( dimName, newSize );	// resize pane
+				// if pane is visible, then 
+				if ($P.is(":visible"))
+					sizePane_2(); // continue
+				else {
+					// pane is NOT VISIBLE, so just update state data...
+					// when pane is *next opened*, it will have the new size
+					s.size = size;				// update state.size
+					$.extend(s, elDims($P));	// update state dimensions
+				}
+				queueNext();
+			};
+
+		});
+
+		// SUBROUTINE
+		function sizePane_2 () {
+			/*	Panes are sometimes not sized precisely in some browsers!?
+			 *	This code will resize the pane up to 3 times to nudge the pane to the correct size
+			 */
+			var	actual	= dimName==='width' ? $P.outerWidth() : $P.outerHeight()
+			,	tries	= [{
+						   	pane:		pane
+						,	count:		1
+						,	target:		size
+						,	actual:		actual
+						,	correct:	(size === actual)
+						,	attempt:	size
+						,	cssSize:	newSize
+						}]
+			,	lastTry = tries[0]
+			,	thisTry	= {}
+			,	msg		= 'Inaccurate size after resizing the '+ pane +'-pane.'
+			;
+			while ( !lastTry.correct ) {
+				thisTry = { pane: pane, count: lastTry.count+1, target: size };
+
+				if (lastTry.actual > size)
+					thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size));
+				else // lastTry.actual < size
+					thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual));
+
+				thisTry.cssSize = cssSize(pane, thisTry.attempt);
+				$P.css( dimName, thisTry.cssSize );
+
+				thisTry.actual	= dimName=='width' ? $P.outerWidth() : $P.outerHeight();
+				thisTry.correct	= (size === thisTry.actual);
+
+				// log attempts and alert the user of this *non-fatal error* (if showDebugMessages)
+				if ( tries.length === 1) {
+					_log(msg, false, true);
+					_log(lastTry, false, true);
+				}
+				_log(thisTry, false, true);
+				// after 4 tries, is as close as its gonna get!
+				if (tries.length > 3) break;
+
+				tries.push( thisTry );
+				lastTry = tries[ tries.length - 1 ];
+			}
+			// END TESTING CODE
+
+			// update pane-state dimensions
+			s.size	= size;
+			$.extend(s, elDims($P));
+
+			if (s.isVisible && $P.is(":visible")) {
+				// reposition the resizer-bar
+				if ($R) $R.css( side, size + sC[inset] );
+				// resize the content-div
+				sizeContent(pane);
+			}
+
+			if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible)
+				_runCallbacks("onresize_end", pane);
+
+			// resize all the adjacent panes, and adjust their toggler buttons
+			// when skipCallback passed, it means the controlling method will handle 'other panes'
+			if (!skipCallback) {
+				// also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize
+				if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force);
+				sizeHandles();
+			}
+
+			// if opposite-pane was autoClosed, see if it can be autoOpened now
+			var altPane = _c.oppositeEdge[pane];
+			if (size < oldSize && state[ altPane ].noRoom) {
+				setSizeLimits( altPane );
+				makePaneFit( altPane, false, skipCallback );
+			}
+
+			// DEBUG - ALERT user/developer so they know there was a sizing problem
+			if (tries.length > 1)
+				_log(msg +'\nSee the Error Console for details.', true, true);
+		}
+	}
+
+	/**
+	* @see  initPanes(), sizePane(), resizeAll(), open(), close(), hide()
+	* @param {Array.<string>|string} panes					The pane(s) being resized, comma-delmited string
+	* @param {boolean=}				[skipCallback=false]	Should the onresize callback be run?
+	* @param {boolean=}				[force=false]
+	*/
+,	sizeMidPanes = function (panes, skipCallback, force) {
+		panes = (panes ? panes : "east,west,center").split(",");
+
+		$.each(panes, function (i, pane) {
+			if (!$Ps[pane]) return; // NO PANE - skip
+			var 
+				o		= options[pane]
+			,	s		= state[pane]
+			,	$P		= $Ps[pane]
+			,	$R		= $Rs[pane]
+			,	isCenter= (pane=="center")
+			,	hasRoom	= true
+			,	CSS		= {}
+			,	newCenter	= calcNewCenterPaneDims()
+			;
+			// update pane-state dimensions
+			$.extend(s, elDims($P));
+
+			if (pane === "center") {
+				if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight)
+					return true; // SKIP - pane already the correct size
+				// set state for makePaneFit() logic
+				$.extend(s, cssMinDims(pane), {
+					maxWidth:	newCenter.width
+				,	maxHeight:	newCenter.height
+				});
+				CSS = newCenter;
+				// convert OUTER width/height to CSS width/height 
+				CSS.width	= cssW($P, CSS.width);
+				// NEW - allow pane to extend 'below' visible area rather than hide it
+				CSS.height	= cssH($P, CSS.height);
+				hasRoom		= CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW
+				// during layout init, try to shrink east/west panes to make room for center
+				if (!state.initialized && o.minWidth > s.outerWidth) {
+					var
+						reqPx	= o.minWidth - s.outerWidth
+					,	minE	= options.east.minSize || 0
+					,	minW	= options.west.minSize || 0
+					,	sizeE	= state.east.size
+					,	sizeW	= state.west.size
+					,	newE	= sizeE
+					,	newW	= sizeW
+					;
+					if (reqPx > 0 && state.east.isVisible && sizeE > minE) {
+						newE = max( sizeE-minE, sizeE-reqPx );
+						reqPx -= sizeE-newE;
+					}
+					if (reqPx > 0 && state.west.isVisible && sizeW > minW) {
+						newW = max( sizeW-minW, sizeW-reqPx );
+						reqPx -= sizeW-newW;
+					}
+					// IF we found enough extra space, then resize the border panes as calculated
+					if (reqPx === 0) {
+						if (sizeE && sizeE != minE)
+							sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done
+						if (sizeW && sizeW != minW)
+							sizePane('west', newW, true, force, true);
+						// now start over!
+						sizeMidPanes('center', skipCallback, force);
+						return; // abort this loop
+					}
+				}
+			}
+			else { // for east and west, set only the height, which is same as center height
+				// set state.min/maxWidth/Height for makePaneFit() logic
+				if (s.isVisible && !s.noVerticalRoom)
+					$.extend(s, elDims($P), cssMinDims(pane))
+				if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight)
+					return true; // SKIP - pane already the correct size
+				// east/west have same top, bottom & height as center
+				CSS.top		= newCenter.top;
+				CSS.bottom	= newCenter.bottom;
+				// NEW - allow pane to extend 'below' visible area rather than hide it
+				CSS.height	= cssH($P, newCenter.height);
+				s.maxHeight	= CSS.height;
+				hasRoom		= (s.maxHeight >= 0); // ALWAYS TRUE NOW
+				if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic
+			}
+
+			if (hasRoom) {
+				// resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized
+				if (!skipCallback && state.initialized)
+					_runCallbacks("onresize_start", pane);
+
+				$P.css(CSS); // apply the CSS to pane
+				if (pane !== "center")
+					sizeHandles(pane); // also update resizer length
+				if (s.noRoom && !s.isClosed && !s.isHidden)
+					makePaneFit(pane); // will re-open/show auto-closed/hidden pane
+				if (s.isVisible) {
+					$.extend(s, elDims($P)); // update pane dimensions
+					if (state.initialized) sizeContent(pane); // also resize the contents, if exists
+				}
+			}
+			else if (!s.noRoom && s.isVisible) // no room for pane
+				makePaneFit(pane); // will hide or close pane
+
+			if (!s.isVisible)
+				return true; // DONE - next pane
+
+			/*
+			* Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes
+			* Normally these panes have only 'left' & 'right' positions so pane auto-sizes
+			* ALSO required when pane is an IFRAME because will NOT default to 'full width'
+			*	TODO: Can I use width:100% for a north/south iframe?
+			*	TODO: Sounds like a job for $P.outerWidth( sC.innerWidth ) SETTER METHOD
+			*/
+			if (pane === "center") { // finished processing midPanes
+				var fix = browser.isIE6 || !browser.boxModel;
+				if ($Ps.north && (fix || state.north.tagName=="IFRAME")) 
+					$Ps.north.css("width", cssW($Ps.north, sC.innerWidth));
+				if ($Ps.south && (fix || state.south.tagName=="IFRAME"))
+					$Ps.south.css("width", cssW($Ps.south, sC.innerWidth));
+			}
+
+			// resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized
+			if (!skipCallback && state.initialized)
+				_runCallbacks("onresize_end", pane);
+		});
+	}
+
+
+	/**
+	* @see  window.onresize(), callbacks or custom code
+	*/
+,	resizeAll = function (evt) {
+		// stopPropagation if called by trigger("layoutdestroy") - use evtPane utility 
+		evtPane(evt);
+
+		if (!state.initialized) {
+			_initLayoutElements();
+			return; // no need to resize since we just initialized!
+		}
+		var	oldW	= sC.innerWidth
+		,	oldH	= sC.innerHeight
+		;
+		// cannot size layout when 'container' is hidden or collapsed
+		if (!$N.is(":visible") ) return;
+		$.extend(state.container, elDims( $N )); // UPDATE container dimensions
+		if (!sC.outerHeight) return;
+
+		// onresizeall_start will CANCEL resizing if returns false
+		// state.container has already been set, so user can access this info for calcuations
+		if (false === _runCallbacks("onresizeall_start")) return false;
+
+		var	// see if container is now 'smaller' than before
+			shrunkH	= (sC.innerHeight < oldH)
+		,	shrunkW	= (sC.innerWidth < oldW)
+		,	$P, o, s, dir
+		;
+		// NOTE special order for sizing: S-N-E-W
+		$.each(["south","north","east","west"], function (i, pane) {
+			if (!$Ps[pane]) return; // no pane - SKIP
+			s	= state[pane];
+			o	= options[pane];
+			dir	= _c[pane].dir;
+
+			if (o.autoResize && s.size != o.size) // resize pane to original size set in options
+				sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation
+			else {
+				setSizeLimits(pane);
+				makePaneFit(pane, false, true, true); // true=skipCallback/forceResize
+			}
+		});
+
+		sizeMidPanes("", true, true); // true=skipCallback, true=forceResize
+		sizeHandles(); // reposition the toggler elements
+
+		// trigger all individual pane callbacks AFTER layout has finished resizing
+		o = options; // reuse alias
+		$.each(_c.allPanes, function (i, pane) {
+			$P = $Ps[pane];
+			if (!$P) return; // SKIP
+			if (state[pane].isVisible) // undefined for non-existent panes
+				_runCallbacks("onresize_end", pane); // callback - if exists
+		});
+
+		_runCallbacks("onresizeall_end");
+		//_triggerLayoutEvent(pane, 'resizeall');
+	}
+
+	/**
+	* Whenever a pane resizes or opens that has a nested layout, trigger resizeAll
+	*
+	* @param {string|Object}	evt_or_pane		The pane just resized or opened
+	*/
+,	resizeChildLayout = function (evt_or_pane) {
+		var	pane = evtPane.call(this, evt_or_pane);
+		if (!options[pane].resizeChildLayout) return;
+		var	$P	= $Ps[pane]
+		,	$C	= $Cs[pane]
+		,	d	= "layout"
+		,	P	= Instance[pane]
+		,	L	= children[pane]
+		;
+		// user may have manually set EITHER instance pointer, so handle that
+		if (P.child && !L) {
+			// have to reverse the pointers!
+			var el = P.child.container;
+			L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance
+		}
+
+		// if a layout-pointer exists, see if child has been destroyed
+		if (L && L.destroyed)
+			L = children[pane] = null; // clear child pointers
+		// no child layout pointer is set - see if there is a child layout NOW
+		if (!L)	L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers
+
+		// ALWAYS refresh the pane.child alias
+		P.child = children[pane];
+
+		if (L) L.resizeAll();
+	}
+
+
+	/**
+	* IF pane has a content-div, then resize all elements inside pane to fit pane-height
+	*
+	* @param {string|Object}	evt_or_panes		The pane(s) being resized
+	* @param {boolean=}			[remeasure=false]	Should the content (header/footer) be remeasured?
+	*/
+,	sizeContent = function (evt_or_panes, remeasure) {
+		if (!isInitialized()) return;
+
+		var panes = evtPane.call(this, evt_or_panes);
+		panes = panes ? panes.split(",") : _c.allPanes;
+
+		$.each(panes, function (idx, pane) {
+			var
+				$P	= $Ps[pane]
+			,	$C	= $Cs[pane]
+			,	o	= options[pane]
+			,	s	= state[pane]
+			,	m	= s.content // m = measurements
+			;
+			if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip
+
+			// if content-element was REMOVED, update OR remove the pointer
+			if (!$C.length) {
+				initContent(pane, false);	// false = do NOT sizeContent() - already there!
+				if (!$C) return;			// no replacement element found - pointer have been removed
+			}
+
+			// onsizecontent_start will CANCEL resizing if returns false
+			if (false === _runCallbacks("onsizecontent_start", pane)) return;
+
+			// skip re-measuring offsets if live-resizing
+			if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) {
+				_measure();
+				// if any footers are below pane-bottom, they may not measure correctly,
+				// so allow pane overflow and re-measure
+				if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") {
+					$P.css("overflow", "visible");
+					_measure(); // remeasure while overflowing
+					$P.css("overflow", "hidden");
+				}
+			}
+			// NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders
+			var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom);
+
+			if (!$C.is(":visible") || m.height != newH) {
+				// size the Content element to fit new pane-size - will autoHide if not enough room
+				setOuterHeight($C, newH, true); // true=autoHide
+				m.height = newH; // save new height
+			};
+
+			if (state.initialized)
+				_runCallbacks("onsizecontent_end", pane);
+
+			function _below ($E) {
+				return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0));
+			};
+
+			function _measure () {
+				var
+					ignore	= options[pane].contentIgnoreSelector
+				,	$Fs		= $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL
+				,	$Fs_vis	= $Fs.filter(':visible')
+				,	$F		= $Fs_vis.filter(':last')
+				;
+				m = {
+					top:			$C[0].offsetTop
+				,	height:			$C.outerHeight()
+				,	numFooters:		$Fs.length
+				,	hiddenFooters:	$Fs.length - $Fs_vis.length
+				,	spaceBelow:		0 // correct if no content footer ($E)
+				}
+					m.spaceAbove	= m.top; // just for state - not used in calc
+					m.bottom		= m.top + m.height;
+				if ($F.length)
+					//spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom)
+					m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F);
+				else // no footer - check marginBottom on Content element itself
+					m.spaceBelow = _below($C);
+			};
+		});
+	}
+
+
+	/**
+	* Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary
+	*
+	* @see  initHandles(), open(), close(), resizeAll()
+	* @param {string|Object}	evt_or_panes		The pane(s) being resized
+	*/
+,	sizeHandles = function (evt_or_panes) {
+		var panes = evtPane.call(this, evt_or_panes)
+		panes = panes ? panes.split(",") : _c.borderPanes;
+
+		$.each(panes, function (i, pane) {
+			var 
+				o	= options[pane]
+			,	s	= state[pane]
+			,	$P	= $Ps[pane]
+			,	$R	= $Rs[pane]
+			,	$T	= $Ts[pane]
+			,	$TC
+			;
+			if (!$P || !$R) return;
+
+			var
+				dir			= _c[pane].dir
+			,	_state		= (s.isClosed ? "_closed" : "_open")
+			,	spacing		= o["spacing"+ _state]
+			,	togAlign	= o["togglerAlign"+ _state]
+			,	togLen		= o["togglerLength"+ _state]
+			,	paneLen
+			,	left
+			,	offset
+			,	CSS = {}
+			;
+
+			if (spacing === 0) {
+				$R.hide();
+				return;
+			}
+			else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason
+				$R.show(); // in case was previously hidden
+
+			// Resizer Bar is ALWAYS same width/height of pane it is attached to
+			if (dir === "horz") { // north/south
+				//paneLen = $P.outerWidth(); // s.outerWidth || 
+				paneLen = sC.innerWidth; // handle offscreen-panes
+				s.resizerLength = paneLen;
+				left = $.layout.cssNum($P, "left")
+				$R.css({
+					width:	cssW($R, paneLen) // account for borders & padding
+				,	height:	cssH($R, spacing) // ditto
+				,	left:	left > -9999 ? left : sC.insetLeft // handle offscreen-panes
+				});
+			}
+			else { // east/west
+				paneLen = $P.outerHeight(); // s.outerHeight || 
+				s.resizerLength = paneLen;
+				$R.css({
+					height:	cssH($R, paneLen) // account for borders & padding
+				,	width:	cssW($R, spacing) // ditto
+				,	top:	sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane?
+				//,	top:	$.layout.cssNum($Ps["center"], "top")
+				});
+			}
+
+			// remove hover classes
+			removeHover( o, $R );
+
+			if ($T) {
+				if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) {
+					$T.hide(); // always HIDE the toggler when 'sliding'
+					return;
+				}
+				else
+					$T.show(); // in case was previously hidden
+
+				if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) {
+					togLen = paneLen;
+					offset = 0;
+				}
+				else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed
+					if (isStr(togAlign)) {
+						switch (togAlign) {
+							case "top":
+							case "left":	offset = 0;
+											break;
+							case "bottom":
+							case "right":	offset = paneLen - togLen;
+											break;
+							case "middle":
+							case "center":
+							default:		offset = round((paneLen - togLen) / 2); // 'default' catches typos
+						}
+					}
+					else { // togAlign = number
+						var x = parseInt(togAlign, 10); //
+						if (togAlign >= 0) offset = x;
+						else offset = paneLen - togLen + x; // NOTE: x is negative!
+					}
+				}
+
+				if (dir === "horz") { // north/south
+					var width = cssW($T, togLen);
+					$T.css({
+						width:	width  // account for borders & padding
+					,	height:	cssH($T, spacing) // ditto
+					,	left:	offset // TODO: VERIFY that toggler  positions correctly for ALL values
+					,	top:	0
+					});
+					// CENTER the toggler content SPAN
+					$T.children(".content").each(function(){
+						$TC = $(this);
+						$TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative
+					});
+				}
+				else { // east/west
+					var height = cssH($T, togLen);
+					$T.css({
+						height:	height // account for borders & padding
+					,	width:	cssW($T, spacing) // ditto
+					,	top:	offset // POSITION the toggler
+					,	left:	0
+					});
+					// CENTER the toggler content SPAN
+					$T.children(".content").each(function(){
+						$TC = $(this);
+						$TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative
+					});
+				}
+
+				// remove ALL hover classes
+				removeHover( 0, $T );
+			}
+
+			// DONE measuring and sizing this resizer/toggler, so can be 'hidden' now
+			if (!state.initialized && (o.initHidden || s.noRoom)) {
+				$R.hide();
+				if ($T) $T.hide();
+			}
+		});
+	}
+
+
+	/**
+	* @param {string|Object}	evt_or_pane
+	*/
+,	enableClosable = function (evt_or_pane) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$T	= $Ts[pane]
+		,	o	= options[pane]
+		;
+		if (!$T) return;
+		o.closable = true;
+		$T	.bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); })
+			.css("visibility", "visible")
+			.css("cursor", "pointer")
+			.attr("title", state[pane].isClosed ? o.tips.Open : o.tips.Close) // may be blank
+			.show();
+	}
+	/**
+	* @param {string|Object}	evt_or_pane
+	* @param {boolean=}			[hide=false]
+	*/
+,	disableClosable = function (evt_or_pane, hide) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$T	= $Ts[pane]
+		;
+		if (!$T) return;
+		options[pane].closable = false;
+		// is closable is disable, then pane MUST be open!
+		if (state[pane].isClosed) open(pane, false, true);
+		$T	.unbind("."+ sID)
+			.css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues
+			.css("cursor", "default")
+			.attr("title", "");
+	}
+
+
+	/**
+	* @param {string|Object}	evt_or_pane
+	*/
+,	enableSlidable = function (evt_or_pane) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$R	= $Rs[pane]
+		;
+		if (!$R || !$R.data('draggable')) return;
+		options[pane].slidable = true; 
+		if (state[pane].isClosed)
+			bindStartSlidingEvent(pane, true);
+	}
+	/**
+	* @param {string|Object}	evt_or_pane
+	*/
+,	disableSlidable = function (evt_or_pane) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$R	= $Rs[pane]
+		;
+		if (!$R) return;
+		options[pane].slidable = false; 
+		if (state[pane].isSliding)
+			close(pane, false, true);
+		else {
+			bindStartSlidingEvent(pane, false);
+			$R	.css("cursor", "default")
+				.attr("title", "");
+			removeHover(null, $R[0]); // in case currently hovered
+		}
+	}
+
+
+	/**
+	* @param {string|Object}	evt_or_pane
+	*/
+,	enableResizable = function (evt_or_pane) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$R	= $Rs[pane]
+		,	o	= options[pane]
+		;
+		if (!$R || !$R.data('draggable')) return;
+		o.resizable = true; 
+		$R.draggable("enable");
+		if (!state[pane].isClosed)
+			$R	.css("cursor", o.resizerCursor)
+			 	.attr("title", o.tips.Resize);
+	}
+	/**
+	* @param {string|Object}	evt_or_pane
+	*/
+,	disableResizable = function (evt_or_pane) {
+		if (!isInitialized()) return;
+		var	pane = evtPane.call(this, evt_or_pane)
+		,	$R	= $Rs[pane]
+		;
+		if (!$R || !$R.data('draggable')) return;
+		options[pane].resizable = false; 
+		$R	.draggable("disable")
+			.css("cursor", "default")
+			.attr("title", "");
+		removeHover(null, $R[0]); // in case currently hovered
+	}
+
+
+	/**
+	* Move a pane from source-side (eg, west) to target-side (eg, east)
+	* If pane exists on target-side, move that to source-side, ie, 'swap' the panes
+	*
+	* @param {string|Object}	evt_or_pane1	The pane/edge being swapped
+	* @param {string}			pane2			ditto
+	*/
+,	swapPanes = function (evt_or_pane1, pane2) {
+		if (!isInitialized()) return;
+		var pane1 = evtPane.call(this, evt_or_pane1);
+		// change state.edge NOW so callbacks can know where pane is headed...
+		state[pane1].edge = pane2;
+		state[pane2].edge = pane1;
+		// run these even if NOT state.initialized
+		if (false === _runCallbacks("onswap_start", pane1)
+		 ||	false === _runCallbacks("onswap_start", pane2)
+		) {
+			state[pane1].edge = pane1; // reset
+			state[pane2].edge = pane2;
+			return;
+		}
+
+		var
+			oPane1	= copy( pane1 )
+		,	oPane2	= copy( pane2 )
+		,	sizes	= {}
+		;
+		sizes[pane1] = oPane1 ? oPane1.state.size : 0;
+		sizes[pane2] = oPane2 ? oPane2.state.size : 0;
+
+		// clear pointers & state
+		$Ps[pane1] = false; 
+		$Ps[pane2] = false;
+		state[pane1] = {};
+		state[pane2] = {};
+		
+		// ALWAYS remove the resizer & toggler elements
+		if ($Ts[pane1]) $Ts[pane1].remove();
+		if ($Ts[pane2]) $Ts[pane2].remove();
+		if ($Rs[pane1]) $Rs[pane1].remove();
+		if ($Rs[pane2]) $Rs[pane2].remove();
+		$Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false;
+
+		// transfer element pointers and data to NEW Layout keys
+		move( oPane1, pane2 );
+		move( oPane2, pane1 );
+
+		// cleanup objects
+		oPane1 = oPane2 = sizes = null;
+
+		// make panes 'visible' again
+		if ($Ps[pane1]) $Ps[pane1].css(_c.visible);
+		if ($Ps[pane2]) $Ps[pane2].css(_c.visible);
+
+		// fix any size discrepancies caused by swap
+		resizeAll();
+
+		// run these even if NOT state.initialized
+		_runCallbacks("onswap_end", pane1);
+		_runCallbacks("onswap_end", pane2);
+
+		return;
+
+		function copy (n) { // n = pane
+			var
+				$P	= $Ps[n]
+			,	$C	= $Cs[n]
+			;
+			return !$P ? false : {
+				pane:		n
+			,	P:			$P ? $P[0] : false
+			,	C:			$C ? $C[0] : false
+			,	state:		$.extend(true, {}, state[n])
+			,	options:	$.extend(true, {}, options[n])
+			}
+		};
+
+		function move (oPane, pane) {
+			if (!oPane) return;
+			var
+				P		= oPane.P
+			,	C		= oPane.C
+			,	oldPane = oPane.pane
+			,	c		= _c[pane]
+			,	side	= c.side.toLowerCase()
+			,	inset	= "inset"+ c.side
+			//	save pane-options that should be retained
+			,	s		= $.extend(true, {}, state[pane])
+			,	o		= options[pane]
+			//	RETAIN side-specific FX Settings - more below
+			,	fx		= { resizerCursor: o.resizerCursor }
+			,	re, size, pos
+			;
+			$.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) {
+				fx[k +"_open"]  = o[k +"_open"];
+				fx[k +"_close"] = o[k +"_close"];
+				fx[k +"_size"]  = o[k +"_size"];
+			});
+
+			// update object pointers and attributes
+			$Ps[pane] = $(P)
+				.data({
+					layoutPane:		Instance[pane]	// NEW pointer to pane-alias-object
+				,	layoutEdge:		pane
+				})
+				.css(_c.hidden)
+				.css(c.cssReq)
+			;
+			$Cs[pane] = C ? $(C) : false;
+
+			// set options and state
+			options[pane]	= $.extend(true, {}, oPane.options, fx);
+			state[pane]		= $.extend(true, {}, oPane.state);
+
+			// change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west
+			re = new RegExp(o.paneClass +"-"+ oldPane, "g");
+			P.className = P.className.replace(re, o.paneClass +"-"+ pane);
+
+			// ALWAYS regenerate the resizer & toggler elements
+			initHandles(pane); // create the required resizer & toggler
+
+			// if moving to different orientation, then keep 'target' pane size
+			if (c.dir != _c[oldPane].dir) {
+				size = sizes[pane] || 0;
+				setSizeLimits(pane); // update pane-state
+				size = max(size, state[pane].minSize);
+				// use manualSizePane to disable autoResize - not useful after panes are swapped
+				manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation
+			}
+			else // move the resizer here
+				$Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0));
+
+
+			// ADD CLASSNAMES & SLIDE-BINDINGS
+			if (oPane.state.isVisible && !s.isVisible)
+				setAsOpen(pane, true); // true = skipCallback
+			else {
+				setAsClosed(pane);
+				bindStartSlidingEvent(pane, true); // will enable events IF option is set
+			}
+
+			// DESTROY the object
+			oPane = null;
+		};
+	}
+
+
+	/**
+	* INTERNAL method to sync pin-buttons when pane is opened or closed
+	* Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
+	*
+	* @see  open(), setAsOpen(), setAsClosed()
+	* @param {string}	pane   These are the params returned to callbacks by layout()
+	* @param {boolean}	doPin  True means set the pin 'down', False means 'up'
+	*/
+,	syncPinBtns = function (pane, doPin) {
+		if ($.layout.plugins.buttons)
+			$.each(state[pane].pins, function (i, selector) {
+				$.layout.buttons.setPinState(Instance, $(selector), pane, doPin);
+			});
+	}
+
+;	// END var DECLARATIONS
+
+	/**
+	* Capture keys when enableCursorHotkey - toggle pane if hotkey pressed
+	*
+	* @see  document.keydown()
+	*/
+	function keyDown (evt) {
+		if (!evt) return true;
+		var code = evt.keyCode;
+		if (code < 33) return true; // ignore special keys: ENTER, TAB, etc
+
+		var
+			PANE = {
+				38: "north" // Up Cursor	- $.ui.keyCode.UP
+			,	40: "south" // Down Cursor	- $.ui.keyCode.DOWN
+			,	37: "west"  // Left Cursor	- $.ui.keyCode.LEFT
+			,	39: "east"  // Right Cursor	- $.ui.keyCode.RIGHT
+			}
+		,	ALT		= evt.altKey // no worky!
+		,	SHIFT	= evt.shiftKey
+		,	CTRL	= evt.ctrlKey
+		,	CURSOR	= (CTRL && code >= 37 && code <= 40)
+		,	o, k, m, pane
+		;
+
+		if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey
+			pane = PANE[code];
+		else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey
+			$.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey
+				o = options[p];
+				k = o.customHotkey;
+				m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT"
+				if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches
+					if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches
+						pane = p;
+						return false; // BREAK
+					}
+				}
+			});
+
+		// validate pane
+		if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden)
+			return true;
+
+		toggle(pane);
+
+		evt.stopPropagation();
+		evt.returnValue = false; // CANCEL key
+		return false;
+	};
+
+
+/*
+ * ######################################
+ *	UTILITY METHODS
+ *	called externally or by initButtons
+ * ######################################
+ */
+
+	/**
+	* Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work
+	*
+	* @param {Object=}   [el]	(optional) Can also be 'bound' to a click, mouseOver, or other event
+	*/
+	function allowOverflow (el) {
+		if (!isInitialized()) return;
+		if (this && this.tagName) el = this; // BOUND to element
+		var $P;
+		if (isStr(el))
+			$P = $Ps[el];
+		else if ($(el).data("layoutRole"))
+			$P = $(el);
+		else
+			$(el).parents().each(function(){
+				if ($(this).data("layoutRole")) {
+					$P = $(this);
+					return false; // BREAK
+				}
+			});
+		if (!$P || !$P.length) return; // INVALID
+
+		var
+			pane	= $P.data("layoutEdge")
+		,	s		= state[pane]
+		;
+
+		// if pane is already raised, then reset it before doing it again!
+		// this would happen if allowOverflow is attached to BOTH the pane and an element 
+		if (s.cssSaved)
+			resetOverflow(pane); // reset previous CSS before continuing
+
+		// if pane is raised by sliding or resizing, or its closed, then abort
+		if (s.isSliding || s.isResizing || s.isClosed) {
+			s.cssSaved = false;
+			return;
+		}
+
+		var
+			newCSS	= { zIndex: (options.zIndexes.resizer_normal + 1) }
+		,	curCSS	= {}
+		,	of		= $P.css("overflow")
+		,	ofX		= $P.css("overflowX")
+		,	ofY		= $P.css("overflowY")
+		;
+		// determine which, if any, overflow settings need to be changed
+		if (of != "visible") {
+			curCSS.overflow = of;
+			newCSS.overflow = "visible";
+		}
+		if (ofX && !ofX.match(/(visible|auto)/)) {
+			curCSS.overflowX = ofX;
+			newCSS.overflowX = "visible";
+		}
+		if (ofY && !ofY.match(/(visible|auto)/)) {
+			curCSS.overflowY = ofX;
+			newCSS.overflowY = "visible";
+		}
+
+		// save the current overflow settings - even if blank!
+		s.cssSaved = curCSS;
+
+		// apply new CSS to raise zIndex and, if necessary, make overflow 'visible'
+		$P.css( newCSS );
+
+		// make sure the zIndex of all other panes is normal
+		$.each(_c.allPanes, function(i, p) {
+			if (p != pane) resetOverflow(p);
+		});
+
+	};
+	/**
+	* @param {Object=}   [el]	(optional) Can also be 'bound' to a click, mouseOver, or other event
+	*/
+	function resetOverflow (el) {
+		if (!isInitialized()) return;
+		if (this && this.tagName) el = this; // BOUND to element
+		var $P;
+		if (isStr(el))
+			$P = $Ps[el];
+		else if ($(el).data("layoutRole"))
+			$P = $(el);
+		else
+			$(el).parents().each(function(){
+				if ($(this).data("layoutRole")) {
+					$P = $(this);
+					return false; // BREAK
+				}
+			});
+		if (!$P || !$P.length) return; // INVALID
+
+		var
+			pane	= $P.data("layoutEdge")
+		,	s		= state[pane]
+		,	CSS		= s.cssSaved || {}
+		;
+		// reset the zIndex
+		if (!s.isSliding && !s.isResizing)
+			$P.css("zIndex", options.zIndexes.pane_normal);
+
+		// reset Overflow - if necessary
+		$P.css( CSS );
+
+		// clear var
+		s.cssSaved = false;
+	};
+
+/*
+ * #####################
+ * CREATE/RETURN LAYOUT
+ * #####################
+ */
+
+	// validate that container exists
+	var $N = $(this).eq(0); // FIRST matching Container element
+	if (!$N.length) {
+		return _log( options.errors.containerMissing );
+	};
+
+	// Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout")
+	// return the Instance-pointer if layout has already been initialized
+	if ($N.data("layoutContainer") && $N.data("layout"))
+		return $N.data("layout"); // cached pointer
+
+	// init global vars
+	var 
+		$Ps	= {}	// Panes x5		- set in initPanes()
+	,	$Cs	= {}	// Content x5	- set in initPanes()
+	,	$Rs	= {}	// Resizers x4	- set in initHandles()
+	,	$Ts	= {}	// Togglers x4	- set in initHandles()
+	,	$Ms	= $([])	// Masks - up to 2 masks per pane (IFRAME + DIV)
+	//	aliases for code brevity
+	,	sC	= state.container // alias for easy access to 'container dimensions'
+	,	sID	= state.id // alias for unique layout ID/namespace - eg: "layout435"
+	;
+
+	// create Instance object to expose data & option Properties, and primary action Methods
+	var Instance = {
+	//	layout data
+		options:			options			// property - options hash
+	,	state:				state			// property - dimensions hash
+	//	object pointers
+	,	container:			$N				// property - object pointers for layout container
+	,	panes:				$Ps				// property - object pointers for ALL Panes: panes.north, panes.center
+	,	contents:			$Cs				// property - object pointers for ALL Content: contents.north, contents.center
+	,	resizers:			$Rs				// property - object pointers for ALL Resizers, eg: resizers.north
+	,	togglers:			$Ts				// property - object pointers for ALL Togglers, eg: togglers.north
+	//	border-pane open/close
+	,	hide:				hide			// method - ditto
+	,	show:				show			// method - ditto
+	,	toggle:				toggle			// method - pass a 'pane' ("north", "west", etc)
+	,	open:				open			// method - ditto
+	,	close:				close			// method - ditto
+	,	slideOpen:			slideOpen		// method - ditto
+	,	slideClose:			slideClose		// method - ditto
+	,	slideToggle:		slideToggle		// method - ditto
+	//	pane actions
+	,	setSizeLimits:		setSizeLimits	// method - pass a 'pane' - update state min/max data
+	,	_sizePane:			sizePane		// method -intended for user by plugins only!
+	,	sizePane:			manualSizePane	// method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto'
+	,	sizeContent:		sizeContent		// method - pass a 'pane'
+	,	swapPanes:			swapPanes		// method - pass TWO 'panes' - will swap them
+	,	showMasks:			showMasks		// method - pass a 'pane' OR list of panes - default = all panes with mask option set
+	,	hideMasks:			hideMasks		// method - ditto'
+	//	pane element methods
+	,	initContent:		initContent		// method - ditto
+	,	addPane:			addPane			// method - pass a 'pane'
+	,	removePane:			removePane		// method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem
+	,	createChildLayout:	createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions
+	//	special pane option setting
+	,	enableClosable:		enableClosable	// method - pass a 'pane'
+	,	disableClosable:	disableClosable	// method - ditto
+	,	enableSlidable:		enableSlidable	// method - ditto
+	,	disableSlidable:	disableSlidable	// method - ditto
+	,	enableResizable:	enableResizable	// method - ditto
+	,	disableResizable:	disableResizable// method - ditto
+	//	utility methods for panes
+	,	allowOverflow:		allowOverflow	// utility - pass calling element (this)
+	,	resetOverflow:		resetOverflow	// utility - ditto
+	//	layout control
+	,	destroy:			destroy			// method - no parameters
+	,	initPanes:			isInitialized	// method - no parameters
+	,	resizeAll:			resizeAll		// method - no parameters
+	//	callback triggering
+	,	runCallbacks:		_runCallbacks	// method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west")
+	//	alias collections of options, state and children - created in addPane and extended elsewhere
+	,	hasParentLayout:	false			// set by initContainer()
+	,	children:			children		// pointers to child-layouts, eg: Instance.children["west"]
+	,	north:				false			// alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] }
+	,	south:				false			// ditto
+	,	west:				false			// ditto
+	,	east:				false			// ditto
+	,	center:				false			// ditto
+	};
+
+	// create the border layout NOW
+	if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation
+		return null;
+	else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later
+		return Instance; // return the Instance object
+
+}
+
+
+/*	OLD versions of jQuery only set $.support.boxModel after page is loaded
+ *	so if this is IE, use support.boxModel to test for quirks-mode (ONLY IE changes boxModel).
+ */
+$(function(){
+	var b = $.layout.browser;
+	if (b.msie) b.boxModel = $.support.boxModel;
+});
+
+
+/**
+ * jquery.layout.state 1.0
+ * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
+ *
+ * Copyright (c) 2010 
+ *   Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ * @dependancies: $.ui.cookie (above)
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ */
+/*
+ *	State-management options stored in options.stateManagement, which includes a .cookie hash
+ *	Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden
+ *
+ *	// STATE/COOKIE OPTIONS
+ *	@example $(el).layout({
+				stateManagement: {
+					enabled:	true
+				,	stateKeys:	"east.size,west.size,east.isClosed,west.isClosed"
+				,	cookie:		{ name: "appLayout", path: "/" }
+				}
+			})
+ *	@example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies
+ *	@example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } })
+ *	@example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" })
+ *
+ *	// STATE/COOKIE METHODS
+ *	@example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} );
+ *	@example myLayout.loadCookie();
+ *	@example myLayout.deleteCookie();
+ *	@example var JSON = myLayout.readState();	// CURRENT Layout State
+ *	@example var JSON = myLayout.readCookie();	// SAVED Layout State (from cookie)
+ *	@example var JSON = myLayout.state.stateData;	// LAST LOADED Layout State (cookie saved in layout.state hash)
+ *
+ *	CUSTOM STATE-MANAGEMENT (eg, saved in a database)
+ *	@example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" );
+ *	@example myLayout.loadState( JSON );
+ */
+
+/**
+ *	UI COOKIE UTILITY
+ *
+ *	A $.cookie OR $.ui.cookie namespace *should be standard*, but until then...
+ *	This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin
+ *	NOTE: This utility is REQUIRED by the layout.state plugin
+ *
+ *	Cookie methods in Layout are created as part of State Management 
+ */
+if (!$.ui) $.ui = {};
+$.ui.cookie = {
+
+	// cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6
+	acceptsCookies: !!navigator.cookieEnabled
+
+,	read: function (name) {
+		var
+			c		= document.cookie
+		,	cs		= c ? c.split(';') : []
+		,	pair	// loop var
+		;
+		for (var i=0, n=cs.length; i < n; i++) {
+			pair = $.trim(cs[i]).split('='); // name=value pair
+			if (pair[0] == name) // found the layout cookie
+				return decodeURIComponent(pair[1]);
+
+		}
+		return null;
+	}
+
+,	write: function (name, val, cookieOpts) {
+		var
+			params	= ''
+		,	date	= ''
+		,	clear	= false
+		,	o		= cookieOpts || {}
+		,	x		= o.expires
+		;
+		if (x && x.toUTCString)
+			date = x;
+		else if (x === null || typeof x === 'number') {
+			date = new Date();
+			if (x > 0)
+				date.setDate(date.getDate() + x);
+			else {
+				date.setFullYear(1970);
+				clear = true;
+			}
+		}
+		if (date)		params += ';expires='+ date.toUTCString();
+		if (o.path)		params += ';path='+ o.path;
+		if (o.domain)	params += ';domain='+ o.domain;
+		if (o.secure)	params += ';secure';
+		document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie
+	}
+
+,	clear: function (name) {
+		$.ui.cookie.write(name, '', {expires: -1});
+	}
+
+};
+// if cookie.jquery.js is not loaded, create an alias to replicate it
+// this may be useful to other plugins or code dependent on that plugin
+if (!$.cookie) $.cookie = function (k, v, o) {
+	var C = $.ui.cookie;
+	if (v === null)
+		C.clear(k);
+	else if (v === undefined)
+		return C.read(k);
+	else
+		C.write(k, v, o);
+};
+
+
+// tell Layout that the state plugin is available
+$.layout.plugins.stateManagement = true;
+
+//	Add State-Management options to layout.defaults
+$.layout.config.optionRootKeys.push("stateManagement");
+$.layout.defaults.stateManagement = {
+	enabled:	false	// true = enable state-management, even if not using cookies
+,	autoSave:	true	// Save a state-cookie when page exits?
+,	autoLoad:	true	// Load the state-cookie when Layout inits?
+	// List state-data to save - must be pane-specific
+,	stateKeys:	"north.size,south.size,east.size,west.size,"+
+				"north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+
+				"north.isHidden,south.isHidden,east.isHidden,west.isHidden"
+,	cookie: {
+		name:	""	// If not specified, will use Layout.name, else just "Layout"
+	,	domain:	""	// blank = current domain
+	,	path:	""	// blank = current page, '/' = entire website
+	,	expires: ""	// 'days' to keep cookie - leave blank for 'session cookie'
+	,	secure:	false
+	}
+};
+// Set stateManagement as a layout-option, NOT a pane-option
+$.layout.optionsMap.layout.push("stateManagement");
+
+/*
+ *	State Management methods
+ */
+$.layout.state = {
+
+	/**
+	 * Get the current layout state and save it to a cookie
+	 *
+	 * myLayout.saveCookie( keys, cookieOpts )
+	 *
+	 * @param {Object}			inst
+	 * @param {(string|Array)=}	keys
+	 * @param {Object=}			cookieOpts
+	 */
+	saveCookie: function (inst, keys, cookieOpts) {
+		var o	= inst.options
+		,	oS	= o.stateManagement
+		,	oC	= $.extend(true, {}, oS.cookie, cookieOpts || null)
+		,	data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state
+		;
+		$.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC );
+		return $.extend(true, {}, data); // return COPY of state.stateData data
+	}
+
+	/**
+	 * Remove the state cookie
+	 *
+	 * @param {Object}	inst
+	 */
+,	deleteCookie: function (inst) {
+		var o = inst.options;
+		$.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" );
+	}
+
+	/**
+	 * Read & return data from the cookie - as JSON
+	 *
+	 * @param {Object}	inst
+	 */
+,	readCookie: function (inst) {
+		var o = inst.options;
+		var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" );
+		// convert cookie string back to a hash and return it
+		return c ? $.layout.state.decodeJSON(c) : {};
+	}
+
+	/**
+	 * Get data from the cookie and USE IT to loadState
+	 *
+	 * @param {Object}	inst
+	 */
+,	loadCookie: function (inst) {
+		var c = $.layout.state.readCookie(inst); // READ the cookie
+		if (c) {
+			inst.state.stateData = $.extend(true, {}, c); // SET state.stateData
+			inst.loadState(c); // LOAD the retrieved state
+		}
+		return c;
+	}
+	
+	/**
+	 * Update layout options from the cookie, if one exists
+	 *
+	 * @param {Object}		inst
+	 * @param {Object=}		stateData
+	 * @param {boolean=}	animate
+	 */
+,	loadState: function (inst, stateData, animate) {
+		stateData = $.layout.transformData( stateData ); // panes = default subkey
+		if ($.isEmptyObject( stateData )) return;
+		$.extend(true, inst.options, stateData); // update layout options
+		// if layout has already been initialized, then UPDATE layout state
+		if (inst.state.initialized) {
+			var pane, vis, o, s, h, c
+			,	noAnimate = (animate===false)
+			;
+			$.each($.layout.config.borderPanes, function (idx, pane) {
+				state = inst.state[pane];
+				o = stateData[ pane ];
+				if (typeof o != 'object') return; // no key, continue
+				s	= o.size;
+				c	= o.initClosed;
+				h	= o.initHidden;
+				vis	= state.isVisible;
+				// resize BEFORE opening
+				if (!vis)
+					inst.sizePane(pane, s, false, false);
+				if (h === true)			inst.hide(pane, noAnimate);
+				else if (c === false)	inst.open (pane, false, noAnimate);
+				else if (c === true)	inst.close(pane, false, noAnimate);
+				else if (h === false)	inst.show (pane, false, noAnimate);
+				// resize AFTER any other actions
+				if (vis)
+					inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed
+			});
+		};
+	}
+
+	/**
+	 * Get the *current layout state* and return it as a hash
+	 *
+	 * @param {Object=}			inst
+	 * @param {(string|Array)=}	keys
+	 */
+,	readState: function (inst, keys) {
+		var
+			data	= {}
+		,	alt		= { isClosed: 'initClosed', isHidden: 'initHidden' }
+		,	state	= inst.state
+		,	panes	= $.layout.config.allPanes
+		,	pair, pane, key, val
+		;
+		if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user
+		if ($.isArray(keys)) keys = keys.join(",");
+		// convert keys to an array and change delimiters from '__' to '.'
+		keys = keys.replace(/__/g, ".").split(',');
+		// loop keys and create a data hash
+		for (var i=0, n=keys.length; i < n; i++) {
+			pair = keys[i].split(".");
+			pane = pair[0];
+			key  = pair[1];
+			if ($.inArray(pane, panes) < 0) continue; // bad pane!
+			val = state[ pane ][ key ];
+			if (val == undefined) continue;
+			if (key=="isClosed" && state[pane]["isSliding"])
+				val = true; // if sliding, then *really* isClosed
+			( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val;
+		}
+		return data;
+	}
+
+	/**
+	 *	Stringify a JSON hash so can save in a cookie or db-field
+	 */
+,	encodeJSON: function (JSON) {
+		return parse(JSON);
+		function parse (h) {
+			var D=[], i=0, k, v, t; // k = key, v = value
+			for (k in h) {
+				v = h[k];
+				t = typeof v;
+				if (t == 'string')		// STRING - add quotes
+					v = '"'+ v +'"';
+				else if (t == 'object')	// SUB-KEY - recurse into it
+					v = parse(v);
+				D[i++] = '"'+ k +'":'+ v;
+			}
+			return '{'+ D.join(',') +'}';
+		};
+	}
+
+	/**
+	 *	Convert stringified JSON back to a hash object
+	 *	@see		$.parseJSON(), adding in jQuery 1.4.1
+	 */
+,	decodeJSON: function (str) {
+		try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; }
+		catch (e) { return {}; }
+	}
+
+
+,	_create: function (inst) {
+		var _	= $.layout.state;
+		//	ADD State-Management plugin methods to inst
+		 $.extend( inst, {
+		//	readCookie - update options from cookie - returns hash of cookie data
+			readCookie:		function () { return _.readCookie(inst); }
+		//	deleteCookie
+		,	deleteCookie:	function () { _.deleteCookie(inst); }
+		//	saveCookie - optionally pass keys-list and cookie-options (hash)
+		,	saveCookie:		function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); }
+		//	loadCookie - readCookie and use to loadState() - returns hash of cookie data
+		,	loadCookie:		function () { return _.loadCookie(inst); }
+		//	loadState - pass a hash of state to use to update options
+		,	loadState:		function (stateData, animate) { _.loadState(inst, stateData, animate); }
+		//	readState - returns hash of current layout-state
+		,	readState:		function (keys) { return _.readState(inst, keys); }
+		//	add JSON utility methods too...
+		,	encodeJSON:		_.encodeJSON
+		,	decodeJSON:		_.decodeJSON
+		});
+
+		// init state.stateData key, even if plugin is initially disabled
+		inst.state.stateData = {};
+
+		// read and load cookie-data per options
+		var oS = inst.options.stateManagement;
+		if (oS.enabled) {
+			if (oS.autoLoad) // update the options from the cookie
+				inst.loadCookie();
+			else // don't modify options - just store cookie data in state.stateData
+				inst.state.stateData = inst.readCookie();
+		}
+	}
+
+,	_unload: function (inst) {
+		var oS = inst.options.stateManagement;
+		if (oS.enabled) {
+			if (oS.autoSave) // save a state-cookie automatically
+				inst.saveCookie();
+			else // don't save a cookie, but do store state-data in state.stateData key
+				inst.state.stateData = inst.readState();
+		}
+	}
+
+};
+
+// add state initialization method to Layout's onCreate array of functions
+$.layout.onCreate.push( $.layout.state._create );
+$.layout.onUnload.push( $.layout.state._unload );
+
+
+
+
+/**
+ * jquery.layout.buttons 1.0
+ * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
+ *
+ * Copyright (c) 2010 
+ *   Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ *
+ * Docs: [ to come ]
+ * Tips: [ to come ]
+ */
+
+// tell Layout that the state plugin is available
+$.layout.plugins.buttons = true;
+
+//	Add buttons options to layout.defaults
+$.layout.defaults.autoBindCustomButtons = false;
+// Specify autoBindCustomButtons as a layout-option, NOT a pane-option
+$.layout.optionsMap.layout.push("autoBindCustomButtons");
+
+/*
+ *	Button methods
+ */
+$.layout.buttons = {
+
+	/**
+	* Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons
+	*
+	* @see  _create()
+	*
+	* @param  {Object}		inst	Layout Instance object
+	*/
+	init: function (inst) {
+		var pre		= "ui-layout-button-"
+		,	layout	= inst.options.name || ""
+		,	name;
+		$.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) {
+			$.each($.layout.config.borderPanes, function (ii, pane) {
+				$("."+pre+action+"-"+pane).each(function(){
+					// if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name'
+					name = $(this).data("layoutName") || $(this).attr("layoutName");
+					if (name == undefined || name === layout)
+						inst.bindButton(this, action, pane);
+				});
+			});
+		});
+	}
+
+	/**
+	* Helper function to validate params received by addButton utilities
+	*
+	* Two classes are added to the element, based on the buttonClass...
+	* The type of button is appended to create the 2nd className:
+	*  - ui-layout-button-pin		// action btnClass
+	*  - ui-layout-button-pin-west	// action btnClass + pane
+	*  - ui-layout-button-toggle
+	*  - ui-layout-button-open
+	*  - ui-layout-button-close
+	*
+	* @param {Object}			inst		Layout Instance object
+	* @param {(string|!Object)}	selector	jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+	* @param {string}   		pane 		Name of the pane the button is for: 'north', 'south', etc.
+	*
+	* @return {Array.<Object>}	If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null
+	*/
+,	get: function (inst, selector, pane, action) {
+		var $E	= $(selector)
+		,	o	= inst.options
+		,	err	= o.errors.addButtonError
+		;
+		if (!$E.length) { // element not found
+			$.layout.msg(err +" "+ o.errors.selector +": "+ selector, true);
+		}
+		else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified
+			$.layout.msg(err +" "+ o.errors.pane +": "+ pane, true);
+			$E = $("");  // NO BUTTON
+		}
+		else { // VALID
+			var btn = o[pane].buttonClass +"-"+ action;
+			$E	.addClass( btn +" "+ btn +"-"+ pane )
+				.data("layoutName", o.name); // add layout identifier - even if blank!
+		}
+		return $E;
+	}
+
+
+	/**
+	* NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc.
+	*
+	* @param {Object}			inst		Layout Instance object
+	* @param {(string|!Object)}	selector	jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+	* @param {string}			action
+	* @param {string}			pane
+	*/
+,	bind: function (inst, selector, action, pane) {
+		var _ = $.layout.buttons;
+		switch (action.toLowerCase()) {
+			case "toggle":			_.addToggle	(inst, selector, pane); break;	
+			case "open":			_.addOpen	(inst, selector, pane); break;
+			case "close":			_.addClose	(inst, selector, pane); break;
+			case "pin":				_.addPin	(inst, selector, pane); break;
+			case "toggle-slide":	_.addToggle	(inst, selector, pane, true); break;	
+			case "open-slide":		_.addOpen	(inst, selector, pane, true); break;
+		}
+		return inst;
+	}
+
+	/**
+	* Add a custom Toggler button for a pane
+	*
+	* @param {Object}			inst		Layout Instance object
+	* @param {(string|!Object)}	selector	jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+	* @param {string}  			pane 		Name of the pane the button is for: 'north', 'south', etc.
+	* @param {boolean=}			slide 		true = slide-open, false = pin-open
+	*/
+,	addToggle: function (inst, selector, pane, slide) {
+		$.layout.buttons.get(inst, selector, pane, "toggle")
+			.click(function(evt){
+				inst.toggle(pane, !!slide);
+				evt.stopPropagation();
+			});
+		return inst;
+	}
+
+	/**
+	* Add a custom Open button for a pane
+	*
+	* @param {Object}			inst		Layout Instance object
+	* @param {(string|!Object)}	selector	jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+	* @param {string}			pane 		Name of the pane the button is for: 'north', 'south', etc.
+	* @param {boolean=}			slide 		true = slide-open, false = pin-open
+	*/
+,	addOpen: function (inst, selector, pane, slide) {
+		$.layout.buttons.get(inst, selector, pane, "open")
+			.attr("title", inst.options[pane].tips.Open)
+			.click(function (evt) {
+				inst.open(pane, !!slide);
+				evt.stopPropagation();
+			});
+		return inst;
+	}
+
+	/**
+	* Add a custom Close button for a pane
+	*
+	* @param {Object}			inst		Layout Instance object
+	* @param {(string|!Object)}	selector	jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+	* @param {string}   		pane 		Name of the pane the button is for: 'north', 'south', etc.
+	*/
+,	addClose: function (inst, selector, pane) {
+		$.layout.buttons.get(inst, selector, pane, "close")
+			.attr("title", inst.options[pane].tips.Close)
+			.click(function (evt) {
+				inst.close(pane);
+				evt.stopPropagation();
+			});
+		return inst;
+	}
+
+	/**
+	* Add a custom Pin button for a pane
+	*
+	* Four classes are added to the element, based on the paneClass for the associated pane...
+	* Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin:
+	*  - ui-layout-pane-pin
+	*  - ui-layout-pane-west-pin
+	*  - ui-layout-pane-pin-up
+	*  - ui-layout-pane-west-pin-up
+	*
+	* @param {Object}			inst		Layout Instance object
+	* @param {(string|!Object)}	selector	jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+	* @param {string}   		pane 		Name of the pane the pin is for: 'north', 'south', etc.
+	*/
+,	addPin: function (inst, selector, pane) {
+		var	_	= $.layout.buttons
+		,	$E	= _.get(inst, selector, pane, "pin");
+		if ($E.length) {
+			var s = inst.state[pane];
+			$E.click(function (evt) {
+				_.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed));
+				if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open
+				else inst.close( pane ); // slide-closed
+				evt.stopPropagation();
+			});
+			// add up/down pin attributes and classes
+			_.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding));
+			// add this pin to the pane data so we can 'sync it' automatically
+			// PANE.pins key is an array so we can store multiple pins for each pane
+			s.pins.push( selector ); // just save the selector string
+		}
+		return inst;
+	}
+
+	/**
+	* Change the class of the pin button to make it look 'up' or 'down'
+	*
+	* @see  addPin(), syncPins()
+	*
+	* @param {Object}			inst	Layout Instance object
+	* @param {Array.<Object>}	$Pin	The pin-span element in a jQuery wrapper
+	* @param {string}			pane	These are the params returned to callbacks by layout()
+	* @param {boolean}			doPin	true = set the pin 'down', false = set it 'up'
+	*/
+,	setPinState: function (inst, $Pin, pane, doPin) {
+		var updown = $Pin.attr("pin");
+		if (updown && doPin === (updown=="down")) return; // already in correct state
+		var
+			o		= inst.options[pane]
+		,	pin		= o.buttonClass +"-pin"
+		,	side	= pin +"-"+ pane
+		,	UP		= pin +"-up "+	side +"-up"
+		,	DN		= pin +"-down "+side +"-down"
+		;
+		$Pin
+			.attr("pin", doPin ? "down" : "up") // logic
+			.attr("title", doPin ? o.tips.Unpin : o.tips.Pin)
+			.removeClass( doPin ? UP : DN ) 
+			.addClass( doPin ? DN : UP ) 
+		;
+	}
+
+	/**
+	* INTERNAL function to sync 'pin buttons' when pane is opened or closed
+	* Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
+	*
+	* @see  open(), close()
+	*
+	* @param {Object}			inst	Layout Instance object
+	* @param {string}	pane	These are the params returned to callbacks by layout()
+	* @param {boolean}	doPin	True means set the pin 'down', False means 'up'
+	*/
+,	syncPinBtns: function (inst, pane, doPin) {
+		// REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE
+		$.each(inst.state[pane].pins, function (i, selector) {
+			$.layout.buttons.setPinState(inst, $(selector), pane, doPin);
+		});
+	}
+
+
+,	_load: function (inst) {
+		var	_	= $.layout.buttons;
+		// ADD Button methods to Layout Instance
+		// Note: sel = jQuery Selector string
+		$.extend( inst, {
+			bindButton:		function (sel, action, pane) { return _.bind(inst, sel, action, pane); }
+		//	DEPRECATED METHODS
+		,	addToggleBtn:	function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); }
+		,	addOpenBtn:		function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); }
+		,	addCloseBtn:	function (sel, pane) { return _.addClose(inst, sel, pane); }
+		,	addPinBtn:		function (sel, pane) { return _.addPin(inst, sel, pane); }
+		});
+
+		// init state array to hold pin-buttons
+		for (var i=0; i<4; i++) {
+			var pane = $.layout.config.borderPanes[i];
+			inst.state[pane].pins = [];
+		}
+
+		// auto-init buttons onLoad if option is enabled
+		if ( inst.options.autoBindCustomButtons )
+			_.init(inst);
+	}
+
+,	_unload: function (inst) {
+		// TODO: unbind all buttons???
+	}
+
+};
+
+// add initialization method to Layout's onLoad array of functions
+$.layout.onLoad.push(  $.layout.buttons._load );
+//$.layout.onUnload.push( $.layout.buttons._unload );
+
+
+
+/**
+ * jquery.layout.browserZoom 1.0
+ * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $
+ *
+ * Copyright (c) 2012 
+ *   Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ *
+ * @todo: Extend logic to handle other problematic zooming in browsers
+ * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event
+ */
+
+// tell Layout that the plugin is available
+$.layout.plugins.browserZoom = true;
+
+$.layout.defaults.browserZoomCheckInterval = 1000;
+$.layout.optionsMap.layout.push("browserZoomCheckInterval");
+
+/*
+ *	browserZoom methods
+ */
+$.layout.browserZoom = {
+
+	_init: function (inst) {
+		// abort if browser does not need this check
+		if ($.layout.browserZoom.ratio() !== false)
+			$.layout.browserZoom._setTimer(inst);
+	}
+
+,	_setTimer: function (inst) {
+		// abort if layout destroyed or browser does not need this check
+		if (inst.destroyed) return;
+		var o	= inst.options
+		,	s	= inst.state
+		//	don't need check if inst has parentLayout, but check occassionally in case parent destroyed!
+		//	MINIMUM 100ms interval, for performance
+		,	ms	= inst.hasParentLayout ?  5000 : Math.max( o.browserZoomCheckInterval, 100 )
+		;
+		// set the timer
+		setTimeout(function(){
+			if (inst.destroyed || !o.resizeWithWindow) return;
+			var d = $.layout.browserZoom.ratio();
+			if (d !== s.browserZoom) {
+				s.browserZoom = d;
+				inst.resizeAll();
+			}
+			// set a NEW timeout
+			$.layout.browserZoom._setTimer(inst);
+		}
+		,	ms );
+	}
+
+,	ratio: function () {
+		var w	= window
+		,	s	= screen
+		,	d	= document
+		,	dE	= d.documentElement || d.body
+		,	b	= $.layout.browser
+		,	v	= b.version
+		,	r, sW, cW
+		;
+		// we can ignore all browsers that fire window.resize event onZoom
+		if ((b.msie && v > 8)
+		||	!b.msie
+		) return false; // don't need to track zoom
+
+		if (s.deviceXDPI)
+			return calc(s.deviceXDPI, s.systemXDPI);
+		// everything below is just for future reference!
+		if (b.webkit && (r = d.body.getBoundingClientRect))
+			return calc((r.left - r.right), d.body.offsetWidth);
+		if (b.webkit && (sW = w.outerWidth))
+			return calc(sW, w.innerWidth);
+		if ((sW = s.width) && (cW = dE.clientWidth))
+			return calc(sW, cW);
+		return false; // no match, so cannot - or don't need to - track zoom
+
+		function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); }
+	}
+
+};
+// add initialization method to Layout's onLoad array of functions
+$.layout.onReady.push( $.layout.browserZoom._init );
+
+
+
+})( jQuery );
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/modernizr.custom.js b/site/docs/0.7.0-incubating/api/scala/lib/modernizr.custom.js
new file mode 100644
index 0000000..4688d63
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/modernizr.custom.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-inlinesvg
+ */
+;window.Modernizr=function(a,b,c){function u(a){i.cssText=a}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function w(a,b){return typeof a===b}function x(a,b){return!!~(""+a).indexOf(b)}function y(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:w(f,"function")?f.bind(d||b):f}return!1}var d="2.5.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l={svg:"http://www.w3.org/2000/svg"},m={},n={},o={},p=[],q=p.slice,r,s={}.hasOwnProperty,t;!w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==l.svg};for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r));return u(""),h=j=null,e._version=d,e}(this,this.document);
\ No newline at end of file
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/navigation-li-a.png b/site/docs/0.7.0-incubating/api/scala/lib/navigation-li-a.png
new file mode 100644
index 0000000..9b32288
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/navigation-li-a.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/navigation-li.png b/site/docs/0.7.0-incubating/api/scala/lib/navigation-li.png
new file mode 100644
index 0000000..fd0ad06
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/navigation-li.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/object.png b/site/docs/0.7.0-incubating/api/scala/lib/object.png
new file mode 100644
index 0000000..ad31279
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/object.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/object_big.png b/site/docs/0.7.0-incubating/api/scala/lib/object_big.png
new file mode 100644
index 0000000..67ffca7
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/object_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/object_diagram.png b/site/docs/0.7.0-incubating/api/scala/lib/object_diagram.png
new file mode 100644
index 0000000..6e9f2f7
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/object_diagram.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/object_to_class_big.png b/site/docs/0.7.0-incubating/api/scala/lib/object_to_class_big.png
new file mode 100644
index 0000000..7502942
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/object_to_class_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/object_to_trait_big.png b/site/docs/0.7.0-incubating/api/scala/lib/object_to_trait_big.png
new file mode 100644
index 0000000..c777bfc
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/object_to_trait_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/object_to_type_big.png b/site/docs/0.7.0-incubating/api/scala/lib/object_to_type_big.png
new file mode 100644
index 0000000..7502942
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/object_to_type_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/ownderbg2.gif b/site/docs/0.7.0-incubating/api/scala/lib/ownderbg2.gif
new file mode 100644
index 0000000..848dd59
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/ownderbg2.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/ownerbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/ownerbg.gif
new file mode 100644
index 0000000..34a0424
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/ownerbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/ownerbg2.gif b/site/docs/0.7.0-incubating/api/scala/lib/ownerbg2.gif
new file mode 100644
index 0000000..2ed33b0
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/ownerbg2.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/package.png b/site/docs/0.7.0-incubating/api/scala/lib/package.png
new file mode 100644
index 0000000..6ea17ac
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/package.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/package_big.png b/site/docs/0.7.0-incubating/api/scala/lib/package_big.png
new file mode 100644
index 0000000..529aa93
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/package_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/packagesbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/packagesbg.gif
new file mode 100644
index 0000000..00c3378
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/packagesbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/permalink.png b/site/docs/0.7.0-incubating/api/scala/lib/permalink.png
new file mode 100644
index 0000000..d54bc93
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/permalink.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/ref-index.css b/site/docs/0.7.0-incubating/api/scala/lib/ref-index.css
new file mode 100644
index 0000000..7d64b9c
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/ref-index.css
@@ -0,0 +1,30 @@
+body {
+	font-size: 10pt;
+	font-family: Arial, sans-serif;
+}
+
+a {
+	color:#315479;
+}
+
+.letters {
+  width:100%;
+  text-align:center;
+  margin:0.6em;
+  padding:0.1em;
+  border-bottom:1px solid gray;
+}
+
+.entry {
+  border-bottom: 1px solid lightgray;
+  padding: 5px 0 8px;
+}
+
+.name {
+	/* background-color:#E5E5E5; */
+}
+
+.occurrences {
+  margin-left: 1em;
+  margin-top: 5px;	
+}
\ No newline at end of file
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/remove.png b/site/docs/0.7.0-incubating/api/scala/lib/remove.png
new file mode 100644
index 0000000..4625f9d
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/remove.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/scheduler.js b/site/docs/0.7.0-incubating/api/scala/lib/scheduler.js
new file mode 100644
index 0000000..4417f5b
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/scheduler.js
@@ -0,0 +1,71 @@
+// © 2010 EPFL/LAMP
+// code by Gilles Dubochet
+
+function Scheduler() {
+    var scheduler = this;
+    var resolution = 0;
+    this.timeout = undefined;
+    this.queues = new Array(0); // an array of work pacakges indexed by index in the labels table.
+    this.labels = new Array(0); // an indexed array of labels indexed by priority. This should be short.
+    this.label = function(name, priority) {
+        this.name = name;
+        this.priority = priority;
+    }
+    this.work = function(fn, self, args) {
+        this.fn = fn;
+        this.self = self;
+        this.args = args;
+    }
+    this.addLabel = function(name, priority) {
+        var idx = 0;
+        while (idx < scheduler.queues.length && scheduler.labels[idx].priority <= priority) { idx = idx + 1; }
+        scheduler.labels.splice(idx, 0, new scheduler.label(name, priority));
+        scheduler.queues.splice(idx, 0, new Array(0));
+    }
+    this.clearLabel = function(name) {
+        var idx = 0;
+        while (idx < scheduler.queues.length && scheduler.labels[idx].name != name) { idx = idx + 1; }
+        if (idx < scheduler.queues.length && scheduler.labels[i].name == name) {
+            scheduler.labels.splice(idx, 1);
+            scheduler.queues.splice(idx, 1);
+        }
+    }
+    this.nextWork = function() {
+        var fn = undefined;
+        var idx = 0;
+        while (idx < scheduler.queues.length && scheduler.queues[idx].length == 0) { idx = idx + 1; }
+        if (idx < scheduler.queues.length && scheduler.queues[idx].length > 0) {
+            var fn = scheduler.queues[idx].shift();
+        }
+        return fn;
+    }
+    this.add = function(labelName, fn, self, args) {
+        var doWork = function() {
+            scheduler.timeout = setTimeout(function() {
+                var work = scheduler.nextWork();
+                if (work != undefined) {
+                    if (work.args == undefined) { work.args = new Array(0); }
+                    work.fn.apply(work.self, work.args);
+                    doWork();
+                }
+                else {
+                    scheduler.timeout = undefined;
+                }
+            }, resolution);
+        }
+        var idx = 0;
+        while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
+        if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
+            scheduler.queues[idx].push(new scheduler.work(fn, self, args));
+            if (scheduler.timeout == undefined) doWork();
+        }
+        else throw("queue for add is non existant");
+    }
+    this.clear = function(labelName) {
+        var idx = 0;
+        while (idx < scheduler.labels.length && scheduler.labels[idx].name != labelName) { idx = idx + 1; }
+        if (idx < scheduler.queues.length && scheduler.labels[idx].name == labelName) {
+            scheduler.queues[idx] = new Array();
+        }
+    }
+};
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/selected-implicits.png b/site/docs/0.7.0-incubating/api/scala/lib/selected-implicits.png
new file mode 100644
index 0000000..bc29efb
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/selected-implicits.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/selected-right-implicits.png b/site/docs/0.7.0-incubating/api/scala/lib/selected-right-implicits.png
new file mode 100644
index 0000000..8313f49
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/selected-right-implicits.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/selected-right.png b/site/docs/0.7.0-incubating/api/scala/lib/selected-right.png
new file mode 100644
index 0000000..04eda2f
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/selected-right.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/selected.png b/site/docs/0.7.0-incubating/api/scala/lib/selected.png
new file mode 100644
index 0000000..c897652
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/selected.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/selected2-right.png b/site/docs/0.7.0-incubating/api/scala/lib/selected2-right.png
new file mode 100644
index 0000000..bf984ef
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/selected2-right.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/selected2.png b/site/docs/0.7.0-incubating/api/scala/lib/selected2.png
new file mode 100644
index 0000000..a790bb1
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/selected2.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/signaturebg.gif b/site/docs/0.7.0-incubating/api/scala/lib/signaturebg.gif
new file mode 100644
index 0000000..b6ac441
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/signaturebg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/signaturebg2.gif b/site/docs/0.7.0-incubating/api/scala/lib/signaturebg2.gif
new file mode 100644
index 0000000..9aae5ba
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/signaturebg2.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/template.css b/site/docs/0.7.0-incubating/api/scala/lib/template.css
new file mode 100644
index 0000000..e84d7c1
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/template.css
@@ -0,0 +1,893 @@
+/* Reset */
+
+html, body, div, span, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, code, pre,
+del, dfn, em, img, q, dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend, input,
+table, caption, tbody, tfoot, thead, tr, th, td {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+table { border-collapse: separate; border-spacing: 0; }
+caption, th, td { text-align: left; font-weight: normal; }
+table, td, th { vertical-align: middle; }
+
+blockquote:before, blockquote:after, q:before, q:after { content: ""; }
+blockquote, q { quotes: none; }
+
+a img { border: none; }
+
+input { border-width: 0px; }
+
+/* Page */
+
+body {
+  font-family: Arial, sans-serif;
+  font-size: 10pt;
+}
+
+#footer {
+  font-size: 9pt;
+  text-align: center;
+  color: #858484;
+  bottom: 0;
+  width: 100%;
+  height: 20px;
+}
+
+a[href] {
+  text-decoration: underline;
+  color: #315479;
+}
+
+a[href]:hover {
+  text-decoration: none;
+}
+
+#types ol li > p {
+  margin-top: 5px;
+}
+
+#types ol li:last-child {
+  margin-bottom: 5px;
+}
+
+/*
+#definition {
+  padding: 6px 0 6px 6px;
+  min-height: 59px;
+  color: white;
+}
+*/
+
+#definition {
+  display: block-inline;
+  padding: 5px 0px;
+  height: 61px;
+}
+
+#definition > img {
+  float: left;
+  padding-right: 6px;
+  padding-left: 5px;
+}
+
+#definition > a > img {
+  float: left;
+  padding-right: 6px;
+  padding-left: 5px;
+}
+
+#definition p + h1 {
+  margin-top: 3px;
+}
+
+#definition > h1 {
+/*  padding: 12px 0 12px 6px;*/
+  color: white;
+  text-shadow: 3px black;
+  text-shadow: black 0px 2px 0px;
+  font-size: 24pt;
+  display: inline-block;
+  overflow: hidden;
+  margin-top: 10px;
+}
+
+#definition h1 > a {
+  color: #ffffff;
+  font-size: 24pt;
+  text-shadow: black 0px 2px 0px;
+/*  text-shadow: black 0px 0px 0px;*/
+text-decoration: none;
+}
+
+#definition #owner {
+  color: #ffffff;
+  margin-top: 4px;
+  font-size: 10pt;
+  overflow: hidden;
+}
+
+#definition #owner > a {
+  color: #ffffff;
+}
+
+#definition #owner > a:hover {
+  text-decoration: none;
+}
+
+#signature {
+  background-image:url('signaturebg2.gif');
+  background-color: #d7d7d7;
+  min-height: 18px;
+  background-repeat:repeat-x;
+  font-size: 11.5pt;
+/*  margin-bottom: 10px;*/
+  padding: 8px;
+}
+
+#signature > span.modifier_kind {
+  display: inline;
+  float: left;
+  text-align: left;
+  width: auto;
+  position: static;
+  text-shadow: 2px white;
+  text-shadow: white 0px 1px 0px;
+}
+
+#signature > span.symbol {
+  text-align: left;
+  display: inline;
+  padding-left: 0.7em;
+  text-shadow: 2px white;
+  text-shadow: white 0px 1px 0px;
+}
+
+/* Linear super types and known subclasses */
+.hiddenContent {
+  display: none;
+}
+
+.toggleContainer .toggle {
+  cursor: pointer;
+  padding-left: 15px;
+  background: url("arrow-right.png") no-repeat 0 3px transparent;
+}
+
+.toggleContainer .toggle.open {
+  background: url("arrow-down.png") no-repeat 0 3px transparent;
+}
+
+.toggleContainer .hiddenContent {
+  margin-top: 5px;
+}
+
+.value #definition {
+  background-color: #2C475C; /* blue */
+  background-image:url('defbg-blue.gif');
+  background-repeat:repeat-x;
+}
+
+.type #definition {
+  background-color: #316555; /* green */
+  background-image:url('defbg-green.gif');
+  background-repeat:repeat-x;
+}
+
+#template {
+  margin-bottom: 50px;
+}
+
+h3 {
+  color: white;
+  padding: 5px 10px;
+  font-size: 12pt;
+  font-weight: bold;
+  text-shadow: black 1px 1px 0px;
+}
+
+dl.attributes > dt {
+  display: block;
+  float: left;
+  font-style: italic;
+}
+
+dl.attributes > dt.implicit {
+  font-weight: bold;
+  color: darkgreen;
+}
+
+dl.attributes > dd {
+  display: block;
+  padding-left: 10em;
+  margin-bottom: 5px;
+  min-height: 15px;
+}
+
+#template .values > h3 {
+  background: #2C475C url("valuemembersbg.gif") repeat-x bottom left;  /* grayish blue */
+  height: 18px;
+}
+
+#values ol li:last-child {
+  margin-bottom: 5px;
+}
+
+#template .types > h3 {
+  background: #316555 url("typebg.gif") repeat-x bottom left;  /* green */
+  height: 18px;
+}
+
+#constructors > h3 {
+  background: #4f504f url("constructorsbg.gif") repeat-x bottom left; /* gray */
+  height: 18px;
+}
+
+#inheritedMembers > div.parent > h3 {
+  background: #dadada url("constructorsbg.gif") repeat-x bottom left; /* gray */
+  height: 17px;
+  font-style: italic;
+  font-size: 12pt;
+}
+
+#inheritedMembers > div.parent > h3 * {
+  color: white;
+}
+
+#inheritedMembers > div.conversion > h3 {
+  background: #dadada url("conversionbg.gif") repeat-x bottom left; /* gray */
+  height: 17px;
+  font-style: italic;
+  font-size: 12pt;
+}
+
+#inheritedMembers > div.conversion > h3 * {
+  color: white;
+}
+
+#groupedMembers > div.group > h3 {
+  background: #dadada url("typebg.gif") repeat-x bottom left; /* green */
+  height: 17px;
+  font-size: 12pt;
+}
+
+#groupedMembers > div.group > h3 * {
+  color: white;
+}
+
+
+/* Member cells */
+
+div.members > ol {
+  background-color: white;
+  list-style: none
+}
+
+div.members > ol > li {
+  display: block;
+  border-bottom: 1px solid gray;
+  padding: 5px 0 6px;
+  margin: 0 10px;
+  position: relative;
+}
+
+div.members > ol > li:last-child {
+  border: 0;
+  padding: 5px 0 5px;
+}
+
+/* Member signatures */
+
+#tooltip {
+  background: #EFD5B5;
+  border: 1px solid gray;
+  color: black;
+  display: none;
+  padding: 5px;
+  position: absolute;
+}
+
+.signature {
+  font-family: monospace;
+  font-size: 10pt;
+  line-height: 18px;
+  clear: both;
+  display: block;
+  text-shadow: 2px white;
+  text-shadow: white 0px 1px 0px;
+}
+
+.signature .modifier_kind {
+  position: absolute;
+  text-align: right;
+  width: 14em;
+}
+
+.signature > a > .symbol > .name {
+  text-decoration: underline;
+}
+
+.signature > a:hover > .symbol > .name {
+  text-decoration: none;
+}
+
+.signature > a {
+  text-decoration: none;
+}
+
+.signature > .symbol {
+  display: block;
+  padding-left: 14.7em;
+}
+
+.signature .name {
+  display: inline-block;
+  font-weight: bold;
+}
+
+.signature .symbol > .implicit {
+  display: inline-block;
+  font-weight: bold;
+  text-decoration: underline;
+  color: darkgreen;
+}
+
+.signature .symbol .shadowed {
+  color: darkseagreen;
+}
+
+.signature .symbol .params > .implicit {
+  font-style: italic;
+}
+
+.signature .symbol .deprecated {
+  text-decoration: line-through;
+}
+
+.signature .symbol .params .default {
+  font-style: italic;
+}
+
+#template .signature.closed {
+  background: url("arrow-right.png") no-repeat 0 5px transparent;
+  cursor: pointer;
+}
+
+#template .signature.opened {
+  background: url("arrow-down.png") no-repeat 0 5px transparent;
+  cursor: pointer;
+}
+
+#template .values .signature .name {
+  color: darkblue;
+}
+
+#template .types .signature .name {
+  color: darkgreen;
+}
+
+.full-signature-usecase h4 span {
+  font-size: 10pt;
+}
+
+.full-signature-usecase > #signature {
+  padding-top: 0px;
+}
+
+#template .full-signature-usecase > .signature.closed {
+  background: none;
+}
+
+#template .full-signature-usecase > .signature.opened {
+  background: none;
+}
+
+.full-signature-block {
+  padding: 5px 0 0;
+  border-top: 1px solid #EBEBEB;
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+
+#definition .morelinks {
+  text-align: right;
+  position: absolute;
+  top: 40px;
+  right: 10px;
+  width: 450px;
+}
+
+#definition .morelinks a {
+  color: #EBEBEB;
+}
+
+#template .members li .permalink {
+  position: absolute;
+  top: 5px;
+  right: 5px;
+}
+
+#definition .permalink {
+  position: absolute;
+  top: 10px;
+  right: 15px;
+}
+
+#definition .permalink a {
+  color: #EBEBEB;
+}
+
+#template .members li .permalink,
+#definition .permalink a {
+  display: none;
+}
+
+#template .members li:hover .permalink,
+#definition:hover .permalink a {
+  display: block;
+}
+
+#template .members li .permalink a,
+#definition .permalink a {
+  text-decoration: none;
+  font-weight: bold;
+}
+
+/* Comments text formating */
+
+.cmt {}
+
+.cmt p {
+  margin: 0.7em 0;
+}
+
+.cmt p:first-child {
+  margin-top: 0;
+}
+
+.cmt p:last-child {
+  margin-bottom: 0;
+}
+
+.cmt h3,
+.cmt h4,
+.cmt h5,
+.cmt h6 {
+  margin-bottom: 0.7em;
+  margin-top: 1.4em;
+  display: block;
+  text-align: left;
+  font-weight: bold;
+}
+
+.cmt h3 {
+  font-size: 14pt;
+}
+
+.cmt h4 {
+  font-size: 13pt;
+}
+
+.cmt h5 {
+  font-size: 12pt;
+}
+
+.cmt h6 {
+  font-size: 11pt;
+}
+
+.cmt pre {
+  padding: 5px;
+  border: 1px solid #ddd;
+  background-color: #eee;
+  margin: 5px 0;
+  display: block;
+  font-family: monospace;
+}
+
+.cmt pre span.ano {
+  color: blue;
+}
+
+.cmt pre span.cmt {
+  color: green;
+}
+
+.cmt pre span.kw {
+  font-weight: bold;
+}
+
+.cmt pre span.lit {
+  color: #c71585;
+}
+
+.cmt pre span.num {
+  color: #1e90ff; /* dodgerblue */
+}
+
+.cmt pre span.std {
+  color: #008080; /* teal */
+}
+
+.cmt ul {
+  display: block;
+  list-style: circle;
+  padding-left: 20px;
+}
+
+.cmt ol {
+  display: block;
+  padding-left:20px;
+}
+
+.cmt ol.decimal {
+  list-style: decimal;
+}
+
+.cmt ol.lowerAlpha {
+  list-style: lower-alpha;
+}
+
+.cmt ol.upperAlpha {
+  list-style: upper-alpha;
+}
+
+.cmt ol.lowerRoman {
+  list-style: lower-roman;
+}
+
+.cmt ol.upperRoman {
+  list-style: upper-roman;
+}
+
+.cmt li {
+  display: list-item;
+}
+
+.cmt code {
+  font-family: monospace;
+}
+
+.cmt a {
+  font-style: bold;
+}
+
+.cmt em, .cmt i {
+  font-style: italic;
+}
+
+.cmt strong, .cmt b {
+  font-weight: bold;
+}
+
+/* Comments structured layout */
+
+.group > div.comment {
+  padding-top: 5px;
+  padding-bottom: 5px;
+  padding-right: 5px;
+  padding-left: 5px;
+  border: 1px solid #ddd;
+  background-color: #eeeee;
+  margin-top:5px;
+  margin-bottom:5px;
+  margin-right:5px;
+  margin-left:5px;
+  display: block;
+}
+
+p.comment {
+  display: block;
+  margin-left: 14.7em;
+  margin-top: 5px;
+}
+
+.shortcomment {
+  display: block;
+  margin: 5px 10px;
+}
+
+div.fullcommenttop {
+  padding: 10px 10px;
+  background-image:url('fullcommenttopbg.gif');
+  background-repeat:repeat-x;
+}
+
+div.fullcomment {
+  margin: 5px 10px;
+}
+
+#template div.fullcommenttop,
+#template div.fullcomment {
+  display:none;
+  margin: 5px 0 0 14.7em;
+}
+
+#template .shortcomment {
+  margin: 5px 0 0 14.7em;
+  padding: 0;
+}
+
+div.fullcomment .block {
+  padding: 5px 0 0;
+  border-top: 1px solid #EBEBEB;
+  margin-top: 5px;
+  overflow: hidden;
+}
+
+div.fullcommenttop .block {
+  padding: 5px 0 0;
+  border-top: 1px solid #EBEBEB;
+  margin-top: 5px;
+  margin-bottom: 5px
+}
+
+div.fullcomment div.block ol li p,
+div.fullcomment div.block ol li {
+  display:inline
+}
+
+div.fullcomment .block > h5 {
+  font-style: italic;
+  font-weight: normal;
+  display: inline-block;
+}
+
+div.fullcomment .comment {
+  margin: 5px 0 10px;
+}
+
+div.fullcommenttop .comment:last-child,
+div.fullcomment .comment:last-child {
+  margin-bottom: 0;
+}
+
+div.fullcommenttop dl.paramcmts {
+  margin-bottom: 0.8em;
+  padding-bottom: 0.8em;
+}
+
+div.fullcommenttop dl.paramcmts > dt,
+div.fullcomment dl.paramcmts > dt {
+  display: block;
+  float: left;
+  font-weight: bold;
+  min-width: 70px;
+}
+
+div.fullcommenttop dl.paramcmts > dd,
+div.fullcomment dl.paramcmts > dd {
+  display: block;
+  padding-left: 10px;
+  margin-bottom: 5px;
+  margin-left: 70px;
+  min-height: 15px;
+}
+
+/* Members filter tool */
+
+#textfilter {
+  position: relative;
+  display: block;
+    height: 20px;
+  margin-bottom: 5px;
+}
+
+#textfilter > .pre {
+    display: block;
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 23px;
+    width: 21px;
+    background: url("filter_box_left.png");
+}
+
+#textfilter > .input {
+  display: block;
+    position: absolute;
+    top: 0;
+    right: 20px;
+    left: 20px;
+}
+
+#textfilter > .input > input {
+  height: 20px;
+  padding: 1px;
+  font-weight: bold;
+  color: #000000;
+        background: #ffffff url("filterboxbarbg.png") repeat-x top left;
+        width: 100%;
+}
+
+#textfilter > .post {
+    display: block;
+    position: absolute;
+    top: 0;
+    right: 0;
+    height: 23px;
+    width: 21px;
+    background: url("filter_box_right.png");
+}
+
+#mbrsel {
+  padding: 5px 10px;
+  background-color: #ededee; /* light gray */
+  background-image:url('filterboxbg.gif');
+  background-repeat:repeat-x;
+  font-size: 9.5pt;
+  display: block;
+  margin-top: 1em;
+/*  margin-bottom: 1em; */
+}
+
+#mbrsel > div {
+  margin-bottom: 5px;
+}
+
+#mbrsel > div:last-child {
+  margin-bottom: 0;
+}
+
+#mbrsel > div > span.filtertype {
+  padding: 4px;
+  margin-right: 5px;
+  float: left;
+  display: inline-block;
+  color: #000000;
+  font-weight: bold;
+  text-shadow: white 0px 1px 0px;
+  width: 4.5em;
+}
+
+#mbrsel > div > ol {
+  display: inline-block;
+}
+
+#mbrsel > div > a {
+  position:relative;
+  top: -8px;
+  font-size: 11px;
+  text-shadow: #ffffff 0 1px 0;
+}
+
+#mbrsel > div > ol#linearization {
+  display: table;
+  margin-left: 70px;
+}
+
+#mbrsel > div > ol#linearization > li.in {
+  text-decoration: none;
+  float: left;
+  padding-right: 10px;
+  margin-right: 5px;
+  background: url(selected-right.png) no-repeat;
+  background-position: right 0px;
+}
+
+#mbrsel > div > ol#linearization > li.in > span{
+  color: #404040;
+  float: left;
+  padding: 1px 0 1px 10px;
+  background: url(selected.png) no-repeat;
+  background-position: 0px 0px;
+  text-shadow: #ffffff 0 1px 0;
+}
+
+#mbrsel > div > ol#implicits {
+  display: table;
+  margin-left: 70px;
+}
+
+#mbrsel > div > ol#implicits > li.in {
+  text-decoration: none;
+  float: left;
+  padding-right: 10px;
+  margin-right: 5px;
+  background: url(selected-right-implicits.png) no-repeat;
+  background-position: right 0px;
+}
+
+#mbrsel > div > ol#implicits > li.in > span{
+  color: #404040;
+  float: left;
+  padding: 1px 0 1px 10px;
+  background: url(selected-implicits.png) no-repeat;
+  background-position: 0px 0px;
+  text-shadow: #ffffff 0 1px 0;
+}
+
+#mbrsel > div > ol > li {
+/*  padding: 3px 10px;*/
+  line-height: 16pt;
+  display: inline-block;
+  cursor: pointer;
+}
+
+#mbrsel > div > ol > li.in {
+  text-decoration: none;
+  float: left;
+  padding-right: 10px;
+  margin-right: 5px;
+  background: url(selected-right.png) no-repeat;
+  background-position: right 0px;
+}
+
+#mbrsel > div > ol > li.in > span{
+  color: #404040;
+  float: left;
+  padding: 1px 0 1px 10px;
+  background: url(selected.png) no-repeat;
+  background-position: 0px 0px;
+  text-shadow: #ffffff 0 1px 0;
+}
+
+#mbrsel > div > ol > li.out {
+  text-decoration: none;
+  float: left;
+  padding-right: 10px;
+  margin-right: 5px;
+}
+
+#mbrsel > div > ol > li.out > span{
+  color: #747474;
+/*  background-color: #999; */
+  float: left;
+  padding: 1px 0 1px 10px;
+/*  background: url(unselected.png) no-repeat;*/
+  background-position: 0px -1px;
+  text-shadow: #ffffff 0 1px 0;
+}
+/*
+#mbrsel .hideall {
+  color: #4C4C4C;
+  line-height: 16px;
+  font-weight: bold;
+}
+
+#mbrsel .hideall span {
+  color: #4C4C4C;
+  font-weight: bold;
+}
+
+#mbrsel .showall {
+  color: #4C4C4C;
+  line-height: 16px;
+  font-weight: bold;
+}
+
+#mbrsel .showall span {
+  color: #4C4C4C;
+  font-weight: bold;
+}*/
+
+.badge {
+  display: inline-block;
+  padding: 2px 4px;
+  font-size: 11.844px;
+  font-weight: bold;
+  line-height: 14px;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  white-space: nowrap;
+  vertical-align: baseline;
+  background-color: #999999;
+  padding-right: 9px;
+  padding-left: 9px;
+  -webkit-border-radius: 9px;
+     -moz-border-radius: 9px;
+          border-radius: 9px;
+}
+
+.badge-red {
+  background-color: #b94a48;
+}
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/template.js b/site/docs/0.7.0-incubating/api/scala/lib/template.js
new file mode 100644
index 0000000..798a2d4
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/template.js
@@ -0,0 +1,500 @@
+// © 2009–2010 EPFL/LAMP
+// code by Gilles Dubochet with contributions by Pedro Furlanetto and Marcin Kubala
+
+$(document).ready(function(){
+
+    var controls = {
+        visibility: {
+            publicOnly: $("#visbl").find("> ol > li.public"),
+            all: $("#visbl").find("> ol > li.all")
+        }
+    };
+
+    // Escapes special characters and returns a valid jQuery selector
+    function escapeJquery(str){
+        return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=<>\|])/g, '\\$1');
+    }
+
+    function toggleVisibilityFilter(ctrlToEnable, ctrToDisable) {
+        if (ctrlToEnable.hasClass("out")) {
+            ctrlToEnable.removeClass("out").addClass("in");
+            ctrToDisable.removeClass("in").addClass("out");
+            filter();
+        }
+    }
+
+    controls.visibility.publicOnly.click(function () {
+        toggleVisibilityFilter(controls.visibility.publicOnly, controls.visibility.all);
+    });
+
+    controls.visibility.all.click(function () {
+        toggleVisibilityFilter(controls.visibility.all, controls.visibility.publicOnly);
+    });
+
+    function exposeMember(jqElem) {
+        var jqElemParent = jqElem.parent(),
+            parentName = jqElemParent.attr("name"),
+            linearizationName = /^([^#]*)(#.*)?$/gi.exec(parentName)[1];
+
+        // switch visibility filter if necessary
+        if (jqElemParent.attr("visbl") == "prt") {
+            toggleVisibilityFilter(controls.visibility.all, controls.visibility.publicOnly);
+        }
+
+        // toggle appropriate linearization buttons
+        if (linearizationName) {
+            $("#linearization li.out[name='" + linearizationName + "']").removeClass("out").addClass("in");
+        }
+
+        filter();
+        window.scrollTo(0, 0);
+        jqElemParent.effect("highlight", {color: "#FFCC85"}, 3000);
+        $('html,body').animate({scrollTop: jqElemParent.offset().top}, 1000);
+    }
+
+    var isHiddenClass = function (name) {
+        return name == 'scala.Any' ||
+               name == 'scala.AnyRef';
+    };
+
+    var isHidden = function (elem) {
+        return $(elem).attr("data-hidden") == 'true';
+    };
+
+    $("#linearization li:gt(0)").filter(function(){
+        return isHiddenClass($(this).attr("name"));
+    }).removeClass("in").addClass("out");
+
+    $("#implicits li").filter(function(){
+        return isHidden(this);
+    }).removeClass("in").addClass("out");
+
+    // Pre-filter members
+    filter();
+
+    // Member filter box
+    var input = $("#textfilter input");
+    input.bind("keyup", function(event) {
+
+        switch ( event.keyCode ) {
+
+        case 27: // escape key
+            input.val("");
+            filter(true);
+            break;
+
+        case 38: // up
+            input.val("");
+            filter(false);
+            window.scrollTo(0, $("body").offset().top);
+            input.focus();
+            break;
+
+        case 33: //page up
+            input.val("");
+            filter(false);
+            break;
+
+        case 34: //page down
+            input.val("");
+            filter(false);
+            break;
+
+        default:
+            window.scrollTo(0, $("#mbrsel").offset().top);
+            filter(true);
+            break;
+
+        }
+    });
+    input.focus(function(event) {
+        input.select();
+    });
+    $("#textfilter > .post").click(function() {
+        $("#textfilter input").attr("value", "");
+        filter();
+    });
+    $(document).keydown(function(event) {
+
+        if (event.keyCode == 9) { // tab
+            $("#index-input", window.parent.document).focus();
+            input.attr("value", "");
+            return false;
+        }
+    });
+
+    $("#linearization li").click(function(){
+        if ($(this).hasClass("in")) {
+            $(this).removeClass("in");
+            $(this).addClass("out");
+        }
+        else if ($(this).hasClass("out")) {
+            $(this).removeClass("out");
+            $(this).addClass("in");
+        }
+        filter();
+    });
+
+    $("#implicits li").click(function(){
+        if ($(this).hasClass("in")) {
+            $(this).removeClass("in");
+            $(this).addClass("out");
+        }
+        else if ($(this).hasClass("out")) {
+            $(this).removeClass("out");
+            $(this).addClass("in");
+        }
+        filter();
+    });
+
+    $("#mbrsel > div[id=ancestors] > ol > li.hideall").click(function() {
+        $("#linearization li.in").removeClass("in").addClass("out");
+        $("#linearization li:first").removeClass("out").addClass("in");
+        $("#implicits li.in").removeClass("in").addClass("out");
+
+        if ($(this).hasClass("out") && $("#mbrsel > div[id=ancestors] > ol > li.showall").hasClass("in")) {
+            $(this).removeClass("out").addClass("in");
+            $("#mbrsel > div[id=ancestors] > ol > li.showall").removeClass("in").addClass("out");
+        }
+
+        filter();
+    })
+    $("#mbrsel > div[id=ancestors] > ol > li.showall").click(function() {
+        var filteredLinearization =
+            $("#linearization li.out").filter(function() {
+                return ! isHiddenClass($(this).attr("name"));
+            });
+        filteredLinearization.removeClass("out").addClass("in");
+
+        var filteredImplicits =
+        $("#implicits li.out").filter(function() {
+            return ! isHidden(this);
+        });
+        filteredImplicits.removeClass("out").addClass("in");
+
+        if ($(this).hasClass("out") && $("#mbrsel > div[id=ancestors] > ol > li.hideall").hasClass("in")) {
+            $(this).removeClass("out").addClass("in");
+            $("#mbrsel > div[id=ancestors] > ol > li.hideall").removeClass("in").addClass("out");
+        }
+
+        filter();
+    });
+    $("#order > ol > li.alpha").click(function() {
+        if ($(this).hasClass("out")) {
+            orderAlpha();
+        }
+    })
+    $("#order > ol > li.inherit").click(function() {
+        if ($(this).hasClass("out")) {
+            orderInherit();
+        }
+    });
+    $("#order > ol > li.group").click(function() {
+        if ($(this).hasClass("out")) {
+            orderGroup();
+        }
+    });
+    $("#groupedMembers").hide();
+
+    initInherit();
+
+    // Create tooltips
+    $(".extype").add(".defval").tooltip({
+        tip: "#tooltip",
+        position: "top center",
+        predelay: 500,
+        onBeforeShow: function(ev) {
+            $(this.getTip()).text(this.getTrigger().attr("name"));
+        }
+    });
+
+    /* Add toggle arrows */
+    //var docAllSigs = $("#template li").has(".fullcomment").find(".signature");
+    // trying to speed things up a little bit
+    var docAllSigs = $("#template li[fullComment=yes] .signature");
+
+    function commentToggleFct(signature){
+        var parent = signature.parent();
+        var shortComment = $(".shortcomment", parent);
+        var fullComment = $(".fullcomment", parent);
+        var vis = $(":visible", fullComment);
+        signature.toggleClass("closed").toggleClass("opened");
+        if (vis.length > 0) {
+            shortComment.slideDown(100);
+            fullComment.slideUp(100);
+        }
+        else {
+            shortComment.slideUp(100);
+            fullComment.slideDown(100);
+        }
+    };
+    docAllSigs.addClass("closed");
+    docAllSigs.click(function() {
+        commentToggleFct($(this));
+    });
+
+    /* Linear super types and known subclasses */
+    function toggleShowContentFct(e){
+      e.toggleClass("open");
+      var content = $(".hiddenContent", e.parent().get(0));
+      if (content.is(':visible')) {
+        content.slideUp(100);
+      }
+      else {
+        content.slideDown(100);
+      }
+    };
+
+    $(".toggle:not(.diagram-link)").click(function() {
+      toggleShowContentFct($(this));
+    });
+
+    // Set parent window title
+    windowTitle();
+
+    if ($("#order > ol > li.group").length == 1) { orderGroup(); };
+
+    function findElementByHash(locationHash) {
+        var temp = locationHash.replace('#', '');
+        var memberSelector = '#' + escapeJquery(temp);
+        return $(memberSelector);
+    }
+
+    // highlight and jump to selected member
+    if (window.location.hash) {
+        var jqElem = findElementByHash(window.location.hash);
+        if (jqElem.length > 0) {
+            exposeMember(jqElem);
+        }
+    }
+});
+
+function orderAlpha() {
+    $("#order > ol > li.alpha").removeClass("out").addClass("in");
+    $("#order > ol > li.inherit").removeClass("in").addClass("out");
+    $("#order > ol > li.group").removeClass("in").addClass("out");
+    $("#template > div.parent").hide();
+    $("#template > div.conversion").hide();
+    $("#mbrsel > div[id=ancestors]").show();
+    filter();
+};
+
+function orderInherit() {
+    $("#order > ol > li.inherit").removeClass("out").addClass("in");
+    $("#order > ol > li.alpha").removeClass("in").addClass("out");
+    $("#order > ol > li.group").removeClass("in").addClass("out");
+    $("#template > div.parent").show();
+    $("#template > div.conversion").show();
+    $("#mbrsel > div[id=ancestors]").hide();
+    filter();
+};
+
+function orderGroup() {
+    $("#order > ol > li.group").removeClass("out").addClass("in");
+    $("#order > ol > li.alpha").removeClass("in").addClass("out");
+    $("#order > ol > li.inherit").removeClass("in").addClass("out");
+    $("#template > div.parent").hide();
+    $("#template > div.conversion").hide();
+    $("#mbrsel > div[id=ancestors]").show();
+    filter();
+};
+
+/** Prepares the DOM for inheritance-based display. To do so it will:
+  *  - hide all statically-generated parents headings;
+  *  - copy all members from the value and type members lists (flat members) to corresponding lists nested below the
+  *    parent headings (inheritance-grouped members);
+  *  - initialises a control variable used by the filter method to control whether filtering happens on flat members
+  *    or on inheritance-grouped members. */
+function initInherit() {
+    // inheritParents is a map from fully-qualified names to the DOM node of parent headings.
+    var inheritParents = new Object();
+    var groupParents = new Object();
+    $("#inheritedMembers > div.parent").each(function(){
+        inheritParents[$(this).attr("name")] = $(this);
+    });
+    $("#inheritedMembers > div.conversion").each(function(){
+        inheritParents[$(this).attr("name")] = $(this);
+    });
+    $("#groupedMembers > div.group").each(function(){
+        groupParents[$(this).attr("name")] = $(this);
+    });
+
+    $("#types > ol > li").each(function(){
+        var mbr = $(this);
+        this.mbrText = mbr.find("> .fullcomment .cmt").text();
+        var qualName = mbr.attr("name");
+        var owner = qualName.slice(0, qualName.indexOf("#"));
+        var name = qualName.slice(qualName.indexOf("#") + 1);
+        var inheritParent = inheritParents[owner];
+        if (inheritParent != undefined) {
+            var types = $("> .types > ol", inheritParent);
+            if (types.length == 0) {
+                inheritParent.append("<div class='types members'><h3>Type Members</h3><ol></ol></div>");
+                types = $("> .types > ol", inheritParent);
+            }
+            var clone = mbr.clone();
+            clone[0].mbrText = this.mbrText;
+            types.append(clone);
+        }
+        var group = mbr.attr("group")
+        var groupParent = groupParents[group];
+        if (groupParent != undefined) {
+            var types = $("> .types > ol", groupParent);
+            if (types.length == 0) {
+                groupParent.append("<div class='types members'><ol></ol></div>");
+                types = $("> .types > ol", groupParent);
+            }
+            var clone = mbr.clone();
+            clone[0].mbrText = this.mbrText;
+            types.append(clone);
+        }
+    });
+
+    $("#values > ol > li").each(function(){
+        var mbr = $(this);
+        this.mbrText = mbr.find("> .fullcomment .cmt").text();
+        var qualName = mbr.attr("name");
+        var owner = qualName.slice(0, qualName.indexOf("#"));
+        var name = qualName.slice(qualName.indexOf("#") + 1);
+        var inheritParent = inheritParents[owner];
+        if (inheritParent != undefined) {
+            var values = $("> .values > ol", inheritParent);
+            if (values.length == 0) {
+                inheritParent.append("<div class='values members'><h3>Value Members</h3><ol></ol></div>");
+                values = $("> .values > ol", inheritParent);
+            }
+            var clone = mbr.clone();
+            clone[0].mbrText = this.mbrText;
+            values.append(clone);
+        }
+        var group = mbr.attr("group")
+        var groupParent = groupParents[group];
+        if (groupParent != undefined) {
+            var values = $("> .values > ol", groupParent);
+            if (values.length == 0) {
+                groupParent.append("<div class='values members'><ol></ol></div>");
+                values = $("> .values > ol", groupParent);
+            }
+            var clone = mbr.clone();
+            clone[0].mbrText = this.mbrText;
+            values.append(clone);
+        }
+    });
+    $("#inheritedMembers > div.parent").each(function() {
+        if ($("> div.members", this).length == 0) { $(this).remove(); };
+    });
+    $("#inheritedMembers > div.conversion").each(function() {
+        if ($("> div.members", this).length == 0) { $(this).remove(); };
+    });
+    $("#groupedMembers > div.group").each(function() {
+        if ($("> div.members", this).length == 0) { $(this).remove(); };
+    });
+};
+
+/* filter used to take boolean scrollToMember */
+function filter() {
+    var query = $.trim($("#textfilter input").val()).toLowerCase();
+    query = query.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&").replace(/\s+/g, "|");
+    var queryRegExp = new RegExp(query, "i");
+    var privateMembersHidden = $("#visbl > ol > li.public").hasClass("in");
+    var orderingAlphabetic = $("#order > ol > li.alpha").hasClass("in");
+    var orderingInheritance = $("#order > ol > li.inherit").hasClass("in");
+    var orderingGroups = $("#order > ol > li.group").hasClass("in");
+    var hiddenSuperclassElementsLinearization = orderingInheritance ? $("#linearization > li:gt(0)") : $("#linearization > li.out");
+    var hiddenSuperclassesLinearization = hiddenSuperclassElementsLinearization.map(function() {
+      return $(this).attr("name");
+    }).get();
+    var hiddenSuperclassElementsImplicits = orderingInheritance ? $("#implicits > li") : $("#implicits > li.out");
+    var hiddenSuperclassesImplicits = hiddenSuperclassElementsImplicits.map(function() {
+      return $(this).attr("name");
+    }).get();
+
+    var hideInheritedMembers;
+
+    if (orderingAlphabetic) {
+      $("#allMembers").show();
+      $("#inheritedMembers").hide();
+      $("#groupedMembers").hide();
+      hideInheritedMembers = true;
+      $("#allMembers > .members").each(filterFunc);
+    } else if (orderingGroups) {
+      $("#groupedMembers").show();
+      $("#inheritedMembers").hide();
+      $("#allMembers").hide();
+      hideInheritedMembers = true;
+      $("#groupedMembers  > .group > .members").each(filterFunc);
+      $("#groupedMembers  > div.group").each(function() {
+        $(this).show();
+        if ($("> div.members", this).not(":hidden").length == 0) {
+            $(this).hide();
+        } else {
+            $(this).show();
+        }
+      });
+    } else if (orderingInheritance) {
+      $("#inheritedMembers").show();
+      $("#groupedMembers").hide();
+      $("#allMembers").hide();
+      hideInheritedMembers = false;
+      $("#inheritedMembers > .parent > .members").each(filterFunc);
+      $("#inheritedMembers > .conversion > .members").each(filterFunc);
+    }
+
+
+    function filterFunc() {
+      var membersVisible = false;
+      var members = $(this);
+      members.find("> ol > li").each(function() {
+        var mbr = $(this);
+        if (privateMembersHidden && mbr.attr("visbl") == "prt") {
+          mbr.hide();
+          return;
+        }
+        var name = mbr.attr("name");
+        // Owner filtering must not happen in "inherited from" member lists
+        if (hideInheritedMembers) {
+          var ownerIndex = name.indexOf("#");
+          if (ownerIndex < 0) {
+            ownerIndex = name.lastIndexOf(".");
+          }
+          var owner = name.slice(0, ownerIndex);
+          for (var i = 0; i < hiddenSuperclassesLinearization.length; i++) {
+            if (hiddenSuperclassesLinearization[i] == owner) {
+              mbr.hide();
+              return;
+            }
+          };
+          for (var i = 0; i < hiddenSuperclassesImplicits.length; i++) {
+            if (hiddenSuperclassesImplicits[i] == owner) {
+              mbr.hide();
+              return;
+            }
+          };
+        }
+        if (query && !(queryRegExp.test(name) || queryRegExp.test(this.mbrText))) {
+          mbr.hide();
+          return;
+        }
+        mbr.show();
+        membersVisible = true;
+      });
+
+      if (membersVisible)
+        members.show();
+      else
+        members.hide();
+    };
+
+    return false;
+};
+
+function windowTitle()
+{
+    try {
+        parent.document.title=document.title;
+    }
+    catch(e) {
+      // Chrome doesn't allow settings the parent's title when
+      // used on the local file system.
+    }
+};
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/tools.tooltip.js b/site/docs/0.7.0-incubating/api/scala/lib/tools.tooltip.js
new file mode 100644
index 0000000..0af34ec
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/tools.tooltip.js
@@ -0,0 +1,14 @@
+/*
+ * tools.tooltip 1.1.3 - Tooltips done right.
+ * 
+ * Copyright (c) 2009 Tero Piirainen
+ * http://flowplayer.org/tools/tooltip.html
+ *
+ * Dual licensed under MIT and GPL 2+ licenses
+ * http://www.opensource.org/licenses
+ *
+ * Launch  : November 2008
+ * Date: ${date}
+ * Revision: ${revision} 
+ */
+(function(c){var d=[];c.tools=c.tools||{};c.tools.tooltip={version:"1.1.3",conf:{effect:"toggle",fadeOutSpeed:"fast",tip:null,predelay:0,delay:30,opacity:1,lazy:undefined,position:["top","center"],offset:[0,0],cancelDefault:true,relative:false,oneInstance:true,events:{def:"mouseover,mouseout",input:"focus,blur",widget:"focus mouseover,blur mouseout",tooltip:"mouseover,mouseout"},api:false},addEffect:function(e,g,f){b[e]=[g,f]}};var b={toggle:[function(e){var f=this.getConf(),g=this.getTip(),h=f.opacity;if(h<1){g.css({opacity:h})}g.show();e.call()},function(e){this.getTip().hide();e.call()}],fade:[function(e){this.getTip().fadeIn(this.getConf().fadeInSpeed,e)},function(e){this.getTip().fadeOut(this.getConf().fadeOutSpeed,e)}]};function a(f,g){var p=this,k=c(this);f.data("tooltip",p);var l=f.next();if(g.tip){l=c(g.tip);if(l.length>1){l=f.nextAll(g.tip).eq(0);if(!l.length){l=f.parent().nextAll(g.tip).eq(0)}}}function o(u){var t=g.relative?f.position().top:f.offset().top,s=g.relative?f.position().left:f.offset().left,v=g.position[0];t-=l.outerHeight()-g.offset[0];s+=f.outerWidth()+g.offset[1];var q=l.outerHeight()+f.outerHeight();if(v=="center"){t+=q/2}if(v=="bottom"){t+=q}v=g.position[1];var r=l.outerWidth()+f.outerWidth();if(v=="center"){s-=r/2}if(v=="left"){s-=r}return{top:t,left:s}}var i=f.is(":input"),e=i&&f.is(":checkbox, :radio, select, :button"),h=f.attr("type"),n=g.events[h]||g.events[i?(e?"widget":"input"):"def"];n=n.split(/,\s*/);if(n.length!=2){throw"Tooltip: bad events configuration for "+h}f.bind(n[0],function(r){if(g.oneInstance){c.each(d,function(){this.hide()})}var q=l.data("trigger");if(q&&q[0]!=this){l.hide().stop(true,true)}r.target=this;p.show(r);n=g.events.tooltip.split(/,\s*/);l.bind(n[0],function(){p.show(r)});if(n[1]){l.bind(n[1],function(){p.hide(r)})}});f.bind(n[1],function(q){p.hide(q)});if(!c.browser.msie&&!i&&!g.predelay){f.mousemove(function(){if(!p.isShown()){f.triggerHandler("mouseover")}})}if(g.opacity<1){l.css("opacity",g.opacity)}var m=0,j=f.attr("title");if(j&&g.cancelDefault){f.removeAttr("title");f.data("title",j)}c.extend(p,{show:function(r){if(r){f=c(r.target)}clearTimeout(l.data("timer"));if(l.is(":animated")||l.is(":visible")){return p}function q(){l.data("trigger",f);var t=o(r);if(g.tip&&j){l.html(f.data("title"))}r=r||c.Event();r.type="onBeforeShow";k.trigger(r,[t]);if(r.isDefaultPrevented()){return p}t=o(r);l.css({position:"absolute",top:t.top,left:t.left});var s=b[g.effect];if(!s){throw'Nonexistent effect "'+g.effect+'"'}s[0].call(p,function(){r.type="onShow";k.trigger(r)})}if(g.predelay){clearTimeout(m);m=setTimeout(q,g.predelay)}else{q()}return p},hide:function(r){clearTimeout(l.data("timer"));clearTimeout(m);if(!l.is(":visible")){return}function q(){r=r||c.Event();r.type="onBeforeHide";k.trigger(r);if(r.isDefaultPrevented()){return}b[g.effect][1].call(p,function(){r.type="onHide";k.trigger(r)})}if(g.delay&&r){l.data("timer",setTimeout(q,g.delay))}else{q()}return p},isShown:function(){return l.is(":visible, :animated")},getConf:function(){return g},getTip:function(){return l},getTrigger:function(){return f},bind:function(q,r){k.bind(q,r);return p},onHide:function(q){return this.bind("onHide",q)},onBeforeShow:function(q){return this.bind("onBeforeShow",q)},onShow:function(q){return this.bind("onShow",q)},onBeforeHide:function(q){return this.bind("onBeforeHide",q)},unbind:function(q){k.unbind(q);return p}});c.each(g,function(q,r){if(c.isFunction(r)){p.bind(q,r)}})}c.prototype.tooltip=function(e){var f=this.eq(typeof e=="number"?e:0).data("tooltip");if(f){return f}var g=c.extend(true,{},c.tools.tooltip.conf);if(c.isFunction(e)){e={onBeforeShow:e}}else{if(typeof e=="string"){e={tip:e}}}e=c.extend(true,g,e);if(typeof e.position=="string"){e.position=e.position.split(/,?\s/)}if(e.lazy!==false&&(e.lazy===true||this.length>20)){this.one("mouseover",function(h){f=new a(c(this),e);f.show(h);d.push(f)})}else{this.each(function(){f=new a(c(this),e);d.push(f)})}return e.api?f:this}})(jQuery);
\ No newline at end of file
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/trait.png b/site/docs/0.7.0-incubating/api/scala/lib/trait.png
new file mode 100644
index 0000000..fb961a2
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/trait.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/trait_big.png b/site/docs/0.7.0-incubating/api/scala/lib/trait_big.png
new file mode 100644
index 0000000..625d925
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/trait_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/trait_diagram.png b/site/docs/0.7.0-incubating/api/scala/lib/trait_diagram.png
new file mode 100644
index 0000000..8898325
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/trait_diagram.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/trait_to_object_big.png b/site/docs/0.7.0-incubating/api/scala/lib/trait_to_object_big.png
new file mode 100644
index 0000000..d0cd7fd
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/trait_to_object_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/type.png b/site/docs/0.7.0-incubating/api/scala/lib/type.png
new file mode 100644
index 0000000..6c6e1fe
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/type.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/type_big.png b/site/docs/0.7.0-incubating/api/scala/lib/type_big.png
new file mode 100644
index 0000000..04c8794
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/type_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/type_diagram.png b/site/docs/0.7.0-incubating/api/scala/lib/type_diagram.png
new file mode 100644
index 0000000..d815252
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/type_diagram.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/type_to_object_big.png b/site/docs/0.7.0-incubating/api/scala/lib/type_to_object_big.png
new file mode 100644
index 0000000..ef2615b
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/type_to_object_big.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/typebg.gif b/site/docs/0.7.0-incubating/api/scala/lib/typebg.gif
new file mode 100644
index 0000000..2fcc77b
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/typebg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/unselected.png b/site/docs/0.7.0-incubating/api/scala/lib/unselected.png
new file mode 100644
index 0000000..d5ac639
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/unselected.png
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/lib/valuemembersbg.gif b/site/docs/0.7.0-incubating/api/scala/lib/valuemembersbg.gif
new file mode 100644
index 0000000..2a94931
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/lib/valuemembersbg.gif
Binary files differ
diff --git a/site/docs/0.7.0-incubating/api/scala/org/apache/livy/package.html b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/package.html
new file mode 100644
index 0000000..b356895
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/package.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>livy - livy-scala-api-parent 0.7.0-incubating API - org.apache.livy</title>
+          <meta name="description" content="livy - livy - scala - api - parent 0.7.0 - incubating API - org.apache.livy" />
+          <meta name="keywords" content="livy livy scala api parent 0.7.0 incubating API org.apache.livy" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../../../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../../../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../../../lib/template.js"></script>
+      <script type="text/javascript" src="../../../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../index.html';
+            var hash = 'org.apache.livy.package';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="value">
+      <div id="definition">
+        <img alt="Package" src="../../../lib/package_big.png" />
+        <p id="owner"><a href="../../package.html" class="extype" name="org">org</a>.<a href="../package.html" class="extype" name="org.apache">apache</a></p>
+        <h1>livy</h1><span class="permalink">
+      <a href="../../../index.html#org.apache.livy.package" title="Permalink" target="_top">
+        <img src="../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <span class="name">livy</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        
+        
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="org.apache.livy.scalaapi" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="scalaapi"></a>
+      <a id="scalaapi:scalaapi"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <a href="scalaapi/package.html"><span class="name">scalaapi</span></a>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../index.html#org.apache.livy.package@scalaapi" title="Permalink" target="_top">
+        <img src="../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/LivyScalaClient.html b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/LivyScalaClient.html
new file mode 100644
index 0000000..f1f9b71
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/LivyScalaClient.html
@@ -0,0 +1,641 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>LivyScalaClient - livy-scala-api-parent 0.7.0-incubating API - org.apache.livy.scalaapi.LivyScalaClient</title>
+          <meta name="description" content="LivyScalaClient - livy - scala - api - parent 0.7.0 - incubating API - org.apache.livy.scalaapi.LivyScalaClient" />
+          <meta name="keywords" content="LivyScalaClient livy scala api parent 0.7.0 incubating API org.apache.livy.scalaapi.LivyScalaClient" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../../../../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../../../../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../../../../lib/template.js"></script>
+      <script type="text/javascript" src="../../../../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../../index.html';
+            var hash = 'org.apache.livy.scalaapi.LivyScalaClient';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="type">
+      <div id="definition">
+        <img alt="Class" src="../../../../lib/class_big.png" />
+        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.livy">livy</a>.<a href="package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a></p>
+        <h1>LivyScalaClient</h1><h3><span class="morelinks"><div>Related Doc:
+            <a href="package.html" class="extype" name="org.apache.livy.scalaapi">package scalaapi</a>
+          </div></span></h3><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <span class="name">LivyScalaClient</span><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"><div class="comment cmt"><p>A client for submitting Spark-based jobs to a Livy backend.</p></div><div class="toggleContainer block">
+          <span class="toggle">Linear Supertypes</span>
+          <div class="superTypes hiddenContent"><span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
+        </div></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        <div id="order">
+              <span class="filtertype">Ordering</span>
+              <ol>
+                
+                <li class="alpha in"><span>Alphabetic</span></li>
+                <li class="inherit out"><span>By Inheritance</span></li>
+              </ol>
+            </div>
+        <div id="ancestors">
+                <span class="filtertype">Inherited<br />
+                </span>
+                <ol id="linearization">
+                  <li class="in" name="org.apache.livy.scalaapi.LivyScalaClient"><span>LivyScalaClient</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
+                </ol>
+              </div><div id="ancestors">
+            <span class="filtertype"></span>
+            <ol>
+              <li class="hideall out"><span>Hide All</span></li>
+              <li class="showall in"><span>Show All</span></li>
+            </ol>
+          </div>
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        <div id="constructors" class="members">
+              <h3>Instance Constructors</h3>
+              <ol><li name="org.apache.livy.scalaapi.LivyScalaClient#&lt;init&gt;" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="&lt;init&gt;(livyJavaClient:org.apache.livy.LivyClient):org.apache.livy.scalaapi.LivyScalaClient"></a>
+      <a id="&lt;init&gt;:LivyScalaClient"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">new</span>
+      </span>
+      <span class="symbol">
+        <span class="name">LivyScalaClient</span><span class="params">(<span name="livyJavaClient">livyJavaClient: <span class="extype" name="org.apache.livy.LivyClient">LivyClient</span></span>)</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@&lt;init&gt;(livyJavaClient:org.apache.livy.LivyClient):org.apache.livy.scalaapi.LivyScalaClient" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Creates a Scala client.</p><div class="fullcomment"><div class="comment cmt"><p>Creates a Scala client.</p></div><dl class="paramcmts block"><dt class="param">livyJavaClient</dt><dd class="cmt"><p>the Java client of Livy.</p></dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="scala.AnyRef#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:Any):Boolean"></a>
+      <a id="!=(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@!=(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef###" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="##():Int"></a>
+      <a id="##():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $hash$hash" class="name">##</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@##():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:Any):Boolean"></a>
+      <a id="==(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@==(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.LivyScalaClient#addFile" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="addFile(uri:java.net.URI):scala.concurrent.Future[_]"></a>
+      <a id="addFile(URI):Future[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">addFile</span><span class="params">(<span name="uri">uri: <span class="extype" name="java.net.URI">URI</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@addFile(uri:java.net.URI):scala.concurrent.Future[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Adds a file to the running remote context.</p><div class="fullcomment"><div class="comment cmt"><p>Adds a file to the running remote context.</p><p>Note that the URL should be reachable by the Spark driver process. If running the driver
+in cluster mode, it may reside on a different host, meaning &quot;file:&quot; URLs have to exist
+on that node (and not on the client machine).</p><p>If the provided URI has no scheme, it's considered to be relative to the default file system
+configured in the Livy server.
+</p></div><dl class="paramcmts block"><dt class="param">uri</dt><dd class="cmt"><p>The location of the file.</p></dd><dt>returns</dt><dd class="cmt"><p>A future that can be used to monitor the operation.</p></dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.LivyScalaClient#addJar" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="addJar(uri:java.net.URI):scala.concurrent.Future[_]"></a>
+      <a id="addJar(URI):Future[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">addJar</span><span class="params">(<span name="uri">uri: <span class="extype" name="java.net.URI">URI</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@addJar(uri:java.net.URI):scala.concurrent.Future[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Adds a jar file to the running remote context.</p><div class="fullcomment"><div class="comment cmt"><p>Adds a jar file to the running remote context.</p><p>Note that the URL should be reachable by the Spark driver process. If running the driver
+in cluster mode, it may reside on a different host, meaning &quot;file:&quot; URLs have to exist
+on that node (and not on the client machine).</p><p>If the provided URI has no scheme, it's considered to be relative to the default file system
+configured in the Livy server.
+</p></div><dl class="paramcmts block"><dt class="param">uri</dt><dd class="cmt"><p>The location of the jar file.</p></dd><dt>returns</dt><dd class="cmt"><p>A future that can be used to monitor the operation.</p></dd></dl></div>
+    </li><li name="scala.Any#asInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="asInstanceOf[T0]:T0"></a>
+      <a id="asInstanceOf[T0]:T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">asInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Any.asInstanceOf.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@asInstanceOf[T0]:T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef#clone" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="clone():Object"></a>
+      <a id="clone():AnyRef"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">clone</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@clone():Object" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.CloneNotSupportedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#eq" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="eq(x$1:AnyRef):Boolean"></a>
+      <a id="eq(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">eq</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@eq(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#equals" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="equals(x$1:Any):Boolean"></a>
+      <a id="equals(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">equals</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@equals(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#finalize" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="finalize():Unit"></a>
+      <a id="finalize():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">finalize</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@finalize():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[java.lang.Throwable]</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#getClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="getClass():Class[_]"></a>
+      <a id="getClass():Class[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">getClass</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.Class">Class</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@getClass():Class[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#hashCode" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="hashCode():Int"></a>
+      <a id="hashCode():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">hashCode</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@hashCode():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.Any#isInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@isInstanceOf[T0]:Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef#ne" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ne(x$1:AnyRef):Boolean"></a>
+      <a id="ne(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@ne(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notify" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notify():Unit"></a>
+      <a id="notify():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notify</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@notify():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notifyAll" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notifyAll():Unit"></a>
+      <a id="notifyAll():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notifyAll</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@notifyAll():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.LivyScalaClient#run" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="run[T](fn:org.apache.livy.scalaapi.ScalaJobContext=&gt;T):scala.concurrent.Future[T]"></a>
+      <a id="run[T]((ScalaJobContext)⇒T):Future[T]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">run</span><span class="tparams">[<span name="T">T</span>]</span><span class="params">(<span name="fn">fn: (<a href="ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a>) ⇒ <span class="extype" name="org.apache.livy.scalaapi.LivyScalaClient.run.T">T</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.LivyScalaClient.run.T">T</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@run[T](fn:org.apache.livy.scalaapi.ScalaJobContext=&gt;T):scala.concurrent.Future[T]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Asks the remote context to run a job immediately.</p><div class="fullcomment"><div class="comment cmt"><p>Asks the remote context to run a job immediately.</p><p>Normally, the remote context will queue jobs and execute them based on how many worker
+threads have been configured. This method will run the submitted job in the same thread
+processing the RPC message, so that queueing does not apply.</p><p>It's recommended that this method only be used to run code that finishes quickly. This
+avoids interfering with the normal operation of the context.
+</p></div><dl class="paramcmts block"><dt class="param">fn</dt><dd class="cmt"><p>The job to be executed. It is a function that takes in a ScalaJobContext and
+returns the result of the execution of the job with that context.</p></dd><dt>returns</dt><dd class="cmt"><p>A handle that can be used to monitor the job.</p></dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.LivyScalaClient#stop" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="stop(shutdownContext:Boolean):Unit"></a>
+      <a id="stop(Boolean):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">stop</span><span class="params">(<span name="shutdownContext">shutdownContext: <span class="extype" name="scala.Boolean">Boolean</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@stop(shutdownContext:Boolean):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Stops the remote context.</p><div class="fullcomment"><div class="comment cmt"><p>Stops the remote context.</p><p>Any pending jobs will be cancelled, and the remote context will be torn down.
+</p></div><dl class="paramcmts block"><dt class="param">shutdownContext</dt><dd class="cmt"><p>Whether to shutdown the underlying Spark context. If false, the
+                         context will keep running and it's still possible to send commands
+                         to it, if the backend being used supports it.</p></dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.LivyScalaClient#submit" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="submit[T](fn:org.apache.livy.scalaapi.ScalaJobContext=&gt;T):org.apache.livy.scalaapi.ScalaJobHandle[T]"></a>
+      <a id="submit[T]((ScalaJobContext)⇒T):ScalaJobHandle[T]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">submit</span><span class="tparams">[<span name="T">T</span>]</span><span class="params">(<span name="fn">fn: (<a href="ScalaJobContext.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobContext">ScalaJobContext</a>) ⇒ <span class="extype" name="org.apache.livy.scalaapi.LivyScalaClient.submit.T">T</span></span>)</span><span class="result">: <a href="ScalaJobHandle.html" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a>[<span class="extype" name="org.apache.livy.scalaapi.LivyScalaClient.submit.T">T</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@submit[T](fn:org.apache.livy.scalaapi.ScalaJobContext=&gt;T):org.apache.livy.scalaapi.ScalaJobHandle[T]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Submits a job for asynchronous execution.</p><div class="fullcomment"><div class="comment cmt"><p>Submits a job for asynchronous execution.
+</p></div><dl class="paramcmts block"><dt class="param">fn</dt><dd class="cmt"><p>The job to be executed. It is a function that takes in a ScalaJobContext and
+returns the result of the execution of the job with that context.</p></dd><dt>returns</dt><dd class="cmt"><p>A handle that can be used to monitor the job.</p></dd></dl></div>
+    </li><li name="scala.AnyRef#synchronized" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="synchronized[T0](x$1:=&gt;T0):T0"></a>
+      <a id="synchronized[T0](⇒T0):T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">synchronized</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="params">(<span name="arg0">arg0: ⇒ <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>)</span><span class="result">: <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@synchronized[T0](x$1:=&gt;T0):T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#toString" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="toString():String"></a>
+      <a id="toString():String"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">toString</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.String">String</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@toString():String" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.LivyScalaClient#uploadFile" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="uploadFile(file:java.io.File):scala.concurrent.Future[_]"></a>
+      <a id="uploadFile(File):Future[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">uploadFile</span><span class="params">(<span name="file">file: <span class="extype" name="java.io.File">File</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@uploadFile(file:java.io.File):scala.concurrent.Future[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Upload a file to be passed to the Spark application.</p><div class="fullcomment"><div class="comment cmt"><p>Upload a file to be passed to the Spark application.
+</p></div><dl class="paramcmts block"><dt class="param">file</dt><dd class="cmt"><p>The local file to be uploaded.</p></dd><dt>returns</dt><dd class="cmt"><p>A future that can be used to monitor this operation.</p></dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.LivyScalaClient#uploadJar" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="uploadJar(jar:java.io.File):scala.concurrent.Future[_]"></a>
+      <a id="uploadJar(File):Future[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">uploadJar</span><span class="params">(<span name="jar">jar: <span class="extype" name="java.io.File">File</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@uploadJar(jar:java.io.File):scala.concurrent.Future[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Upload a jar to be added to the Spark application classpath.</p><div class="fullcomment"><div class="comment cmt"><p>Upload a jar to be added to the Spark application classpath.
+</p></div><dl class="paramcmts block"><dt class="param">jar</dt><dd class="cmt"><p>The local file to be uploaded.</p></dd><dt>returns</dt><dd class="cmt"><p>A future that can be used to monitor this operation.</p></dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait():Unit"></a>
+      <a id="wait():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@wait():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long,x$2:Int):Unit"></a>
+      <a id="wait(Long,Int):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>, <span name="arg1">arg1: <span class="extype" name="scala.Int">Int</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@wait(x$1:Long,x$2:Int):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long):Unit"></a>
+      <a id="wait(Long):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.LivyScalaClient@wait(x$1:Long):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        <div class="parent" name="scala.AnyRef">
+              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
+            </div><div class="parent" name="scala.Any">
+              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
+            </div>
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/ScalaJobContext.html b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/ScalaJobContext.html
new file mode 100644
index 0000000..7525c6b
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/ScalaJobContext.html
@@ -0,0 +1,672 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>ScalaJobContext - livy-scala-api-parent 0.7.0-incubating API - org.apache.livy.scalaapi.ScalaJobContext</title>
+          <meta name="description" content="ScalaJobContext - livy - scala - api - parent 0.7.0 - incubating API - org.apache.livy.scalaapi.ScalaJobContext" />
+          <meta name="keywords" content="ScalaJobContext livy scala api parent 0.7.0 incubating API org.apache.livy.scalaapi.ScalaJobContext" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../../../../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../../../../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../../../../lib/template.js"></script>
+      <script type="text/javascript" src="../../../../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../../index.html';
+            var hash = 'org.apache.livy.scalaapi.ScalaJobContext';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="type">
+      <div id="definition">
+        <img alt="Class" src="../../../../lib/class_big.png" />
+        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.livy">livy</a>.<a href="package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a></p>
+        <h1>ScalaJobContext</h1><h3><span class="morelinks"><div>Related Doc:
+            <a href="package.html" class="extype" name="org.apache.livy.scalaapi">package scalaapi</a>
+          </div></span></h3><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ScalaJobContext</span><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"><div class="comment cmt"><p> Holds runtime information about the job execution context.
+</p></div><div class="toggleContainer block">
+          <span class="toggle">Linear Supertypes</span>
+          <div class="superTypes hiddenContent"><span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
+        </div></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        <div id="order">
+              <span class="filtertype">Ordering</span>
+              <ol>
+                
+                <li class="alpha in"><span>Alphabetic</span></li>
+                <li class="inherit out"><span>By Inheritance</span></li>
+              </ol>
+            </div>
+        <div id="ancestors">
+                <span class="filtertype">Inherited<br />
+                </span>
+                <ol id="linearization">
+                  <li class="in" name="org.apache.livy.scalaapi.ScalaJobContext"><span>ScalaJobContext</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
+                </ol>
+              </div><div id="ancestors">
+            <span class="filtertype"></span>
+            <ol>
+              <li class="hideall out"><span>Hide All</span></li>
+              <li class="showall in"><span>Show All</span></li>
+            </ol>
+          </div>
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="scala.AnyRef#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:Any):Boolean"></a>
+      <a id="!=(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@!=(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef###" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="##():Int"></a>
+      <a id="##():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $hash$hash" class="name">##</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@##():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:Any):Boolean"></a>
+      <a id="==(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@==(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.Any#asInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="asInstanceOf[T0]:T0"></a>
+      <a id="asInstanceOf[T0]:T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">asInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Any.asInstanceOf.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@asInstanceOf[T0]:T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef#clone" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="clone():Object"></a>
+      <a id="clone():AnyRef"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">clone</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@clone():Object" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.CloneNotSupportedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#createStreamingContext" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="createStreamingContext(batchDuration:Long):Unit"></a>
+      <a id="createStreamingContext(Long):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">createStreamingContext</span><span class="params">(<span name="batchDuration">batchDuration: <span class="extype" name="scala.Long">Long</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@createStreamingContext(batchDuration:Long):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Creates the SparkStreaming context.</p><div class="fullcomment"><div class="comment cmt"><p>Creates the SparkStreaming context.
+</p></div><dl class="paramcmts block"><dt class="param">batchDuration</dt><dd class="cmt"><p>Time interval at which streaming data will be divided into batches,
+                      in milliseconds.</p></dd></dl></div>
+    </li><li name="scala.AnyRef#eq" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="eq(x$1:AnyRef):Boolean"></a>
+      <a id="eq(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">eq</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@eq(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#equals" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="equals(x$1:Any):Boolean"></a>
+      <a id="equals(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">equals</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@equals(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#finalize" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="finalize():Unit"></a>
+      <a id="finalize():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">finalize</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@finalize():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[java.lang.Throwable]</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#getClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="getClass():Class[_]"></a>
+      <a id="getClass():Class[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">getClass</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.Class">Class</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@getClass():Class[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#getSharedVariable" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="getSharedVariable[E](name:String):E"></a>
+      <a id="getSharedVariable[E](String):E"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">getSharedVariable</span><span class="tparams">[<span name="E">E</span>]</span><span class="params">(<span name="name">name: <span class="extype" name="scala.Predef.String">String</span></span>)</span><span class="result">: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobContext.getSharedVariable.E">E</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@getSharedVariable[E](name:String):E" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Get shared object</p>
+    </li><li name="scala.AnyRef#hashCode" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="hashCode():Int"></a>
+      <a id="hashCode():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">hashCode</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@hashCode():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#hivectx" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="hivectx:org.apache.spark.sql.hive.HiveContext"></a>
+      <a id="hivectx:HiveContext"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">hivectx</span><span class="result">: <span class="extype" name="org.apache.spark.sql.hive.HiveContext">HiveContext</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@hivectx:org.apache.spark.sql.hive.HiveContext" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">The shared HiveContext instance.</p>
+    </li><li name="scala.Any#isInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@isInstanceOf[T0]:Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#localTmpDir" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="localTmpDir:java.io.File"></a>
+      <a id="localTmpDir:File"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">localTmpDir</span><span class="result">: <span class="extype" name="java.io.File">File</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@localTmpDir:java.io.File" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Returns a local tmp dir specific to the context.</p>
+    </li><li name="scala.AnyRef#ne" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ne(x$1:AnyRef):Boolean"></a>
+      <a id="ne(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@ne(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notify" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notify():Unit"></a>
+      <a id="notify():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notify</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@notify():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notifyAll" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notifyAll():Unit"></a>
+      <a id="notifyAll():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notifyAll</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@notifyAll():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#removeSharedVariable" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="removeSharedVariable[E](name:String):E"></a>
+      <a id="removeSharedVariable[E](String):E"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">removeSharedVariable</span><span class="tparams">[<span name="E">E</span>]</span><span class="params">(<span name="name">name: <span class="extype" name="scala.Predef.String">String</span></span>)</span><span class="result">: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobContext.removeSharedVariable.E">E</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@removeSharedVariable[E](name:String):E" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Remove shared object from cache</p>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#sc" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="sc:org.apache.spark.SparkContext"></a>
+      <a id="sc:SparkContext"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">sc</span><span class="result">: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@sc:org.apache.spark.SparkContext" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">The shared SparkContext instance.</p>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#setSharedVariable" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="setSharedVariable[E](name:String,obj:E):Unit"></a>
+      <a id="setSharedVariable[E](String,E):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">setSharedVariable</span><span class="tparams">[<span name="E">E</span>]</span><span class="params">(<span name="name">name: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="obj">obj: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobContext.setSharedVariable.E">E</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@setSharedVariable[E](name:String,obj:E):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Set shared object, it will replace the old one if already existed</p>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#sparkSession" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="sparkSession[E]:E"></a>
+      <a id="sparkSession[E]:E"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">sparkSession</span><span class="tparams">[<span name="E">E</span>]</span><span class="result">: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobContext.sparkSession.E">E</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@sparkSession[E]:E" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#sqlctx" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="sqlctx:org.apache.spark.sql.SQLContext"></a>
+      <a id="sqlctx:SQLContext"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">sqlctx</span><span class="result">: <span class="extype" name="org.apache.spark.sql.SQLContext">SQLContext</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@sqlctx:org.apache.spark.sql.SQLContext" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">The shared SQLContext instance.</p>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#stopStreamingContext" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="stopStreamingContext():Unit"></a>
+      <a id="stopStreamingContext():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">stopStreamingContext</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@stopStreamingContext():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Stops the SparkStreaming context.</p>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext#streamingctx" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="streamingctx:org.apache.spark.streaming.StreamingContext"></a>
+      <a id="streamingctx:StreamingContext"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">streamingctx</span><span class="result">: <span class="extype" name="org.apache.spark.streaming.StreamingContext">StreamingContext</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@streamingctx:org.apache.spark.streaming.StreamingContext" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Returns the StreamingContext which has already been created.</p>
+    </li><li name="scala.AnyRef#synchronized" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="synchronized[T0](x$1:=&gt;T0):T0"></a>
+      <a id="synchronized[T0](⇒T0):T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">synchronized</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="params">(<span name="arg0">arg0: ⇒ <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>)</span><span class="result">: <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@synchronized[T0](x$1:=&gt;T0):T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#toString" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="toString():String"></a>
+      <a id="toString():String"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">toString</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.String">String</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@toString():String" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait():Unit"></a>
+      <a id="wait():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@wait():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long,x$2:Int):Unit"></a>
+      <a id="wait(Long,Int):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>, <span name="arg1">arg1: <span class="extype" name="scala.Int">Int</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@wait(x$1:Long,x$2:Int):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long):Unit"></a>
+      <a id="wait(Long):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobContext@wait(x$1:Long):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        <div class="parent" name="scala.AnyRef">
+              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
+            </div><div class="parent" name="scala.Any">
+              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
+            </div>
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/ScalaJobHandle.html b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/ScalaJobHandle.html
new file mode 100644
index 0000000..6d1249d
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/ScalaJobHandle.html
@@ -0,0 +1,981 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>ScalaJobHandle - livy-scala-api-parent 0.7.0-incubating API - org.apache.livy.scalaapi.ScalaJobHandle</title>
+          <meta name="description" content="ScalaJobHandle - livy - scala - api - parent 0.7.0 - incubating API - org.apache.livy.scalaapi.ScalaJobHandle" />
+          <meta name="keywords" content="ScalaJobHandle livy scala api parent 0.7.0 incubating API org.apache.livy.scalaapi.ScalaJobHandle" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../../../../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../../../../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../../../../lib/template.js"></script>
+      <script type="text/javascript" src="../../../../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../../index.html';
+            var hash = 'org.apache.livy.scalaapi.ScalaJobHandle';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="type">
+      <div id="definition">
+        <img alt="Class" src="../../../../lib/class_big.png" />
+        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.livy">livy</a>.<a href="package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a></p>
+        <h1>ScalaJobHandle</h1><h3><span class="morelinks"><div>Related Doc:
+            <a href="package.html" class="extype" name="org.apache.livy.scalaapi">package scalaapi</a>
+          </div></span></h3><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ScalaJobHandle</span><span class="tparams">[<span name="T">T</span>]</span><span class="result"> extends <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"><div class="comment cmt"><p> A handle to a submitted job. Allows for monitoring and controlling of the running remote job.
+</p></div><div class="toggleContainer block">
+          <span class="toggle">Linear Supertypes</span>
+          <div class="superTypes hiddenContent"><span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>], <span class="extype" name="scala.concurrent.Awaitable">Awaitable</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>], <span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
+        </div></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        <div id="order">
+              <span class="filtertype">Ordering</span>
+              <ol>
+                
+                <li class="alpha in"><span>Alphabetic</span></li>
+                <li class="inherit out"><span>By Inheritance</span></li>
+              </ol>
+            </div>
+        <div id="ancestors">
+                <span class="filtertype">Inherited<br />
+                </span>
+                <ol id="linearization">
+                  <li class="in" name="org.apache.livy.scalaapi.ScalaJobHandle"><span>ScalaJobHandle</span></li><li class="in" name="scala.concurrent.Future"><span>Future</span></li><li class="in" name="scala.concurrent.Awaitable"><span>Awaitable</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
+                </ol>
+              </div><div id="ancestors">
+            <span class="filtertype"></span>
+            <ol>
+              <li class="hideall out"><span>Hide All</span></li>
+              <li class="showall in"><span>Show All</span></li>
+            </ol>
+          </div>
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="scala.AnyRef#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:Any):Boolean"></a>
+      <a id="!=(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@!=(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef###" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="##():Int"></a>
+      <a id="##():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $hash$hash" class="name">##</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@##():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:Any):Boolean"></a>
+      <a id="==(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@==(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.concurrent.Future#andThen" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="andThen[U&lt;:&lt;?&gt;](pf:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[T]"></a>
+      <a id="andThen[U](PartialFunction[Try[T],U])(ExecutionContext):Future[T]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">andThen</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="pf">pf: <span class="extype" name="scala.PartialFunction">PartialFunction</span>[<span class="extype" name="scala.util.Try">Try</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>], <span class="extype" name="scala.concurrent.Future.andThen.U">U</span>]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@andThen[U](pf:PartialFunction[scala.util.Try[T],U])(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[T]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.Any#asInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="asInstanceOf[T0]:T0"></a>
+      <a id="asInstanceOf[T0]:T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">asInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Any.asInstanceOf.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@asInstanceOf[T0]:T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef#clone" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="clone():Object"></a>
+      <a id="clone():AnyRef"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">clone</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@clone():Object" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.CloneNotSupportedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.concurrent.Future#collect" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="collect[S&lt;:&lt;?&gt;](pf:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[S]"></a>
+      <a id="collect[S](PartialFunction[T,S])(ExecutionContext):Future[S]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">collect</span><span class="tparams">[<span name="S">S</span>]</span><span class="params">(<span name="pf">pf: <span class="extype" name="scala.PartialFunction">PartialFunction</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>, <span class="extype" name="scala.concurrent.Future.collect.S">S</span>]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.collect.S">S</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@collect[S](pf:PartialFunction[T,S])(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[S]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.AnyRef#eq" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="eq(x$1:AnyRef):Boolean"></a>
+      <a id="eq(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">eq</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@eq(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#equals" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="equals(x$1:Any):Boolean"></a>
+      <a id="equals(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">equals</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@equals(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.concurrent.Future#failed" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="failed:scala.concurrent.Future[Throwable]"></a>
+      <a id="failed:Future[Throwable]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">failed</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.Throwable">Throwable</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@failed:scala.concurrent.Future[Throwable]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.concurrent.Future#fallbackTo" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="fallbackTo[U&lt;:&lt;?&gt;](that:&lt;?&gt;):scala.concurrent.Future[U]"></a>
+      <a id="fallbackTo[U&gt;:T](Future[U]):Future[U]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">fallbackTo</span><span class="tparams">[<span name="U">U &gt;: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span></span>]</span><span class="params">(<span name="that">that: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.fallbackTo.U">U</span>]</span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.fallbackTo.U">U</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@fallbackTo[U&gt;:T](that:scala.concurrent.Future[U]):scala.concurrent.Future[U]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.concurrent.Future#filter" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="filter(p:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[T]"></a>
+      <a id="filter((T)⇒Boolean)(ExecutionContext):Future[T]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">filter</span><span class="params">(<span name="p">p: (<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>) ⇒ <span class="extype" name="scala.Boolean">Boolean</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@filter(p:T=&gt;Boolean)(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[T]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.AnyRef#finalize" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="finalize():Unit"></a>
+      <a id="finalize():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">finalize</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@finalize():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[java.lang.Throwable]</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.concurrent.Future#flatMap" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="flatMap[S&lt;:&lt;?&gt;](f:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[S]"></a>
+      <a id="flatMap[S]((T)⇒Future[S])(ExecutionContext):Future[S]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">flatMap</span><span class="tparams">[<span name="S">S</span>]</span><span class="params">(<span name="f">f: (<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>) ⇒ <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.flatMap.S">S</span>]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.flatMap.S">S</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@flatMap[S](f:T=&gt;scala.concurrent.Future[S])(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[S]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.concurrent.Future#foreach" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="foreach[U&lt;:&lt;?&gt;](f:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):Unit"></a>
+      <a id="foreach[U]((T)⇒U)(ExecutionContext):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">foreach</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="f">f: (<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>) ⇒ <span class="extype" name="scala.concurrent.Future.foreach.U">U</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@foreach[U](f:T=&gt;U)(implicitexecutor:scala.concurrent.ExecutionContext):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.AnyRef#getClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="getClass():Class[_]"></a>
+      <a id="getClass():Class[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">getClass</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.Class">Class</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@getClass():Class[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#hashCode" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="hashCode():Int"></a>
+      <a id="hashCode():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">hashCode</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@hashCode():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#isCompleted" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="isCompleted:Boolean"></a>
+      <a id="isCompleted:Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">isCompleted</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@isCompleted:Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> Returns whether the job has already been completed with
+ a value or an exception.</p><div class="fullcomment"><div class="comment cmt"><p> Returns whether the job has already been completed with
+ a value or an exception.</p><p> Note: using this method yields nondeterministic dataflow programs.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p><code>true</code> if the job is already completed, <code>false</code> otherwise.</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> → Future</dd></dl></div>
+    </li><li name="scala.Any#isInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@isInstanceOf[T0]:Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.concurrent.Future#map" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="map[S&lt;:&lt;?&gt;](f:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[S]"></a>
+      <a id="map[S]((T)⇒S)(ExecutionContext):Future[S]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">map</span><span class="tparams">[<span name="S">S</span>]</span><span class="params">(<span name="f">f: (<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>) ⇒ <span class="extype" name="scala.concurrent.Future.map.S">S</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.map.S">S</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@map[S](f:T=&gt;S)(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[S]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.concurrent.Future#mapTo" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="mapTo[S&lt;:&lt;?&gt;](implicittag:&lt;?&gt;):scala.concurrent.Future[S]"></a>
+      <a id="mapTo[S](ClassTag[S]):Future[S]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">mapTo</span><span class="tparams">[<span name="S">S</span>]</span><span class="params">(<span class="implicit">implicit </span><span name="tag">tag: <span class="extype" name="scala.reflect.ClassTag">ClassTag</span>[<span class="extype" name="scala.concurrent.Future.mapTo.S">S</span>]</span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.mapTo.S">S</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@mapTo[S](implicittag:scala.reflect.ClassTag[S]):scala.concurrent.Future[S]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.AnyRef#ne" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ne(x$1:AnyRef):Boolean"></a>
+      <a id="ne(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@ne(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notify" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notify():Unit"></a>
+      <a id="notify():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notify</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@notify():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notifyAll" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notifyAll():Unit"></a>
+      <a id="notifyAll():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notifyAll</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@notifyAll():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#onComplete" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="onComplete[U](func:scala.util.Try[T]=&gt;U)(implicitexecutor:scala.concurrent.ExecutionContext):Unit"></a>
+      <a id="onComplete[U]((Try[T])⇒U)(ExecutionContext):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">onComplete</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="func">func: (<span class="extype" name="scala.util.Try">Try</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]) ⇒ <span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.onComplete.U">U</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@onComplete[U](func:scala.util.Try[T]=&gt;U)(implicitexecutor:scala.concurrent.ExecutionContext):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> When the job is completed, either through an exception, or a value,
+ apply the provided function.</p><div class="fullcomment"><div class="comment cmt"><p> When the job is completed, either through an exception, or a value,
+ apply the provided function.</p><p> If the job has already been completed,
+ this will either be applied immediately or be scheduled asynchronously.</p><p> Multiple callbacks may be registered; there is no guarantee that they will be
+ executed in a particular order.</p><p> The provided callback always runs in the provided implicit
+<code> ExecutionContext</code>, though there is no guarantee that the
+ <code>execute()</code> method on the <code>ExecutionContext</code> will be called once
+ per callback or that <code>execute()</code> will be called in the current
+ thread. That is, the implementation may run multiple callbacks
+ in a batch within a single <code>execute()</code> and it may run
+ <code>execute()</code> either immediately or asynchronously.
+</p></div><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> → Future</dd></dl></div>
+    </li><li name="scala.concurrent.Future#onFailure" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="onFailure[U&lt;:&lt;?&gt;](pf:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):Unit"></a>
+      <a id="onFailure[U](PartialFunction[Throwable,U])(ExecutionContext):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">onFailure</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="pf">pf: <span class="extype" name="scala.PartialFunction">PartialFunction</span>[<span class="extype" name="scala.Throwable">Throwable</span>, <span class="extype" name="scala.concurrent.Future.onFailure.U">U</span>]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@onFailure[U](pf:PartialFunction[Throwable,U])(implicitexecutor:scala.concurrent.ExecutionContext):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#onJobCancelled" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="onJobCancelled[U](func:Boolean=&gt;Unit)(implicitexecutor:scala.concurrent.ExecutionContext):Unit"></a>
+      <a id="onJobCancelled[U]((Boolean)⇒Unit)(ExecutionContext):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">onJobCancelled</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="func">func: (<span class="extype" name="scala.Boolean">Boolean</span>) ⇒ <span class="extype" name="scala.Unit">Unit</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@onJobCancelled[U](func:Boolean=&gt;Unit)(implicitexecutor:scala.concurrent.ExecutionContext):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> When this job is cancelled, apply the provided function.</p><div class="fullcomment"><div class="comment cmt"><p> When this job is cancelled, apply the provided function.</p><p> Multiple callbacks may be registered; there is no guarantee that they will be
+ executed in a particular order.</p><p> The provided callback always runs in the provided implicit
+<code> ExecutionContext</code>, though there is no guarantee that the
+ <code>execute()</code> method on the <code>ExecutionContext</code> will be called once
+ per callback or that <code>execute()</code> will be called in the current
+ thread. That is, the implementation may run multiple callbacks
+ in a batch within a single <code>execute()</code> and it may run
+ <code>execute()</code> either immediately or asynchronously.
+</p></div></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#onJobQueued" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="onJobQueued[U](func:=&gt;Unit)(implicitexecutor:scala.concurrent.ExecutionContext):Unit"></a>
+      <a id="onJobQueued[U](⇒Unit)(ExecutionContext):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">onJobQueued</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="func">func: ⇒ <span class="extype" name="scala.Unit">Unit</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@onJobQueued[U](func:=&gt;Unit)(implicitexecutor:scala.concurrent.ExecutionContext):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> When this job is queued, apply the provided function.</p><div class="fullcomment"><div class="comment cmt"><p> When this job is queued, apply the provided function.</p><p> Multiple callbacks may be registered; there is no guarantee that they will be
+ executed in a particular order.</p><p> The provided callback always runs in the provided implicit
+<code> ExecutionContext</code>, though there is no guarantee that the
+ <code>execute()</code> method on the <code>ExecutionContext</code> will be called once
+ per callback or that <code>execute()</code> will be called in the current
+ thread. That is, the implementation may run multiple callbacks
+ in a batch within a single <code>execute()</code> and it may run
+ <code>execute()</code> either immediately or asynchronously.
+</p></div></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#onJobStarted" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="onJobStarted[U](func:=&gt;Unit)(implicitexecutor:scala.concurrent.ExecutionContext):Unit"></a>
+      <a id="onJobStarted[U](⇒Unit)(ExecutionContext):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">onJobStarted</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="func">func: ⇒ <span class="extype" name="scala.Unit">Unit</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@onJobStarted[U](func:=&gt;Unit)(implicitexecutor:scala.concurrent.ExecutionContext):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> When this job has started, apply the provided function.</p><div class="fullcomment"><div class="comment cmt"><p> When this job has started, apply the provided function.</p><p> Multiple callbacks may be registered; there is no guarantee that they will be
+ executed in a particular order.</p><p> The provided callback always runs in the provided implicit
+<code> ExecutionContext</code>, though there is no guarantee that the
+ <code>execute()</code> method on the <code>ExecutionContext</code> will be called once
+ per callback or that <code>execute()</code> will be called in the current
+ thread. That is, the implementation may run multiple callbacks
+ in a batch within a single <code>execute()</code> and it may run
+ <code>execute()</code> either immediately or asynchronously.
+</p></div></div>
+    </li><li name="scala.concurrent.Future#onSuccess" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="onSuccess[U&lt;:&lt;?&gt;](pf:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):Unit"></a>
+      <a id="onSuccess[U](PartialFunction[T,U])(ExecutionContext):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">onSuccess</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="pf">pf: <span class="extype" name="scala.PartialFunction">PartialFunction</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>, <span class="extype" name="scala.concurrent.Future.onSuccess.U">U</span>]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@onSuccess[U](pf:PartialFunction[T,U])(implicitexecutor:scala.concurrent.ExecutionContext):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#ready" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ready(atMost:scala.concurrent.duration.Duration)(implicitpermit:scala.concurrent.CanAwait):ScalaJobHandle.this.type"></a>
+      <a id="ready(Duration)(CanAwait):ScalaJobHandle.this.type"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ready</span><span class="params">(<span name="atMost">atMost: <span class="extype" name="scala.concurrent.duration.Duration">Duration</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="permit">permit: <span class="extype" name="scala.concurrent.CanAwait">CanAwait</span></span>)</span><span class="result">: <a href="" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a>.this.type</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@ready(atMost:scala.concurrent.duration.Duration)(implicitpermit:scala.concurrent.CanAwait):ScalaJobHandle.this.type" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Supports Scala's Await.ready(atmost) which awaits the completion of the job.</p><div class="fullcomment"><div class="comment cmt"><p>Supports Scala's Await.ready(atmost) which awaits the completion of the job.
+</p></div><dl class="paramcmts block"><dt class="param">atMost</dt><dd class="cmt"><p>
+        maximum wait time, which may be negative (no waiting is done),
+        <span class="extype" name="scala.concurrent.duration.Duration.Inf">Duration.Inf</span> for unbounded waiting,
+        or a finite positive duration.</p></dd><dt>returns</dt><dd class="cmt"><p>ScalaJobHandle</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> → Awaitable</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[InterruptedException]</span>
+    </span>)</span>
+              
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[TimeoutException]</span>
+    </span>)</span>
+              
+        </dd><dt>Exceptions thrown</dt><dd><span class="cmt"><p><span class="extype" name="InterruptedException"><code>InterruptedException</code></span> if the current thread is interrupted while waiting.</p></span><span class="cmt"><p><span class="extype" name="TimeoutException"><code>TimeoutException</code></span> if after waiting for the specified time the job
+                                 is still not ready.</p></span></dd></dl></div>
+    </li><li name="scala.concurrent.Future#recover" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="recover[U&lt;:&lt;?&gt;](pf:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[U]"></a>
+      <a id="recover[U&gt;:T](PartialFunction[Throwable,U])(ExecutionContext):Future[U]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">recover</span><span class="tparams">[<span name="U">U &gt;: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span></span>]</span><span class="params">(<span name="pf">pf: <span class="extype" name="scala.PartialFunction">PartialFunction</span>[<span class="extype" name="scala.Throwable">Throwable</span>, <span class="extype" name="scala.concurrent.Future.recover.U">U</span>]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.recover.U">U</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@recover[U&gt;:T](pf:PartialFunction[Throwable,U])(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[U]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.concurrent.Future#recoverWith" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="recoverWith[U&lt;:&lt;?&gt;](pf:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[U]"></a>
+      <a id="recoverWith[U&gt;:T](PartialFunction[Throwable,Future[U]])(ExecutionContext):Future[U]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">recoverWith</span><span class="tparams">[<span name="U">U &gt;: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span></span>]</span><span class="params">(<span name="pf">pf: <span class="extype" name="scala.PartialFunction">PartialFunction</span>[<span class="extype" name="scala.Throwable">Throwable</span>, <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.recoverWith.U">U</span>]]</span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.recoverWith.U">U</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@recoverWith[U&gt;:T](pf:PartialFunction[Throwable,scala.concurrent.Future[U]])(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[U]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#result" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="result(atMost:scala.concurrent.duration.Duration)(implicitpermit:scala.concurrent.CanAwait):T"></a>
+      <a id="result(Duration)(CanAwait):T"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">result</span><span class="params">(<span name="atMost">atMost: <span class="extype" name="scala.concurrent.duration.Duration">Duration</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="permit">permit: <span class="extype" name="scala.concurrent.CanAwait">CanAwait</span></span>)</span><span class="result">: <span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@result(atMost:scala.concurrent.duration.Duration)(implicitpermit:scala.concurrent.CanAwait):T" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Supports Scala's Await.result(atmost) which awaits the completion of the job and returns the
+result (of type <code>T</code>).</p><div class="fullcomment"><div class="comment cmt"><p>Supports Scala's Await.result(atmost) which awaits the completion of the job and returns the
+result (of type <code>T</code>).
+</p></div><dl class="paramcmts block"><dt class="param">atMost</dt><dd class="cmt"><p>
+        maximum wait time, which may be negative (no waiting is done),
+        <span class="extype" name="scala.concurrent.duration.Duration.Inf">Duration.Inf</span> for unbounded waiting,
+        or a finite positive duration.</p></dd><dt>returns</dt><dd class="cmt"><p>the result value if job is completed within the specific maximum wait time.</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> → Awaitable</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[Exception]</span>
+    </span>)</span>
+              
+        </dd><dt>Exceptions thrown</dt><dd><span class="cmt"><p><span class="extype" name="Exception"><code>Exception</code></span> the underlying exception on the execution of the job.</p></span></dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#state" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="state:org.apache.livy.JobHandle.State"></a>
+      <a id="state:State"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">state</span><span class="result">: <span class="extype" name="org.apache.livy.JobHandle.State">State</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@state:org.apache.livy.JobHandle.State" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Return the current state of the job.</p>
+    </li><li name="scala.AnyRef#synchronized" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="synchronized[T0](x$1:=&gt;T0):T0"></a>
+      <a id="synchronized[T0](⇒T0):T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">synchronized</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="params">(<span name="arg0">arg0: ⇒ <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>)</span><span class="result">: <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@synchronized[T0](x$1:=&gt;T0):T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#toString" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="toString():String"></a>
+      <a id="toString():String"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">toString</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.String">String</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@toString():String" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.concurrent.Future#transform" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="transform[S&lt;:&lt;?&gt;](s:&lt;?&gt;,f:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[S]"></a>
+      <a id="transform[S]((T)⇒S,(Throwable)⇒Throwable)(ExecutionContext):Future[S]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">transform</span><span class="tparams">[<span name="S">S</span>]</span><span class="params">(<span name="s">s: (<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>) ⇒ <span class="extype" name="scala.concurrent.Future.transform.S">S</span></span>, <span name="f">f: (<span class="extype" name="scala.Throwable">Throwable</span>) ⇒ <span class="extype" name="scala.Throwable">Throwable</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.transform.S">S</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@transform[S](s:T=&gt;S,f:Throwable=&gt;Throwable)(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[S]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle#value" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="value:Option[scala.util.Try[T]]"></a>
+      <a id="value:Option[Try[T]]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">value</span><span class="result">: <span class="extype" name="scala.Option">Option</span>[<span class="extype" name="scala.util.Try">Try</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@value:Option[scala.util.Try[T]]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> The result value of the job.</p><div class="fullcomment"><div class="comment cmt"><p> The result value of the job.</p><p> If the job is not completed the returned value will be <code>None</code>.
+ If the job is completed the value will be <code>Some(Success(t))</code>.
+ if it contains a valid result, or <code>Some(Failure(error))</code> if it contains
+ an exception.
+</p></div><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle">ScalaJobHandle</a> → Future</dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait():Unit"></a>
+      <a id="wait():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@wait():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long,x$2:Int):Unit"></a>
+      <a id="wait(Long,Int):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>, <span name="arg1">arg1: <span class="extype" name="scala.Int">Int</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@wait(x$1:Long,x$2:Int):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long):Unit"></a>
+      <a id="wait(Long):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@wait(x$1:Long):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.concurrent.Future#withFilter" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="withFilter(p:&lt;?&gt;)(implicitexecutor:&lt;?&gt;):scala.concurrent.Future[T]"></a>
+      <a id="withFilter((T)⇒Boolean)(ExecutionContext):Future[T]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">withFilter</span><span class="params">(<span name="p">p: (<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>) ⇒ <span class="extype" name="scala.Boolean">Boolean</span></span>)</span><span class="params">(<span class="implicit">implicit </span><span name="executor">executor: <span class="extype" name="scala.concurrent.ExecutionContext">ExecutionContext</span></span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@withFilter(p:T=&gt;Boolean)(implicitexecutor:scala.concurrent.ExecutionContext):scala.concurrent.Future[T]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li><li name="scala.concurrent.Future#zip" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="zip[U&lt;:&lt;?&gt;](that:&lt;?&gt;):scala.concurrent.Future[(T,U)]"></a>
+      <a id="zip[U](Future[U]):Future[(T,U)]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">zip</span><span class="tparams">[<span name="U">U</span>]</span><span class="params">(<span name="that">that: <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="scala.concurrent.Future.zip.U">U</span>]</span>)</span><span class="result">: <span class="extype" name="scala.concurrent.Future">Future</span>[(<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>, <span class="extype" name="scala.concurrent.Future.zip.U">U</span>)]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.ScalaJobHandle@zip[U](that:scala.concurrent.Future[U]):scala.concurrent.Future[(T,U)]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Future</dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        <div class="parent" name="scala.concurrent.Future">
+              <h3>Inherited from <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]</h3>
+            </div><div class="parent" name="scala.concurrent.Awaitable">
+              <h3>Inherited from <span class="extype" name="scala.concurrent.Awaitable">Awaitable</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]</h3>
+            </div><div class="parent" name="scala.AnyRef">
+              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
+            </div><div class="parent" name="scala.Any">
+              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
+            </div>
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/package$$ScalaWrapper.html b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/package$$ScalaWrapper.html
new file mode 100644
index 0000000..8747afb
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/package$$ScalaWrapper.html
@@ -0,0 +1,523 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>ScalaWrapper - livy-scala-api-parent 0.7.0-incubating API - org.apache.livy.scalaapi.ScalaWrapper</title>
+          <meta name="description" content="ScalaWrapper - livy - scala - api - parent 0.7.0 - incubating API - org.apache.livy.scalaapi.ScalaWrapper" />
+          <meta name="keywords" content="ScalaWrapper livy scala api parent 0.7.0 incubating API org.apache.livy.scalaapi.ScalaWrapper" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../../../../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../../../../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../../../../lib/template.js"></script>
+      <script type="text/javascript" src="../../../../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../../index.html';
+            var hash = 'org.apache.livy.scalaapi.package$$ScalaWrapper';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="type">
+      <div id="definition">
+        <img alt="Class" src="../../../../lib/class_big.png" />
+        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.livy">livy</a>.<a href="package.html" class="extype" name="org.apache.livy.scalaapi">scalaapi</a></p>
+        <h1>ScalaWrapper</h1><h3><span class="morelinks"><div>Related Doc:
+            <a href="package.html" class="extype" name="org.apache.livy.scalaapi">package scalaapi</a>
+          </div></span></h3><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">implicit </span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ScalaWrapper</span><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"><div class="comment cmt"><p> A Scala Client for Livy which is a wrapper over the Java client.</p></div><div class="toggleContainer block">
+          <span class="toggle">Linear Supertypes</span>
+          <div class="superTypes hiddenContent"><span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
+        </div></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        <div id="order">
+              <span class="filtertype">Ordering</span>
+              <ol>
+                
+                <li class="alpha in"><span>Alphabetic</span></li>
+                <li class="inherit out"><span>By Inheritance</span></li>
+              </ol>
+            </div>
+        <div id="ancestors">
+                <span class="filtertype">Inherited<br />
+                </span>
+                <ol id="linearization">
+                  <li class="in" name="org.apache.livy.scalaapi.ScalaWrapper"><span>ScalaWrapper</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
+                </ol>
+              </div><div id="ancestors">
+            <span class="filtertype"></span>
+            <ol>
+              <li class="hideall out"><span>Hide All</span></li>
+              <li class="showall in"><span>Show All</span></li>
+            </ol>
+          </div>
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        <div id="constructors" class="members">
+              <h3>Instance Constructors</h3>
+              <ol><li name="org.apache.livy.scalaapi.ScalaWrapper#&lt;init&gt;" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="&lt;init&gt;(livyJavaClient:org.apache.livy.LivyClient):org.apache.livy.scalaapi.package.ScalaWrapper"></a>
+      <a id="&lt;init&gt;:ScalaWrapper"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">new</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ScalaWrapper</span><span class="params">(<span name="livyJavaClient">livyJavaClient: <span class="extype" name="org.apache.livy.LivyClient">LivyClient</span></span>)</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@&lt;init&gt;(livyJavaClient:org.apache.livy.LivyClient):org.apache.livy.scalaapi.package.ScalaWrapper" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">Creates a Scala client.</p><div class="fullcomment"><div class="comment cmt"><p>Creates a Scala client.</p></div><dl class="paramcmts block"><dt class="param">livyJavaClient</dt><dd class="cmt"><p>the Java client of Livy.</p><pre><span class="kw">import</span> org.apache.livy._
+<span class="kw">import</span> org.apache.livy.scalaapi._
+<span class="kw">val</span> url = <span class="lit">"http://example.com"</span>
+<span class="kw">val</span> livyJavaClient = <span class="kw">new</span> LivyClientBuilder(<span class="kw">false</span>).setURI(<span class="kw">new</span> URI(url))).build()
+<span class="kw">val</span> livyScalaClient = livyJavaClient.asScalaClient</pre></dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="scala.AnyRef#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:Any):Boolean"></a>
+      <a id="!=(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@!=(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef###" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="##():Int"></a>
+      <a id="##():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $hash$hash" class="name">##</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@##():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:Any):Boolean"></a>
+      <a id="==(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@==(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.Any#asInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="asInstanceOf[T0]:T0"></a>
+      <a id="asInstanceOf[T0]:T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">asInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Any.asInstanceOf.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@asInstanceOf[T0]:T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaWrapper#asScalaClient" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="asScalaClient:org.apache.livy.scalaapi.LivyScalaClient"></a>
+      <a id="asScalaClient:LivyScalaClient"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">asScalaClient</span><span class="result">: <a href="LivyScalaClient.html" class="extype" name="org.apache.livy.scalaapi.LivyScalaClient">LivyScalaClient</a></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@asScalaClient:org.apache.livy.scalaapi.LivyScalaClient" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      
+    </li><li name="scala.AnyRef#clone" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="clone():Object"></a>
+      <a id="clone():AnyRef"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">clone</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@clone():Object" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.CloneNotSupportedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#eq" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="eq(x$1:AnyRef):Boolean"></a>
+      <a id="eq(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">eq</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@eq(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#equals" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="equals(x$1:Any):Boolean"></a>
+      <a id="equals(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">equals</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@equals(x$1:Any):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#finalize" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="finalize():Unit"></a>
+      <a id="finalize():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">finalize</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@finalize():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[java.lang.Throwable]</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#getClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="getClass():Class[_]"></a>
+      <a id="getClass():Class[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">getClass</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.Class">Class</span>[_]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@getClass():Class[_]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#hashCode" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="hashCode():Int"></a>
+      <a id="hashCode():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">hashCode</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@hashCode():Int" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.Any#isInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@isInstanceOf[T0]:Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef#ne" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ne(x$1:AnyRef):Boolean"></a>
+      <a id="ne(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@ne(x$1:AnyRef):Boolean" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notify" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notify():Unit"></a>
+      <a id="notify():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notify</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@notify():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notifyAll" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notifyAll():Unit"></a>
+      <a id="notifyAll():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notifyAll</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@notifyAll():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#synchronized" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="synchronized[T0](x$1:=&gt;T0):T0"></a>
+      <a id="synchronized[T0](⇒T0):T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">synchronized</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="params">(<span name="arg0">arg0: ⇒ <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>)</span><span class="result">: <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@synchronized[T0](x$1:=&gt;T0):T0" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#toString" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="toString():String"></a>
+      <a id="toString():String"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">toString</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.String">String</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@toString():String" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait():Unit"></a>
+      <a id="wait():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@wait():Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long,x$2:Int):Unit"></a>
+      <a id="wait(Long,Int):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>, <span name="arg1">arg1: <span class="extype" name="scala.Int">Int</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@wait(x$1:Long,x$2:Int):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long):Unit"></a>
+      <a id="wait(Long):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package$$ScalaWrapper@wait(x$1:Long):Unit" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        <div class="parent" name="scala.AnyRef">
+              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
+            </div><div class="parent" name="scala.Any">
+              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
+            </div>
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/package.html b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/package.html
new file mode 100644
index 0000000..3bf7623
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/apache/livy/scalaapi/package.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>scalaapi - livy-scala-api-parent 0.7.0-incubating API - org.apache.livy.scalaapi</title>
+          <meta name="description" content="scalaapi - livy - scala - api - parent 0.7.0 - incubating API - org.apache.livy.scalaapi" />
+          <meta name="keywords" content="scalaapi livy scala api parent 0.7.0 incubating API org.apache.livy.scalaapi" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../../../../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../../../../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../../../../lib/template.js"></script>
+      <script type="text/javascript" src="../../../../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../../index.html';
+            var hash = 'org.apache.livy.scalaapi.package';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="value">
+      <div id="definition">
+        <img alt="Package" src="../../../../lib/package_big.png" />
+        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.livy">livy</a></p>
+        <h1>scalaapi</h1><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <span class="name">scalaapi</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"><div class="toggleContainer block">
+          <span class="toggle">Linear Supertypes</span>
+          <div class="superTypes hiddenContent"><span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
+        </div></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        <div id="order">
+              <span class="filtertype">Ordering</span>
+              <ol>
+                
+                <li class="alpha in"><span>Alphabetic</span></li>
+                <li class="inherit out"><span>By Inheritance</span></li>
+              </ol>
+            </div>
+        <div id="ancestors">
+                <span class="filtertype">Inherited<br />
+                </span>
+                <ol id="linearization">
+                  <li class="in" name="org.apache.livy.scalaapi"><span>scalaapi</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
+                </ol>
+              </div><div id="ancestors">
+            <span class="filtertype"></span>
+            <ol>
+              <li class="hideall out"><span>Hide All</span></li>
+              <li class="showall in"><span>Show All</span></li>
+            </ol>
+          </div>
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        
+
+        <div id="types" class="types members">
+              <h3>Type Members</h3>
+              <ol><li name="org.apache.livy.scalaapi.LivyScalaClient" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="LivyScalaClientextendsAnyRef"></a>
+      <a id="LivyScalaClient:LivyScalaClient"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <a href="LivyScalaClient.html"><span class="name">LivyScalaClient</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package@LivyScalaClientextendsAnyRef" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt">A client for submitting Spark-based jobs to a Livy backend.</p>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobContext" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="ScalaJobContextextendsAnyRef"></a>
+      <a id="ScalaJobContext:ScalaJobContext"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <a href="ScalaJobContext.html"><span class="name">ScalaJobContext</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package@ScalaJobContextextendsAnyRef" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> Holds runtime information about the job execution context.</p>
+    </li><li name="org.apache.livy.scalaapi.ScalaJobHandle" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ScalaJobHandle[T]extendsFuture[T]"></a>
+      <a id="ScalaJobHandle[T]:ScalaJobHandle[T]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <a href="ScalaJobHandle.html"><span class="name">ScalaJobHandle</span></a><span class="tparams">[<span name="T">T</span>]</span><span class="result"> extends <span class="extype" name="scala.concurrent.Future">Future</span>[<span class="extype" name="org.apache.livy.scalaapi.ScalaJobHandle.T">T</span>]</span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package@ScalaJobHandle[T]extendsFuture[T]" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> A handle to a submitted job.</p><div class="fullcomment"><div class="comment cmt"><p> A handle to a submitted job. Allows for monitoring and controlling of the running remote job.
+</p></div></div>
+    </li><li name="org.apache.livy.scalaapi.ScalaWrapper" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="ScalaWrapperextendsAnyRef"></a>
+      <a id="ScalaWrapper:ScalaWrapper"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">implicit </span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <a href="package$$ScalaWrapper.html"><span class="name">ScalaWrapper</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../../../index.html#org.apache.livy.scalaapi.package@ScalaWrapperextendsAnyRef" title="Permalink" target="_top">
+        <img src="../../../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      <p class="shortcomment cmt"> A Scala Client for Livy which is a wrapper over the Java client.</p>
+    </li></ol>
+            </div>
+
+        
+
+        
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        <div class="parent" name="scala.AnyRef">
+              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
+            </div><div class="parent" name="scala.Any">
+              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
+            </div>
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/org/apache/package.html b/site/docs/0.7.0-incubating/api/scala/org/apache/package.html
new file mode 100644
index 0000000..1e9628c
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/apache/package.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>apache - livy-scala-api-parent 0.7.0-incubating API - org.apache</title>
+          <meta name="description" content="apache - livy - scala - api - parent 0.7.0 - incubating API - org.apache" />
+          <meta name="keywords" content="apache livy scala api parent 0.7.0 incubating API org.apache" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../../lib/template.js"></script>
+      <script type="text/javascript" src="../../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../index.html';
+            var hash = 'org.apache.package';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="value">
+      <div id="definition">
+        <img alt="Package" src="../../lib/package_big.png" />
+        <p id="owner"><a href="../package.html" class="extype" name="org">org</a></p>
+        <h1>apache</h1><span class="permalink">
+      <a href="../../index.html#org.apache.package" title="Permalink" target="_top">
+        <img src="../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <span class="name">apache</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        
+        
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="org.apache.livy" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="livy"></a>
+      <a id="livy:livy"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <a href="livy/package.html"><span class="name">livy</span></a>
+      </span>
+      </h4><span class="permalink">
+      <a href="../../index.html#org.apache.package@livy" title="Permalink" target="_top">
+        <img src="../../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/org/package.html b/site/docs/0.7.0-incubating/api/scala/org/package.html
new file mode 100644
index 0000000..0bdfe2a
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/org/package.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>org - livy-scala-api-parent 0.7.0-incubating API - org</title>
+          <meta name="description" content="org - livy - scala - api - parent 0.7.0 - incubating API - org" />
+          <meta name="keywords" content="org livy scala api parent 0.7.0 incubating API org" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="../lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="../lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="../lib/template.js"></script>
+      <script type="text/javascript" src="../lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../index.html';
+            var hash = 'org.package';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="value">
+      <div id="definition">
+        <img alt="Package" src="../lib/package_big.png" />
+        
+        <h1>org</h1><span class="permalink">
+      <a href="../index.html#org.package" title="Permalink" target="_top">
+        <img src="../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <span class="name">org</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        
+        
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="org.apache" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="apache"></a>
+      <a id="apache:apache"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <a href="apache/package.html"><span class="name">apache</span></a>
+      </span>
+      </h4><span class="permalink">
+      <a href="../index.html#org.package@apache" title="Permalink" target="_top">
+        <img src="../lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/api/scala/package.html b/site/docs/0.7.0-incubating/api/scala/package.html
new file mode 100644
index 0000000..b6494f6
--- /dev/null
+++ b/site/docs/0.7.0-incubating/api/scala/package.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html >
+<html>
+        <head>
+          <title>root - livy-scala-api-parent 0.7.0-incubating API - _root_</title>
+          <meta name="description" content="root - livy - scala - api - parent 0.7.0 - incubating API - root " />
+          <meta name="keywords" content="root livy scala api parent 0.7.0 incubating API root " />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript" src="lib/jquery.js" id="jquery-js"></script>
+      <script type="text/javascript" src="lib/jquery-ui.js"></script>
+      <script type="text/javascript" src="lib/template.js"></script>
+      <script type="text/javascript" src="lib/tools.tooltip.js"></script>
+      
+      <script type="text/javascript">
+         if(top === self) {
+            var url = 'index.html';
+            var hash = 'package';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="value">
+      <div id="definition">
+        <img alt="Package" src="lib/package_big.png" />
+        
+        <h1>root package</h1><span class="permalink">
+      <a href="index.html#package" title="Permalink" target="_top">
+        <img src="lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <span class="name">root</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        
+        
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        
+
+        
+
+        
+
+        <div id="values" class="values members">
+              <h3>Value Members</h3>
+              <ol><li name="_root_.org" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="org"></a>
+      <a id="org:org"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">package</span>
+      </span>
+      <span class="symbol">
+        <a href="org/package.html"><span class="name">org</span></a>
+      </span>
+      </h4><span class="permalink">
+      <a href="index.html#package@org" title="Permalink" target="_top">
+        <img src="lib/permalink.png" alt="Permalink" />
+      </a>
+    </span>
+      
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+
+
+    </body>
+      </html>
diff --git a/site/docs/0.7.0-incubating/index.html b/site/docs/0.7.0-incubating/index.html
new file mode 100644
index 0000000..61cbe40
--- /dev/null
+++ b/site/docs/0.7.0-incubating/index.html
@@ -0,0 +1,175 @@
+
+
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Livy Docs</title>
+    
+    <meta name="author" content="">
+
+    <!-- Enable responsive viewport -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="/assets/themes/apache/bootstrap/css/bootstrap.css" rel="stylesheet">
+    <link href="/assets/themes/apache/css/style.css?body=1" rel="stylesheet" type="text/css">
+    <link href="/assets/themes/apache/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" />
+    <!-- Le fav and touch icons -->
+    <!-- Update these with your own images
+    <link rel="shortcut icon" href="images/favicon.ico">
+    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
+  -->
+
+  </head>
+
+  <body>
+
+        <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/">
+              <img src="/assets/themes/apache/img/logo.png" width="50">
+              Apache Livy
+            <span class="version">0.7.0-incubating</span>
+          </a>
+        </div>
+
+          <nav class="navbar-collapse collapse" role="navigation">
+              <ul class="nav navbar-nav navbar-right">
+                  
+                  <li id="documentation">
+                      
+                      <a href="#" data-toggle="dropdown" class="dropdown-toggle">Documentation<b class="caret"></b></a>
+                      <ul class="dropdown-menu dropdown-left">
+                          
+                          
+                          <li><a href="rest-api.html" target="_self">REST API</a></li>
+                          
+                          
+                          <li><a href="programmatic-api.html" target="_self">Programmatic API</a></li>
+                          
+                          
+                          <li><a href="api/java/index.html" target="_self">Java API Docs</a></li>
+                          
+                          
+                          <li><a href="api/scala/index.html#org.apache.livy.scalaapi.package" target="_self">Scala API Docs</a></li>
+                          
+                      </ul>
+                      
+                  </li>
+                  
+                  <li id="apache">
+                      
+                      <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
+                      <ul class="dropdown-menu dropdown-left">
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/how-it-works.html" target="_blank">Apache Software Foundation</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/licenses/" target="_blank">Apache License</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
+                          
+                      </ul>
+                      
+                  </li>
+                  
+              </ul>
+          </nav><!--/.navbar-collapse -->
+
+      </div>
+    </div>
+
+
+    <div class="container">
+      
+
+<!--<div class="hero-unit Livy Docs">
+  <h1> <small>Documentation</small></h1>
+</div>
+-->
+
+<div class="row">
+  <div class="col-md-12">
+    <!--
+
+-->
+
+<h1 id="apache-livy-documentation">Apache Livy Documentation</h1>
+
+<h3 id="rest-api"><a href="rest-api.html">REST API</a></h3>
+
+<h3 id="programmatic-api"><a href="programmatic-api.html">Programmatic API</a></h3>
+
+  </div>
+</div>
+
+
+      <hr>
+      <footer>
+        <!-- <p>&copy; 2020 </p>-->
+        <footer class="site-footer">
+    <div class="wrapper">
+        <div class="footer-col-wrapper">
+            
+            Apache Livy is an effort undergoing <a href="https://incubator.apache.org/index.html">Incubation</a>
+            at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly
+            accepted projects until a further review indicates that the infrastructure, communications, and decision
+            making process have stabilized in a manner consistent with other successful ASF projects. While incubation
+            status is not necessarily a reflection of the completeness or stability of the code, it does indicate that
+            the project has yet to be fully endorsed by the ASF.
+            <hr>
+            
+            <div style="text-align:center;">
+                
+                <div style="margin-top: 20px; margin-bottom: 20px;">
+                    <a href="http://incubator.apache.org"><img src="/assets/themes/apache/img/egg-logo.png"
+                                                               alt="Apache Incubator"
+                                                               height="30%" width="30%"/></a>
+                </div>
+                
+                <div>
+                    Copyright &copy; 2017 <a href="http://www.apache.org">The Apache Software Foundation</a>.
+                    Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
+                    2.0</a>.
+                    <br>
+                    
+                    Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache
+                    Software Foundation.
+                    
+                </div>
+            </div>
+        </div>
+    </div>
+</footer>
+
+      </footer>
+    </div>
+
+    <script src="/assets/themes/apache/jquery/jquery-2.1.1.min.js"></script>
+
+    <script src="/assets/themes/apache/bootstrap/js/bootstrap.min.js"></script>
+
+
+  </body>
+</html>
+
diff --git a/site/docs/0.7.0-incubating/programmatic-api.html b/site/docs/0.7.0-incubating/programmatic-api.html
new file mode 100644
index 0000000..7034ed1
--- /dev/null
+++ b/site/docs/0.7.0-incubating/programmatic-api.html
@@ -0,0 +1,256 @@
+
+
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Livy Docs - Programmatic API</title>
+    
+    <meta name="author" content="">
+
+    <!-- Enable responsive viewport -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="/assets/themes/apache/bootstrap/css/bootstrap.css" rel="stylesheet">
+    <link href="/assets/themes/apache/css/style.css?body=1" rel="stylesheet" type="text/css">
+    <link href="/assets/themes/apache/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" />
+    <!-- Le fav and touch icons -->
+    <!-- Update these with your own images
+    <link rel="shortcut icon" href="images/favicon.ico">
+    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
+  -->
+
+  </head>
+
+  <body>
+
+        <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/">
+              <img src="/assets/themes/apache/img/logo.png" width="50">
+              Apache Livy
+            <span class="version">0.7.0-incubating</span>
+          </a>
+        </div>
+
+          <nav class="navbar-collapse collapse" role="navigation">
+              <ul class="nav navbar-nav navbar-right">
+                  
+                  <li id="documentation">
+                      
+                      <a href="#" data-toggle="dropdown" class="dropdown-toggle">Documentation<b class="caret"></b></a>
+                      <ul class="dropdown-menu dropdown-left">
+                          
+                          
+                          <li><a href="rest-api.html" target="_self">REST API</a></li>
+                          
+                          
+                          <li><a href="programmatic-api.html" target="_self">Programmatic API</a></li>
+                          
+                          
+                          <li><a href="api/java/index.html" target="_self">Java API Docs</a></li>
+                          
+                          
+                          <li><a href="api/scala/index.html#org.apache.livy.scalaapi.package" target="_self">Scala API Docs</a></li>
+                          
+                      </ul>
+                      
+                  </li>
+                  
+                  <li id="apache">
+                      
+                      <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
+                      <ul class="dropdown-menu dropdown-left">
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/how-it-works.html" target="_blank">Apache Software Foundation</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/licenses/" target="_blank">Apache License</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
+                          
+                      </ul>
+                      
+                  </li>
+                  
+              </ul>
+          </nav><!--/.navbar-collapse -->
+
+      </div>
+    </div>
+
+
+    <div class="container">
+      
+
+<!--<div class="hero-unit Livy Docs - Programmatic API">
+  <h1> <small>Programmatic API</small></h1>
+</div>
+-->
+
+<div class="row">
+  <div class="col-md-12">
+    <!--
+
+-->
+
+<h2 id="using-the-programmatic-api">Using the Programmatic API</h2>
+
+<p>Livy provides a programmatic Java/Scala and Python API that allows applications to run code inside
+Spark without having to maintain a local Spark context. Here shows how to use the Java API.</p>
+
+<p>Add the Livy client dependency to your application’s POM:</p>
+
+<div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="nt">&lt;dependency&gt;</span>
+  <span class="nt">&lt;groupId&gt;</span>org.apache.livy<span class="nt">&lt;/groupId&gt;</span>
+  <span class="nt">&lt;artifactId&gt;</span>livy-client-http<span class="nt">&lt;/artifactId&gt;</span>
+  <span class="nt">&lt;version&gt;</span>0.7.0-incubating<span class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+</code></pre>
+</div>
+
+<p>To be able to compile code that uses Spark APIs, also add the correspondent Spark dependencies.</p>
+
+<p>To run Spark jobs within your applications, extend <code class="highlighter-rouge">org.apache.livy.Job</code> and implement
+the functionality you need. Here’s an example job that calculates an approximate value for Pi:</p>
+
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">java.util.*</span><span class="o">;</span>
+
+<span class="kn">import</span> <span class="nn">org.apache.spark.api.java.*</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.spark.api.java.function.*</span><span class="o">;</span>
+
+<span class="kn">import</span> <span class="nn">org.apache.livy.*</span><span class="o">;</span>
+
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">PiJob</span> <span class="kd">implements</span> <span class="n">Job</span><span class="o">&lt;</span><span class="n">Double</span><span class="o">&gt;,</span> <span class="n">Function</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">&gt;,</span>
+  <span class="n">Function2</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">&gt;</span> <span class="o">{</span>
+
+  <span class="kd">private</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">samples</span><span class="o">;</span>
+
+  <span class="kd">public</span> <span class="nf">PiJob</span><span class="o">(</span><span class="kt">int</span> <span class="n">samples</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">this</span><span class="o">.</span><span class="na">samples</span> <span class="o">=</span> <span class="n">samples</span><span class="o">;</span>
+  <span class="o">}</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="n">Double</span> <span class="nf">call</span><span class="o">(</span><span class="n">JobContext</span> <span class="n">ctx</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
+    <span class="n">List</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span> <span class="n">sampleList</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;();</span>
+    <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">samples</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
+      <span class="n">sampleList</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="k">return</span> <span class="mf">4.0d</span> <span class="o">*</span> <span class="n">ctx</span><span class="o">.</span><span class="na">sc</span><span class="o">().</span><span class="na">parallelize</span><span class="o">(</span><span class="n">sampleList</span><span class="o">).</span><span class="na">map</span><span class="o">(</span><span class="k">this</span><span class="o">).</span><span class="na">reduce</span><span class="o">(</span><span class="k">this</span><span class="o">)</span> <span class="o">/</span> <span class="n">samples</span><span class="o">;</span>
+  <span class="o">}</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="n">Integer</span> <span class="nf">call</span><span class="o">(</span><span class="n">Integer</span> <span class="n">v1</span><span class="o">)</span> <span class="o">{</span>
+    <span class="kt">double</span> <span class="n">x</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">random</span><span class="o">();</span>
+    <span class="kt">double</span> <span class="n">y</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">random</span><span class="o">();</span>
+    <span class="k">return</span> <span class="o">(</span><span class="n">x</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="o">*</span><span class="n">y</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="o">)</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">0</span><span class="o">;</span>
+  <span class="o">}</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="n">Integer</span> <span class="nf">call</span><span class="o">(</span><span class="n">Integer</span> <span class="n">v1</span><span class="o">,</span> <span class="n">Integer</span> <span class="n">v2</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">return</span> <span class="n">v1</span> <span class="o">+</span> <span class="n">v2</span><span class="o">;</span>
+  <span class="o">}</span>
+
+<span class="o">}</span>
+</code></pre>
+</div>
+
+<p>To submit this code using Livy, create a LivyClient instance and upload your application code to
+the Spark context. Here’s an example of code that submits the above job and prints the computed
+value:</p>
+
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">LivyClient</span> <span class="n">client</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LivyClientBuilder</span><span class="o">()</span>
+  <span class="o">.</span><span class="na">setURI</span><span class="o">(</span><span class="k">new</span> <span class="n">URI</span><span class="o">(</span><span class="n">livyUrl</span><span class="o">))</span>
+  <span class="o">.</span><span class="na">build</span><span class="o">();</span>
+
+<span class="k">try</span> <span class="o">{</span>
+  <span class="n">System</span><span class="o">.</span><span class="na">err</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Uploading %s to the Spark context...\n"</span><span class="o">,</span> <span class="n">piJar</span><span class="o">);</span>
+  <span class="n">client</span><span class="o">.</span><span class="na">uploadJar</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="n">piJar</span><span class="o">)).</span><span class="na">get</span><span class="o">();</span>
+
+  <span class="n">System</span><span class="o">.</span><span class="na">err</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Running PiJob with %d samples...\n"</span><span class="o">,</span> <span class="n">samples</span><span class="o">);</span>
+  <span class="kt">double</span> <span class="n">pi</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">submit</span><span class="o">(</span><span class="k">new</span> <span class="n">PiJob</span><span class="o">(</span><span class="n">samples</span><span class="o">)).</span><span class="na">get</span><span class="o">();</span>
+
+  <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Pi is roughly: "</span> <span class="o">+</span> <span class="n">pi</span><span class="o">);</span>
+<span class="o">}</span> <span class="k">finally</span> <span class="o">{</span>
+  <span class="n">client</span><span class="o">.</span><span class="na">stop</span><span class="o">(</span><span class="kc">true</span><span class="o">);</span>
+<span class="o">}</span>
+</code></pre>
+</div>
+
+<p>To learn about all the functionality available to applications, read the javadoc documentation for
+the classes under the <code class="highlighter-rouge">api</code> module.</p>
+
+  </div>
+</div>
+
+
+      <hr>
+      <footer>
+        <!-- <p>&copy; 2020 </p>-->
+        <footer class="site-footer">
+    <div class="wrapper">
+        <div class="footer-col-wrapper">
+            
+            Apache Livy is an effort undergoing <a href="https://incubator.apache.org/index.html">Incubation</a>
+            at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly
+            accepted projects until a further review indicates that the infrastructure, communications, and decision
+            making process have stabilized in a manner consistent with other successful ASF projects. While incubation
+            status is not necessarily a reflection of the completeness or stability of the code, it does indicate that
+            the project has yet to be fully endorsed by the ASF.
+            <hr>
+            
+            <div style="text-align:center;">
+                
+                <div style="margin-top: 20px; margin-bottom: 20px;">
+                    <a href="http://incubator.apache.org"><img src="/assets/themes/apache/img/egg-logo.png"
+                                                               alt="Apache Incubator"
+                                                               height="30%" width="30%"/></a>
+                </div>
+                
+                <div>
+                    Copyright &copy; 2017 <a href="http://www.apache.org">The Apache Software Foundation</a>.
+                    Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
+                    2.0</a>.
+                    <br>
+                    
+                    Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache
+                    Software Foundation.
+                    
+                </div>
+            </div>
+        </div>
+    </div>
+</footer>
+
+      </footer>
+    </div>
+
+    <script src="/assets/themes/apache/jquery/jquery-2.1.1.min.js"></script>
+
+    <script src="/assets/themes/apache/bootstrap/js/bootstrap.min.js"></script>
+
+
+  </body>
+</html>
+
diff --git a/site/docs/0.7.0-incubating/rest-api.html b/site/docs/0.7.0-incubating/rest-api.html
new file mode 100644
index 0000000..550a8b2
--- /dev/null
+++ b/site/docs/0.7.0-incubating/rest-api.html
@@ -0,0 +1,968 @@
+
+
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Livy Docs - REST API</title>
+    
+    <meta name="author" content="">
+
+    <!-- Enable responsive viewport -->
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="/assets/themes/apache/bootstrap/css/bootstrap.css" rel="stylesheet">
+    <link href="/assets/themes/apache/css/style.css?body=1" rel="stylesheet" type="text/css">
+    <link href="/assets/themes/apache/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" />
+    <!-- Le fav and touch icons -->
+    <!-- Update these with your own images
+    <link rel="shortcut icon" href="images/favicon.ico">
+    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
+  -->
+
+  </head>
+
+  <body>
+
+        <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/">
+              <img src="/assets/themes/apache/img/logo.png" width="50">
+              Apache Livy
+            <span class="version">0.7.0-incubating</span>
+          </a>
+        </div>
+
+          <nav class="navbar-collapse collapse" role="navigation">
+              <ul class="nav navbar-nav navbar-right">
+                  
+                  <li id="documentation">
+                      
+                      <a href="#" data-toggle="dropdown" class="dropdown-toggle">Documentation<b class="caret"></b></a>
+                      <ul class="dropdown-menu dropdown-left">
+                          
+                          
+                          <li><a href="rest-api.html" target="_self">REST API</a></li>
+                          
+                          
+                          <li><a href="programmatic-api.html" target="_self">Programmatic API</a></li>
+                          
+                          
+                          <li><a href="api/java/index.html" target="_self">Java API Docs</a></li>
+                          
+                          
+                          <li><a href="api/scala/index.html#org.apache.livy.scalaapi.package" target="_self">Scala API Docs</a></li>
+                          
+                      </ul>
+                      
+                  </li>
+                  
+                  <li id="apache">
+                      
+                      <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
+                      <ul class="dropdown-menu dropdown-left">
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/how-it-works.html" target="_blank">Apache Software Foundation</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/licenses/" target="_blank">Apache License</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></li>
+                          
+                          
+                          <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
+                          
+                      </ul>
+                      
+                  </li>
+                  
+              </ul>
+          </nav><!--/.navbar-collapse -->
+
+      </div>
+    </div>
+
+
+    <div class="container">
+      
+
+<!--<div class="hero-unit Livy Docs - REST API">
+  <h1> <small>REST API</small></h1>
+</div>
+-->
+
+<div class="row">
+  <div class="col-md-12">
+    <!--
+
+-->
+
+<h2 id="rest-api">REST API</h2>
+
+<h3 id="get-sessions">GET /sessions</h3>
+
+<p>Returns all the active interactive sessions.</p>
+
+<h4 id="request-parameters">Request Parameters</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>from</td>
+    <td>The start index to fetch sessions</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Number of sessions to fetch</td>
+    <td>int</td>
+  </tr>
+</table>
+
+<h4 id="response-body">Response Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>from</td>
+    <td>The start index to fetch sessions</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>total</td>
+    <td>Number of sessions to fetch</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>sessions</td>
+    <td><a href="#session">Session</a> list</td>
+    <td>list</td>
+  </tr>
+</table>
+
+<h3 id="post-sessions">POST /sessions</h3>
+
+<p>Creates a new interactive Scala, Python, or R shell in the cluster.</p>
+
+<h4 id="request-body">Request Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>kind</td>
+    <td>The session kind<sup><a href="#footnote1">[1]</a></sup></td>
+    <td><a href="#session-kind">session kind</a></td>
+  </tr>
+  <tr>
+    <td>proxyUser</td>
+    <td>User to impersonate when starting the session</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>jars</td>
+    <td>jars to be used in this session</td>
+    <td>List of string</td>
+  </tr>
+  <tr>
+    <td>pyFiles</td>
+    <td>Python files to be used in this session</td>
+    <td>List of string</td>
+  </tr>
+  <tr>
+    <td>files</td>
+    <td>files to be used in this session</td>
+    <td>List of string</td>
+  </tr>
+  <tr>
+    <td>driverMemory</td>
+    <td>Amount of memory to use for the driver process</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>driverCores</td>
+    <td>Number of cores to use for the driver process</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>executorMemory</td>
+    <td>Amount of memory to use per executor process</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>executorCores</td>
+    <td>Number of cores to use for each executor</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>numExecutors</td>
+    <td>Number of executors to launch for this session</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>archives</td>
+    <td>Archives to be used in this session</td>
+    <td>List of string</td>
+  </tr>
+  <tr>
+    <td>queue</td>
+    <td>The name of the YARN queue to which submitted</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>name</td>
+    <td>The name of this session</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>conf</td>
+    <td>Spark configuration properties</td>
+    <td>Map of key=val</td>
+  </tr>
+  <tr>
+    <td>heartbeatTimeoutInSecond</td>
+    <td>Timeout in second to which session be orphaned</td>
+    <td>int</td>
+  </tr>
+</table>
+
+<p><a id="footnote1">1</a>: Starting with version 0.5.0-incubating this field is not required. To be
+compatible with previous versions users can still specify this with spark, pyspark or sparkr,
+implying that the submitted code snippet is the corresponding kind.</p>
+
+<h4 id="response-body-1">Response Body</h4>
+
+<p>The created <a href="#session">Session</a>.</p>
+
+<h3 id="get-sessionssessionid">GET /sessions/{sessionId}</h3>
+
+<p>Returns the session information.</p>
+
+<h4 id="response-body-2">Response Body</h4>
+
+<p>The <a href="#session">Session</a>.</p>
+
+<h3 id="get-sessionssessionidstate">GET /sessions/{sessionId}/state</h3>
+
+<p>Returns the state of session</p>
+
+<h4 id="response">Response</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>id</td>
+    <td>Session id</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>state</td>
+    <td>The current state of session</td>
+    <td>string</td>
+  </tr>
+</table>
+
+<h3 id="delete-sessionssessionid">DELETE /sessions/{sessionId}</h3>
+
+<p>Kills the <a href="#session">Session</a> job.</p>
+
+<h3 id="get-sessionssessionidlog">GET /sessions/{sessionId}/log</h3>
+
+<p>Gets the log lines from this session.</p>
+
+<h4 id="request-parameters-1">Request Parameters</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>from</td>
+    <td>Offset</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Max number of log lines to return</td>
+    <td>int</td>
+  </tr>
+</table>
+
+<h4 id="response-body-3">Response Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>id</td>
+    <td>The session id</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>from</td>
+    <td>Offset from start of log</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Max number of log lines</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>log</td>
+    <td>The log lines</td>
+    <td>list of strings</td>
+  </tr>
+</table>
+
+<h3 id="get-sessionssessionidstatements">GET /sessions/{sessionId}/statements</h3>
+
+<p>Returns all the statements in a session.</p>
+
+<h4 id="response-body-4">Response Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>statements</td>
+    <td><a href="#statement">statement</a> list</td>
+    <td>list</td>
+  </tr>
+</table>
+
+<h3 id="post-sessionssessionidstatements">POST /sessions/{sessionId}/statements</h3>
+
+<p>Runs a statement in a session.</p>
+
+<h4 id="request-body-1">Request Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>code</td>
+    <td>The code to execute</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>kind</td>
+    <td>The kind of code to execute<sup><a href="#footnote2">[2]</a></sup></td>
+    <td><a href="#session-kind">code kind</a></td>
+  </tr>
+</table>
+
+<p><a id="footnote2">2</a>: If session kind is not specified or the submitted code is not the kind
+specified in session creation, this field should be filled with correct kind.
+Otherwise Livy will use kind specified in session creation as the default code kind.</p>
+
+<h4 id="response-body-5">Response Body</h4>
+
+<p>The <a href="#statement">statement</a> object.</p>
+
+<h3 id="get-sessionssessionidstatementsstatementid">GET /sessions/{sessionId}/statements/{statementId}</h3>
+
+<p>Returns a specified statement in a session.</p>
+
+<h4 id="response-body-6">Response Body</h4>
+
+<p>The <a href="#statement">statement</a> object.</p>
+
+<h3 id="post-sessionssessionidstatementsstatementidcancel">POST /sessions/{sessionId}/statements/{statementId}/cancel</h3>
+
+<p>Cancel the specified statement in this session.</p>
+
+<h4 id="response-body-7">Response Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>msg</td>
+    <td>is always "canceled"</td>
+    <td>string</td>
+  </tr>
+</table>
+
+<h3 id="post-sessionssessionidcompletion">POST /sessions/{sessionId}/completion</h3>
+
+<p>Runs a statement in a session.</p>
+
+<h4 id="request-body-2">Request Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>code</td>
+    <td>The code for which completion proposals are requested</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>kind</td>
+    <td>The kind of code to execute<sup><a href="#footnote2">[2]</a></sup></td>
+    <td><a href="#session-kind">code kind</a></td>
+  </tr>
+  <tr>
+    <td>cursor</td>
+    <td>cursor position to get proposals</td>
+    <td>string</td>
+  </tr>
+</table>
+
+<h4 id="response-body-8">Response Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>candidates</td>
+    <td>Code completions proposals</td>
+    <td>array[string]</td>
+  </tr>
+</table>
+
+<h3 id="get-batches">GET /batches</h3>
+
+<p>Returns all the active batch sessions.</p>
+
+<h4 id="request-parameters-2">Request Parameters</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>from</td>
+    <td>The start index to fetch sessions</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Number of sessions to fetch</td>
+    <td>int</td>
+  </tr>
+</table>
+
+<h4 id="response-body-9">Response Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>from</td>
+    <td>The start index of fetched sessions</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>total</td>
+    <td>Number of sessions fetched</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>sessions</td>
+    <td><a href="#batch">Batch</a> list</td>
+    <td>list</td>
+  </tr>
+</table>
+
+<h3 id="post-batches">POST /batches</h3>
+
+<h4 id="request-body-3">Request Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>file</td>
+    <td>File containing the application to execute</td>
+    <td>path (required)</td>
+  </tr>
+  <tr>
+    <td>proxyUser</td>
+    <td>User to impersonate when running the job</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>className</td>
+    <td>Application Java/Spark main class</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>args</td>
+    <td>Command line arguments for the application</td>
+    <td>list of strings</td>
+  </tr>
+  <tr>
+    <td>jars</td>
+    <td>jars to be used in this session</td>
+    <td>list of strings</td>
+  </tr>
+  <tr>
+    <td>pyFiles</td>
+    <td>Python files to be used in this session</td>
+    <td>list of strings</td>
+  </tr>
+  <tr>
+    <td>files</td>
+    <td>files to be used in this session</td>
+    <td>list of strings</td>
+  </tr>
+  <tr>
+    <td>driverMemory</td>
+    <td>Amount of memory to use for the driver process</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>driverCores</td>
+    <td>Number of cores to use for the driver process</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>executorMemory</td>
+    <td>Amount of memory to use per executor process</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>executorCores</td>
+    <td>Number of cores to use for each executor</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>numExecutors</td>
+    <td>Number of executors to launch for this session</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>archives</td>
+    <td>Archives to be used in this session</td>
+    <td>List of string</td>
+  </tr>
+  <tr>
+    <td>queue</td>
+    <td>The name of the YARN queue to which submitted</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>name</td>
+    <td>The name of this session</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>conf</td>
+    <td>Spark configuration properties</td>
+    <td>Map of key=val</td>
+  </tr>
+</table>
+
+<h4 id="response-body-10">Response Body</h4>
+
+<p>The created <a href="#batch">Batch</a> object.</p>
+
+<h3 id="get-batchesbatchid">GET /batches/{batchId}</h3>
+
+<p>Returns the batch session information.</p>
+
+<h4 id="response-body-11">Response Body</h4>
+
+<p>The <a href="#batch">Batch</a>.</p>
+
+<h3 id="get-batchesbatchidstate">GET /batches/{batchId}/state</h3>
+
+<p>Returns the state of batch session</p>
+
+<h4 id="response-1">Response</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>id</td>
+    <td>Batch session id</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>state</td>
+    <td>The current state of batch session</td>
+    <td>string</td>
+  </tr>
+</table>
+
+<h3 id="delete-batchesbatchid">DELETE /batches/{batchId}</h3>
+
+<p>Kills the <a href="#batch">Batch</a> job.</p>
+
+<h3 id="get-batchesbatchidlog">GET /batches/{batchId}/log</h3>
+
+<p>Gets the log lines from this batch.</p>
+
+<h4 id="request-parameters-3">Request Parameters</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>from</td>
+    <td>Offset</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Max number of log lines to return</td>
+    <td>int</td>
+  </tr>
+</table>
+
+<h4 id="response-body-12">Response Body</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>id</td>
+    <td>The batch id</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>from</td>
+    <td>Offset from start of log</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Number of log lines</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>log</td>
+    <td>The log lines</td>
+    <td>list of strings</td>
+  </tr>
+</table>
+
+<h2 id="rest-objects">REST Objects</h2>
+
+<h3 id="session">Session</h3>
+
+<p>A session represents an interactive shell.</p>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>id</td>
+    <td>The session id</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>appId</td>
+    <td>The application id of this session</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>owner</td>
+    <td>Remote user who submitted this session</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>proxyUser</td>
+    <td>User to impersonate when running</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>kind</td>
+    <td>Session kind (spark, pyspark, sparkr, or sql)</td>
+    <td><a href="#session-kind">session kind</a></td>
+  </tr>
+  <tr>
+    <td>log</td>
+    <td>The log lines</td>
+    <td>list of strings</td>
+  </tr>
+  <tr>
+    <td>state</td>
+    <td>The session state</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>appInfo</td>
+    <td>The detailed application info</td>
+    <td>Map of key=val</td>
+  </tr>
+</table>
+
+<h4 id="session-state">Session State</h4>
+
+<table class="table">
+  <tr><th>Value</th><th>Description</th></tr>
+  <tr>
+    <td>not_started</td>
+    <td>Session has not been started</td>
+  </tr>
+  <tr>
+    <td>starting</td>
+    <td>Session is starting</td>
+  </tr>
+  <tr>
+    <td>idle</td>
+    <td>Session is waiting for input</td>
+  </tr>
+  <tr>
+    <td>busy</td>
+    <td>Session is executing a statement</td>
+  </tr>
+  <tr>
+    <td>shutting_down</td>
+    <td>Session is shutting down</td>
+  </tr>
+  <tr>
+    <td>error</td>
+    <td>Session errored out</td>
+  </tr>
+  <tr>
+    <td>dead</td>
+    <td>Session has exited</td>
+  </tr>
+  <tr>
+    <td>killed</td>
+    <td>Session has been killed</td>
+  </tr>
+  <tr>
+    <td>success</td>
+    <td>Session is successfully stopped</td>
+  </tr>
+</table>
+
+<h4 id="session-kind">Session Kind</h4>
+
+<table class="table">
+  <tr><th>Value</th><th>Description</th></tr>
+  <tr>
+    <td>spark</td>
+    <td>Interactive Scala Spark session</td>
+  </tr>
+  <tr>
+    <td><a href="#pyspark">pyspark</a></td>
+    <td>Interactive Python Spark session</td>
+  </tr>
+  <tr>
+    <td>sparkr</td>
+    <td>Interactive R Spark session</td>
+  </tr>
+  <tr>
+    <td>sql</td>
+    <td>Interactive SQL Spark session</td>
+  </tr>
+  </table>
+
+<p>Starting with version 0.5.0-incubating, each session can support all four Scala, Python and R
+interpreters with newly added SQL interpreter. The <code class="highlighter-rouge">kind</code> field in session creation 
+is no longer required, instead users should specify code kind (spark, pyspark, sparkr or sql) 
+during statement submission.</p>
+
+<p>To be compatible with previous versions, users can still specify <code class="highlighter-rouge">kind</code> in session creation,
+while ignoring <code class="highlighter-rouge">kind</code> in statement submission. Livy will then use this session
+<code class="highlighter-rouge">kind</code> as default kind for all the submitted statements.</p>
+
+<p>If users want to submit code other than default <code class="highlighter-rouge">kind</code> specified in session creation, users
+need to specify code kind (spark, pyspark, sparkr or sql) during statement submission.</p>
+
+<h4 id="pyspark">pyspark</h4>
+
+<p>To change the Python executable the session uses, Livy reads the path from environment variable
+<code class="highlighter-rouge">PYSPARK_PYTHON</code> (Same as pyspark).</p>
+
+<p>Starting with version 0.5.0-incubating, session kind “pyspark3” is removed, instead users require
+to set <code class="highlighter-rouge">PYSPARK_PYTHON</code> to python3 executable.</p>
+
+<p>Like pyspark, if Livy is running in <code class="highlighter-rouge">local</code> mode, just set the environment variable.
+If the session is running in <code class="highlighter-rouge">yarn-cluster</code> mode, please set
+<code class="highlighter-rouge">spark.yarn.appMasterEnv.PYSPARK_PYTHON</code> in SparkConf so the environment variable is passed to
+the driver.</p>
+
+<h3 id="statement">Statement</h3>
+
+<p>A statement represents the result of an execution statement.</p>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>id</td>
+    <td>The statement id</td>
+    <td>integer</td>
+  </tr>
+  <tr>
+    <td>code</td>
+    <td>The execution code</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>state</td>
+    <td>The execution state</td>
+    <td>statement state</td>
+  </tr>
+  <tr>
+    <td>output</td>
+    <td>The execution output</td>
+    <td>statement output</td>
+  </tr>
+  <tr>
+     <td>progress</td>
+     <td>The execution progress</td>
+     <td>double</td>
+  </tr>
+  <tr>
+     <td>started</td>
+     <td>The start time of statement code</td>
+     <td>long</td>
+  </tr>
+  <tr>
+     <td>completed</td>
+     <td>The complete time of statement code</td>
+     <td>long</td>
+  </tr> 
+</table>
+
+<h4 id="statement-state">Statement State</h4>
+
+<table class="table">
+  <tr><th>Value</th><th>Description</th></tr>
+  <tr>
+    <td>waiting</td>
+    <td>Statement is enqueued but execution hasn't started</td>
+  </tr>
+  <tr>
+    <td>running</td>
+    <td>Statement is currently running</td>
+  </tr>
+  <tr>
+    <td>available</td>
+    <td>Statement has a response ready</td>
+  </tr>
+  <tr>
+    <td>error</td>
+    <td>Statement failed</td>
+  </tr>
+  <tr>
+    <td>cancelling</td>
+    <td>Statement is being cancelling</td>
+  </tr>
+  <tr>
+    <td>cancelled</td>
+    <td>Statement is cancelled</td>
+  </tr>
+</table>
+
+<h4 id="statement-output">Statement Output</h4>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>status</td>
+    <td>Execution status</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>execution_count</td>
+    <td>A monotonically increasing number</td>
+    <td>integer</td>
+  </tr>
+  <tr>
+    <td>data</td>
+    <td>Statement output</td>
+    <td>An object mapping a mime type to the result. If the mime type is
+    ``application/json``, the value is a JSON value.</td>
+  </tr>
+</table>
+
+<h3 id="batch">Batch</h3>
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>id</td>
+    <td>The session id</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>appId</td>
+    <td>The application id of this session</td>
+    <td>string</td>
+  </tr>
+  <tr>
+    <td>appInfo</td>
+    <td>The detailed application info</td>
+    <td>Map of key=val</td>
+  </tr>
+  <tr>
+    <td>log</td>
+    <td>The log lines</td>
+    <td>list of strings</td>
+  </tr>
+  <tr>
+    <td>state</td>
+    <td>The batch state</td>
+    <td>string</td>
+  </tr>
+</table>
+
+<h3 id="proxy-user---doas-support">Proxy User - <code class="highlighter-rouge">doAs</code> support</h3>
+<p>If superuser support is configured, Livy supports the <code class="highlighter-rouge">doAs</code> query parameter
+to specify the user to impersonate. The <code class="highlighter-rouge">doAs</code> query parameter can be used
+on any supported REST endpoint described above to perform the action as the
+specified user. If both <code class="highlighter-rouge">doAs</code> and <code class="highlighter-rouge">proxyUser</code> are specified during session
+or batch creation, the <code class="highlighter-rouge">doAs</code> parameter takes precedence.</p>
+
+  </div>
+</div>
+
+
+      <hr>
+      <footer>
+        <!-- <p>&copy; 2020 </p>-->
+        <footer class="site-footer">
+    <div class="wrapper">
+        <div class="footer-col-wrapper">
+            
+            Apache Livy is an effort undergoing <a href="https://incubator.apache.org/index.html">Incubation</a>
+            at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly
+            accepted projects until a further review indicates that the infrastructure, communications, and decision
+            making process have stabilized in a manner consistent with other successful ASF projects. While incubation
+            status is not necessarily a reflection of the completeness or stability of the code, it does indicate that
+            the project has yet to be fully endorsed by the ASF.
+            <hr>
+            
+            <div style="text-align:center;">
+                
+                <div style="margin-top: 20px; margin-bottom: 20px;">
+                    <a href="http://incubator.apache.org"><img src="/assets/themes/apache/img/egg-logo.png"
+                                                               alt="Apache Incubator"
+                                                               height="30%" width="30%"/></a>
+                </div>
+                
+                <div>
+                    Copyright &copy; 2017 <a href="http://www.apache.org">The Apache Software Foundation</a>.
+                    Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
+                    2.0</a>.
+                    <br>
+                    
+                    Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache
+                    Software Foundation.
+                    
+                </div>
+            </div>
+        </div>
+    </div>
+</footer>
+
+      </footer>
+    </div>
+
+    <script src="/assets/themes/apache/jquery/jquery-2.1.1.min.js"></script>
+
+    <script src="/assets/themes/apache/bootstrap/js/bootstrap.min.js"></script>
+
+
+  </body>
+</html>
+
diff --git a/site/docs/latest b/site/docs/latest
index 07c7fea..c3854b8 120000
--- a/site/docs/latest
+++ b/site/docs/latest
@@ -1 +1 @@
-0.6.0-incubating
\ No newline at end of file
+0.7.0-incubating
\ No newline at end of file