diff --git a/application/default/views/scripts/data/timeline.phtml b/application/default/views/scripts/data/timeline.phtml
index 3b4b1e56..aed49cd2 100755
--- a/application/default/views/scripts/data/timeline.phtml
+++ b/application/default/views/scripts/data/timeline.phtml
@@ -2,63 +2,15 @@
$this->headTitle($this->config->title->site);
$this->headTitle($this->config->title->data);
$this->headTitle('时间轴导航');
-if (!empty($this->codename)) $this->headTitle($this->codename);
$this->headTitle()->setSeparator(' - ');
$this->headLink()->appendStylesheet('/css/metadata.css');
$this->breadcrumb('首页');
$this->breadcrumb(''.$this->config->title->data.'');
$this->breadcrumb('时间轴导航');
$this->breadcrumb()->setSeparator(' > ');
-$this->headScript()->appendFile('http://simile.mit.edu/timeline/api/timeline-api.js');
-$this->headScript()->captureStart();
-?>
- var tl;
- var date = "Nov 22 2007 13:00:00";
- var theme = Timeline.ClassicTheme.create();
- theme.event.label.width = 250; // px
- theme.event.bubble.width = 250;
- theme.event.bubble.height = 200;
-
- window.onload=function() {
- var eventSource = new Timeline.DefaultEventSource();
- var bandInfos = [
- Timeline.createBandInfo({
- width: "70%",
- intervalUnit: Timeline.DateTime.MONTH,
- eventSource: eventSource,
- date: date,
- intervalPixels: 100,
- theme: theme
- }),
- Timeline.createBandInfo({
- width: "30%",
- intervalUnit: Timeline.DateTime.YEAR,
- eventSource: eventSource,
- date: date,
- showEventText: false,
- intervalPixels: 200,
- theme:theme
- })
- ];
- bandInfos[1].syncWith = 0;
- bandInfos[1].highlight = true;
-
-
- tl = Timeline.create(document.getElementById("tl"), bandInfos);
- tl.loadXML("/time.xml", function(xml, url) {
- eventSource.loadXML(xml, url);
- });
- }
- var resizeTimerID = null;
- window.onresize=function() {
- if (resizeTimerID == null) {
- resizeTimerID = window.setTimeout(function() {
- resizeTimerID = null;
- tl.layout();
- }, 500);
- }
- }
-headScript()->captureEnd() ?>
-
+$this->headScript()->appendFile('/js/timeline_var.js');
+$this->headScript()->appendFile('/js/timeline_js/timeline-api.js');
+$this->headScript()->appendFile('/js/time.js');
+?>
= $this->partial('data/tools.phtml'); ?>
\ No newline at end of file
diff --git a/htdocs/js/time.js b/htdocs/js/time.js
index 6ba76cb6..3ee6e93c 100755
--- a/htdocs/js/time.js
+++ b/htdocs/js/time.js
@@ -1,33 +1,42 @@
- var tl;
- function onLoad() {
- var eventSource = new Timeline.DefaultEventSource();
- var bandInfos = [
- Timeline.createBandInfo({
+ var tl;
+ var date = "Nov 22 2007 13:00:00";
+ var theme = Timeline.ClassicTheme.create();
+ theme.event.label.width = 250; // px
+ theme.event.bubble.width = 250;
+ theme.event.bubble.height = 200;
+
+ window.onload=function() {
+ var eventSource = new Timeline.DefaultEventSource();
+ var bandInfos = [
+ Timeline.createBandInfo({
width: "70%",
intervalUnit: Timeline.DateTime.MONTH,
eventSource: eventSource,
- date: "Jun 28 2005 00:00:00 GMT",
- intervalPixels: 100
- }),
- Timeline.createBandInfo({
+ date: date,
+ intervalPixels: 100,
+ theme: theme
+ }),
+ Timeline.createBandInfo({
width: "30%",
intervalUnit: Timeline.DateTime.YEAR,
eventSource: eventSource,
- date: "Jun 28 2006 00:00:00 GMT",
- intervalPixels: 200
- })
- ];
- bandInfos[1].syncWith = 0;
- bandInfos[1].highlight = true;
+ date: date,
+ showEventText: false,
+ intervalPixels: 200,
+ theme:theme
+ })
+ ];
+ bandInfos[1].syncWith = 0;
+ bandInfos[1].highlight = true;
- tl = Timeline.create(document.getElementById("tl"), bandInfos);
- tl.loadXML("/time.xml", function(xml, url) {
- eventSource.loadXML(xml, url);
- });
- }
+ tl = Timeline.create(document.getElementById("tl"), bandInfos);
+ tl.loadXML("/time.xml", function(xml, url) {
+ eventSource.loadXML(xml, url);
+ });
+ }
var resizeTimerID = null;
- function onResize() {
+ window.onresize=function() {
if (resizeTimerID == null) {
resizeTimerID = window.setTimeout(function() {
resizeTimerID = null;
diff --git a/htdocs/js/timeline_ajax/content/history.html b/htdocs/js/timeline_ajax/content/history.html
new file mode 100644
index 00000000..a30fbd81
--- /dev/null
+++ b/htdocs/js/timeline_ajax/content/history.html
@@ -0,0 +1,7 @@
+
+
+ Dummy Page for Keeping Track of History
+
+
+
+
\ No newline at end of file
diff --git a/htdocs/js/timeline_ajax/images/bubble-arrow-point-down.png b/htdocs/js/timeline_ajax/images/bubble-arrow-point-down.png
new file mode 100644
index 00000000..b87e87d9
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-arrow-point-down.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-arrow-point-left.png b/htdocs/js/timeline_ajax/images/bubble-arrow-point-left.png
new file mode 100644
index 00000000..192d7f60
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-arrow-point-left.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-arrow-point-right.png b/htdocs/js/timeline_ajax/images/bubble-arrow-point-right.png
new file mode 100644
index 00000000..d09fdc7e
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-arrow-point-right.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-arrow-point-up.png b/htdocs/js/timeline_ajax/images/bubble-arrow-point-up.png
new file mode 100644
index 00000000..70360806
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-arrow-point-up.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-bottom-left.png b/htdocs/js/timeline_ajax/images/bubble-bottom-left.png
new file mode 100644
index 00000000..117c29cb
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-bottom-left.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-bottom-right.png b/htdocs/js/timeline_ajax/images/bubble-bottom-right.png
new file mode 100644
index 00000000..fa88d283
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-bottom-right.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-bottom.png b/htdocs/js/timeline_ajax/images/bubble-bottom.png
new file mode 100644
index 00000000..9958c3ff
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-bottom.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-left.png b/htdocs/js/timeline_ajax/images/bubble-left.png
new file mode 100644
index 00000000..851d2d7d
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-left.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-right.png b/htdocs/js/timeline_ajax/images/bubble-right.png
new file mode 100644
index 00000000..7c74abc8
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-right.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-top-left.png b/htdocs/js/timeline_ajax/images/bubble-top-left.png
new file mode 100644
index 00000000..00c0773e
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-top-left.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-top-right.png b/htdocs/js/timeline_ajax/images/bubble-top-right.png
new file mode 100644
index 00000000..e5533634
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-top-right.png differ
diff --git a/htdocs/js/timeline_ajax/images/bubble-top.png b/htdocs/js/timeline_ajax/images/bubble-top.png
new file mode 100644
index 00000000..ddb67849
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/bubble-top.png differ
diff --git a/htdocs/js/timeline_ajax/images/close-button.png b/htdocs/js/timeline_ajax/images/close-button.png
new file mode 100644
index 00000000..15f31b3c
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/close-button.png differ
diff --git a/htdocs/js/timeline_ajax/images/copy.png b/htdocs/js/timeline_ajax/images/copy.png
new file mode 100644
index 00000000..cf7cee46
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/copy.png differ
diff --git a/htdocs/js/timeline_ajax/images/message-bottom-left.png b/htdocs/js/timeline_ajax/images/message-bottom-left.png
new file mode 100644
index 00000000..43a9d616
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/message-bottom-left.png differ
diff --git a/htdocs/js/timeline_ajax/images/message-bottom-right.png b/htdocs/js/timeline_ajax/images/message-bottom-right.png
new file mode 100644
index 00000000..bfa4954e
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/message-bottom-right.png differ
diff --git a/htdocs/js/timeline_ajax/images/message-left.png b/htdocs/js/timeline_ajax/images/message-left.png
new file mode 100644
index 00000000..f354376b
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/message-left.png differ
diff --git a/htdocs/js/timeline_ajax/images/message-right.png b/htdocs/js/timeline_ajax/images/message-right.png
new file mode 100644
index 00000000..4702c285
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/message-right.png differ
diff --git a/htdocs/js/timeline_ajax/images/message-top-left.png b/htdocs/js/timeline_ajax/images/message-top-left.png
new file mode 100644
index 00000000..b19b0eae
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/message-top-left.png differ
diff --git a/htdocs/js/timeline_ajax/images/message-top-right.png b/htdocs/js/timeline_ajax/images/message-top-right.png
new file mode 100644
index 00000000..c092555f
Binary files /dev/null and b/htdocs/js/timeline_ajax/images/message-top-right.png differ
diff --git a/htdocs/js/timeline_ajax/scripts/signal.js b/htdocs/js/timeline_ajax/scripts/signal.js
new file mode 100644
index 00000000..a638fd25
--- /dev/null
+++ b/htdocs/js/timeline_ajax/scripts/signal.js
@@ -0,0 +1,43 @@
+/*==================================================
+ * This file is used to detect that all outstanding
+ * javascript files have been loaded. You can put
+ * a function reference into SimileAjax_onLoad
+ * to have it executed once all javascript files
+ * have loaded.
+ *==================================================
+ */
+(function() {
+ var substring = SimileAjax.urlPrefix + "scripts/signal.js";
+ var heads = document.documentElement.getElementsByTagName("head");
+ for (var h = 0; h < heads.length; h++) {
+ var node = heads[h].firstChild;
+ while (node != null) {
+ if (node.nodeType == 1 && node.tagName.toLowerCase() == "script") {
+ var url = node.src;
+ var i = url.indexOf(substring);
+ if (i >= 0) {
+ heads[h].removeChild(node); // remove it so we won't hit it again
+
+ var count = parseInt(url.substr(url.indexOf(substring) + substring.length + 1));
+ SimileAjax.loadingScriptsCount -= count;
+ if (SimileAjax.loadingScriptsCount == 0) {
+ var f = null;
+ if (typeof SimileAjax_onLoad == "string") {
+ f = eval(SimileAjax_onLoad);
+ SimileAjax_onLoad = null;
+ } else if (typeof SimileAjax_onLoad == "function") {
+ f = SimileAjax_onLoad;
+ SimileAjax_onLoad = null;
+ }
+
+ if (f != null) {
+ f();
+ }
+ }
+ return;
+ }
+ }
+ node = node.nextSibling;
+ }
+ }
+})();
diff --git a/htdocs/js/timeline_ajax/simile-ajax-api.js b/htdocs/js/timeline_ajax/simile-ajax-api.js
new file mode 100644
index 00000000..e858af44
--- /dev/null
+++ b/htdocs/js/timeline_ajax/simile-ajax-api.js
@@ -0,0 +1,212 @@
+/*==================================================
+ * Simile Ajax API
+ *
+ * Include this file in your HTML file as follows:
+ *
+ *
+ *
+ *==================================================
+ */
+
+if (typeof SimileAjax == "undefined") {
+ var SimileAjax = {
+ loaded: false,
+ loadingScriptsCount: 0,
+ error: null,
+ params: { bundle:"true" }
+ };
+
+ SimileAjax.Platform = new Object();
+ /*
+ HACK: We need these 2 things here because we cannot simply append
+ a ");
+ return;
+ } catch (e) {
+ // fall through
+ }
+ }
+
+ var script = doc.createElement("script");
+ if (onerror) {
+ try { script.innerHTML = onerror; } catch(e) {}
+ script.setAttribute("onerror", onerror);
+ }
+ if (charset) {
+ script.setAttribute("charset", charset);
+ }
+ script.type = "text/javascript";
+ script.language = "JavaScript";
+ script.src = url;
+ return getHead(doc).appendChild(script);
+ };
+ SimileAjax.includeJavascriptFiles = function(doc, urlPrefix, filenames) {
+ for (var i = 0; i < filenames.length; i++) {
+ SimileAjax.includeJavascriptFile(doc, urlPrefix + filenames[i]);
+ }
+ SimileAjax.loadingScriptsCount += filenames.length;
+ SimileAjax.includeJavascriptFile(doc, SimileAjax.urlPrefix + "scripts/signal.js?" + filenames.length);
+ };
+ SimileAjax.includeCssFile = function(doc, url) {
+ if (doc.body == null) {
+ try {
+ doc.write("");
+ return;
+ } catch (e) {
+ // fall through
+ }
+ }
+
+ var link = doc.createElement("link");
+ link.setAttribute("rel", "stylesheet");
+ link.setAttribute("type", "text/css");
+ link.setAttribute("href", url);
+ getHead(doc).appendChild(link);
+ };
+ SimileAjax.includeCssFiles = function(doc, urlPrefix, filenames) {
+ for (var i = 0; i < filenames.length; i++) {
+ SimileAjax.includeCssFile(doc, urlPrefix + filenames[i]);
+ }
+ };
+
+ /**
+ * Append into urls each string in suffixes after prefixing it with urlPrefix.
+ * @param {Array} urls
+ * @param {String} urlPrefix
+ * @param {Array} suffixes
+ */
+ SimileAjax.prefixURLs = function(urls, urlPrefix, suffixes) {
+ for (var i = 0; i < suffixes.length; i++) {
+ urls.push(urlPrefix + suffixes[i]);
+ }
+ };
+
+ /**
+ * Parse out the query parameters from a URL
+ * @param {String} url the url to parse, or location.href if undefined
+ * @param {Object} to optional object to extend with the parameters
+ * @param {Object} types optional object mapping keys to value types
+ * (String, Number, Boolean or Array, String by default)
+ * @return a key/value Object whose keys are the query parameter names
+ * @type Object
+ */
+ SimileAjax.parseURLParameters = function(url, to, types) {
+ to = to || {};
+ types = types || {};
+
+ if (typeof url == "undefined") {
+ url = location.href;
+ }
+ var q = url.indexOf("?");
+ if (q < 0) {
+ return to;
+ }
+ url = (url+"#").slice(q+1, url.indexOf("#")); // toss the URL fragment
+
+ var params = url.split("&"), param, parsed = {};
+ var decode = window.decodeURIComponent || unescape;
+ for (var i = 0; param = params[i]; i++) {
+ var eq = param.indexOf("=");
+ var name = decode(param.slice(0,eq));
+ var old = parsed[name];
+ if (typeof old == "undefined") {
+ old = [];
+ } else if (!(old instanceof Array)) {
+ old = [old];
+ }
+ parsed[name] = old.concat(decode(param.slice(eq+1)));
+ }
+ for (var i in parsed) {
+ if (!parsed.hasOwnProperty(i)) continue;
+ var type = types[i] || String;
+ var data = parsed[i];
+ if (!(data instanceof Array)) {
+ data = [data];
+ }
+ if (type === Boolean && data[0] == "false") {
+ to[i] = false; // because Boolean("false") === true
+ } else {
+ to[i] = type.apply(this, data);
+ }
+ }
+ return to;
+ };
+
+ (function() {
+ var javascriptFiles = [
+ "jquery-1.2.6.min.js",
+ "platform.js",
+ "debug.js",
+ "xmlhttp.js",
+ "json.js",
+ "dom.js",
+ "graphics.js",
+ "date-time.js",
+ "string.js",
+ "html.js",
+ "data-structure.js",
+ "units.js",
+
+ "ajax.js",
+ "history.js",
+ "window-manager.js"
+ ];
+ var cssFiles = [
+ "graphics.css"
+ ];
+
+ if (typeof SimileAjax_urlPrefix == "string") {
+ SimileAjax.urlPrefix = SimileAjax_urlPrefix;
+ } else {
+ var url = SimileAjax.findScript(document, "simile-ajax-api.js");
+ if (url == null) {
+ SimileAjax.error = new Error("Failed to derive URL prefix for Simile Ajax API code files");
+ return;
+ }
+
+ SimileAjax.urlPrefix = url.substr(0, url.indexOf("simile-ajax-api.js"));
+ }
+
+ SimileAjax.parseURLParameters(url, SimileAjax.params, {bundle:Boolean});
+ if (SimileAjax.params.bundle) {
+ SimileAjax.includeJavascriptFiles(document, SimileAjax.urlPrefix, [ "simile-ajax-bundle.js" ]);
+ } else {
+ SimileAjax.includeJavascriptFiles(document, SimileAjax.urlPrefix + "scripts/", javascriptFiles);
+ }
+ SimileAjax.includeCssFiles(document, SimileAjax.urlPrefix + "styles/", cssFiles);
+
+ SimileAjax.loaded = true;
+ })();
+}
diff --git a/htdocs/js/timeline_ajax/simile-ajax-bundle.js b/htdocs/js/timeline_ajax/simile-ajax-bundle.js
new file mode 100644
index 00000000..4eae2d81
--- /dev/null
+++ b/htdocs/js/timeline_ajax/simile-ajax-bundle.js
@@ -0,0 +1,2623 @@
+
+
+/* jquery-1.2.6.min.js */
+(function(){var _jQuery=window.jQuery,_$=window.$;
+var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);
+};
+var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;
+jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;
+if(selector.nodeType){this[0]=selector;
+this.length=1;
+return this;
+}if(typeof selector=="string"){var match=quickExpr.exec(selector);
+if(match&&(match[1]||!context)){if(match[1]){selector=jQuery.clean([match[1]],context);
+}else{var elem=document.getElementById(match[3]);
+if(elem){if(elem.id!=match[3]){return jQuery().find(selector);
+}return jQuery(elem);
+}selector=[];
+}}else{return jQuery(context).find(selector);
+}}else{if(jQuery.isFunction(selector)){return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);
+}}return this.setArray(jQuery.makeArray(selector));
+},jquery:"1.2.6",size:function(){return this.length;
+},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];
+},pushStack:function(elems){var ret=jQuery(elems);
+ret.prevObject=this;
+return ret;
+},setArray:function(elems){this.length=0;
+Array.prototype.push.apply(this,elems);
+return this;
+},each:function(callback,args){return jQuery.each(this,callback,args);
+},index:function(elem){var ret=-1;
+return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);
+},attr:function(name,value,type){var options=name;
+if(name.constructor==String){if(value===undefined){return this[0]&&jQuery[type||"attr"](this[0],name);
+}else{options={};
+options[name]=value;
+}}return this.each(function(i){for(name in options){jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));
+}});
+},css:function(key,value){if((key=="width"||key=="height")&&parseFloat(value)<0){value=undefined;
+}return this.attr(key,value,"curCSS");
+},text:function(text){if(typeof text!="object"&&text!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));
+}var ret="";
+jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8){ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);
+}});
+});
+return ret;
+},wrapAll:function(html){if(this[0]){jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;
+while(elem.firstChild){elem=elem.firstChild;
+}return elem;
+}).append(this);
+}return this;
+},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);
+});
+},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);
+});
+},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1){this.appendChild(elem);
+}});
+},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1){this.insertBefore(elem,this.firstChild);
+}});
+},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);
+});
+},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);
+});
+},end:function(){return this.prevObject||jQuery([]);
+},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);
+});
+return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);
+},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");
+container.appendChild(clone);
+return jQuery.clean([container.innerHTML])[0];
+}else{return this.cloneNode(true);
+}});
+var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined){this[expando]=null;
+}});
+if(events===true){this.find("*").andSelf().each(function(i){if(this.nodeType==3){return ;
+}var events=jQuery.data(this,"events");
+for(var type in events){for(var handler in events[type]){jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);
+}}});
+}return ret;
+},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);
+})||jQuery.multiFilter(selector,this));
+},not:function(selector){if(selector.constructor==String){if(isSimple.test(selector)){return this.pushStack(jQuery.multiFilter(selector,this,true));
+}else{selector=jQuery.multiFilter(selector,this);
+}}var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;
+return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;
+});
+},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=="string"?jQuery(selector):jQuery.makeArray(selector))));
+},is:function(selector){return !!selector&&jQuery.multiFilter(selector,this).length>0;
+},hasClass:function(selector){return this.is("."+selector);
+},val:function(value){if(value==undefined){if(this.length){var elem=this[0];
+if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";
+if(index<0){return null;
+}for(var i=one?index:0,max=one?index+1:options.length;
+i=0||jQuery.inArray(this.name,value)>=0);
+}else{if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);
+jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);
+});
+if(!values.length){this.selectedIndex=-1;
+}}else{this.value=value;
+}}});
+},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);
+},replaceWith:function(value){return this.after(value).remove();
+},eq:function(i){return this.slice(i,i+1);
+},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));
+},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);
+}));
+},andSelf:function(){return this.add(this.prevObject);
+},data:function(key,value){var parts=key.split(".");
+parts[1]=parts[1]?"."+parts[1]:"";
+if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);
+if(data===undefined&&this.length){data=jQuery.data(this[0],key);
+}return data===undefined&&parts[1]?this.data(parts[0]):data;
+}else{return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);
+});
+}},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);
+});
+},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;
+return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);
+if(reverse){elems.reverse();
+}}var obj=this;
+if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr")){obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));
+}var scripts=jQuery([]);
+jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;
+if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);
+}else{if(elem.nodeType==1){scripts=scripts.add(jQuery("script",elem).remove());
+}callback.call(obj,elem);
+}});
+scripts.each(evalScript);
+});
+}};
+jQuery.fn.init.prototype=jQuery.fn;
+function evalScript(i,elem){if(elem.src){jQuery.ajax({url:elem.src,async:false,dataType:"script"});
+}else{jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");
+}if(elem.parentNode){elem.parentNode.removeChild(elem);
+}}function now(){return +new Date;
+}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;
+if(target.constructor==Boolean){deep=target;
+target=arguments[1]||{};
+i=2;
+}if(typeof target!="object"&&typeof target!="function"){target={};
+}if(length==i){target=this;
+--i;
+}for(;
+i-1;
+}},swap:function(elem,options,callback){var old={};
+for(var name in options){old[name]=elem.style[name];
+elem.style[name]=options[name];
+}callback.call(elem);
+for(var name in options){elem.style[name]=old[name];
+}},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];
+function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;
+var padding=0,border=0;
+jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;
+border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;
+});
+val-=Math.round(padding+border);
+}if(jQuery(elem).is(":visible")){getWH();
+}else{jQuery.swap(elem,props,getWH);
+}return Math.max(0,val);
+}return jQuery.curCSS(elem,name,force);
+},curCSS:function(elem,name,force){var ret,style=elem.style;
+function color(elem){if(!jQuery.browser.safari){return false;
+}var ret=defaultView.getComputedStyle(elem,null);
+return !ret||ret.getPropertyValue("color")=="";
+}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");
+return ret==""?"1":ret;
+}if(jQuery.browser.opera&&name=="display"){var save=style.outline;
+style.outline="0 solid black";
+style.outline=save;
+}if(name.match(/float/i)){name=styleFloat;
+}if(!force&&style&&style[name]){ret=style[name];
+}else{if(defaultView.getComputedStyle){if(name.match(/float/i)){name="float";
+}name=name.replace(/([A-Z])/g,"-$1").toLowerCase();
+var computedStyle=defaultView.getComputedStyle(elem,null);
+if(computedStyle&&!color(elem)){ret=computedStyle.getPropertyValue(name);
+}else{var swap=[],stack=[],a=elem,i=0;
+for(;
+a&&color(a);
+a=a.parentNode){stack.unshift(a);
+}for(;
+i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">"+tag+">";
+});
+var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");
+var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,""]||!tags.indexOf("
",""]||(!tags.indexOf(" | ","
"]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div","
"]||[0,"",""];
+div.innerHTML=wrap[1]+elem+wrap[2];
+while(wrap[0]--){div=div.lastChild;
+}if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;
+--j){if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length){tbody[j].parentNode.removeChild(tbody[j]);
+}}if(/^\s/.test(elem)){div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);
+}}elem=jQuery.makeArray(div.childNodes);
+}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select"))){return ;
+}if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options){ret.push(elem);
+}else{ret=jQuery.merge(ret,elem);
+}});
+return ret;
+},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8){return undefined;
+}var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;
+name=notxml&&jQuery.props[name]||name;
+if(elem.tagName){var special=/href|src|style/.test(name);
+if(name=="selected"&&jQuery.browser.safari){elem.parentNode.selectedIndex;
+}if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode){throw"type property can't be changed";
+}elem[name]=value;
+}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name)){return elem.getAttributeNode(name).nodeValue;
+}return elem[name];
+}if(msie&¬xml&&name=="style"){return jQuery.attr(elem.style,"cssText",value);
+}if(set){elem.setAttribute(name,""+value);
+}var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);
+return attr===null?undefined:attr;
+}if(msie&&name=="opacity"){if(set){elem.zoom=1;
+elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+""=="NaN"?"":"alpha(opacity="+value*100+")");
+}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+"":"";
+}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();
+});
+if(set){elem[name]=value;
+}return elem[name];
+},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");
+},makeArray:function(array){var ret=[];
+if(array!=null){var i=array.length;
+if(i==null||array.split||array.setInterval||array.call){ret[0]=array;
+}else{while(i){ret[--i]=array[i];
+}}}return ret;
+},inArray:function(elem,array){for(var i=0,length=array.length;
+i*",this).remove();
+while(this.firstChild){this.removeChild(this.firstChild);
+}}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);
+};
+});
+jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();
+jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");
+};
+});
+function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;
+}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");
+jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);
+},"#":function(a,i,m){return a.getAttribute("id")==m[2];
+},":":{lt:function(a,i,m){return im[3]-0;
+},nth:function(a,i,m){return m[3]-0==i;
+},eq:function(a,i,m){return m[3]-0==i;
+},first:function(a,i){return i==0;
+},last:function(a,i,m,r){return i==r.length-1;
+},even:function(a,i){return i%2==0;
+},odd:function(a,i){return i%2;
+},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;
+},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;
+},"only-child":function(a){return !jQuery.nth(a.parentNode.lastChild,2,"previousSibling");
+},parent:function(a){return a.firstChild;
+},empty:function(a){return !a.firstChild;
+},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;
+},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";
+},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";
+},enabled:function(a){return !a.disabled;
+},disabled:function(a){return a.disabled;
+},checked:function(a){return a.checked;
+},selected:function(a){return a.selected||jQuery.attr(a,"selected");
+},text:function(a){return"text"==a.type;
+},radio:function(a){return"radio"==a.type;
+},checkbox:function(a){return"checkbox"==a.type;
+},file:function(a){return"file"==a.type;
+},password:function(a){return"password"==a.type;
+},submit:function(a){return"submit"==a.type;
+},image:function(a){return"image"==a.type;
+},reset:function(a){return"reset"==a.type;
+},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");
+},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);
+},has:function(a,i,m){return jQuery.find(m[3],a).length;
+},header:function(a){return/h\d/i.test(a.nodeName);
+},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;
+}).length;
+}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];
+while(expr&&expr!=old){old=expr;
+var f=jQuery.filter(expr,elems,not);
+expr=f.t.replace(/^\s*,\s*/,"");
+cur=not?elems=f.r:jQuery.merge(cur,f.r);
+}return cur;
+},find:function(t,context){if(typeof t!="string"){return[t];
+}if(context&&context.nodeType!=1&&context.nodeType!=9){return[];
+}context=context||document;
+var ret=[context],done=[],last,nodeName;
+while(t&&last!=t){var r=[];
+last=t;
+t=jQuery.trim(t);
+var foundToken=false,re=quickChild,m=re.exec(t);
+if(m){nodeName=m[1].toUpperCase();
+for(var i=0;
+ret[i];
+i++){for(var c=ret[i].firstChild;
+c;
+c=c.nextSibling){if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName)){r.push(c);
+}}}ret=r;
+t=t.replace(re,"");
+if(t.indexOf(" ")==0){continue;
+}foundToken=true;
+}else{re=/^([>+~])\s*(\w*)/i;
+if((m=re.exec(t))!=null){r=[];
+var merge={};
+nodeName=m[2].toUpperCase();
+m=m[1];
+for(var j=0,rl=ret.length;
+j=0;
+if(!not&&pass||not&&!pass){tmp.push(r[i]);
+}}return tmp;
+},filter:function(t,r,not){var last;
+while(t&&t!=last){last=t;
+var p=jQuery.parse,m;
+for(var i=0;
+p[i];
+i++){m=p[i].exec(t);
+if(m){t=t.substring(m[0].length);
+m[2]=m[2].replace(/\\/g,"");
+break;
+}}if(!m){break;
+}if(m[1]==":"&&m[2]=="not"){r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);
+}else{if(m[1]=="."){r=jQuery.classFilter(r,m[2],not);
+}else{if(m[1]=="["){var tmp=[],type=m[3];
+for(var i=0,rl=r.length;
+i=0)^not){tmp.push(a);
+}}r=tmp;
+}else{if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;
+for(var i=0,rl=r.length;
+i=0){add=true;
+}}if(add^not){tmp.push(node);
+}}r=tmp;
+}else{var fn=jQuery.expr[m[1]];
+if(typeof fn=="object"){fn=fn[m[2]];
+}if(typeof fn=="string"){fn=eval("false||function(a,i){return "+fn+";}");
+}r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);
+},not);
+}}}}}return{r:r,t:t};
+},dir:function(elem,dir){var matched=[],cur=elem[dir];
+while(cur&&cur!=document){if(cur.nodeType==1){matched.push(cur);
+}cur=cur[dir];
+}return matched;
+},nth:function(cur,result,dir,elem){result=result||1;
+var num=0;
+for(;
+cur;
+cur=cur[dir]){if(cur.nodeType==1&&++num==result){break;
+}}return cur;
+},sibling:function(n,elem){var r=[];
+for(;
+n;
+n=n.nextSibling){if(n.nodeType==1&&n!=elem){r.push(n);
+}}return r;
+}});
+jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8){return ;
+}if(jQuery.browser.msie&&elem.setInterval){elem=window;
+}if(!handler.guid){handler.guid=this.guid++;
+}if(data!=undefined){var fn=handler;
+handler=this.proxy(fn,function(){return fn.apply(this,arguments);
+});
+handler.data=data;
+}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered){return jQuery.event.handle.apply(arguments.callee.elem,arguments);
+}});
+handle.elem=elem;
+jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");
+type=parts[0];
+handler.type=parts[1];
+var handlers=events[type];
+if(!handlers){handlers=events[type]={};
+if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener){elem.addEventListener(type,handle,false);
+}else{if(elem.attachEvent){elem.attachEvent("on"+type,handle);
+}}}}handlers[handler.guid]=handler;
+jQuery.event.global[type]=true;
+});
+elem=null;
+},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8){return ;
+}var events=jQuery.data(elem,"events"),ret,index;
+if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)==".")){for(var type in events){this.remove(elem,type+(types||""));
+}}else{if(types.type){handler=types.handler;
+types=types.type;
+}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");
+type=parts[0];
+if(events[type]){if(handler){delete events[type][handler.guid];
+}else{for(handler in events[type]){if(!parts[1]||events[type][handler].type==parts[1]){delete events[type][handler];
+}}}for(ret in events[type]){break;
+}if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener){elem.removeEventListener(type,jQuery.data(elem,"handle"),false);
+}else{if(elem.detachEvent){elem.detachEvent("on"+type,jQuery.data(elem,"handle"));
+}}}ret=null;
+delete events[type];
+}}});
+}for(ret in events){break;
+}if(!ret){var handle=jQuery.data(elem,"handle");
+if(handle){handle.elem=null;
+}jQuery.removeData(elem,"events");
+jQuery.removeData(elem,"handle");
+}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);
+if(type.indexOf("!")>=0){type=type.slice(0,-1);
+var exclusive=true;
+}if(!elem){if(this.global[type]){jQuery("*").add([window,document]).trigger(type,data);
+}}else{if(elem.nodeType==3||elem.nodeType==8){return undefined;
+}var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;
+if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});
+data[0][expando]=true;
+}data[0].type=type;
+if(exclusive){data[0].exclusive=true;
+}var handle=jQuery.data(elem,"handle");
+if(handle){val=handle.apply(elem,data);
+}if((!fn||(jQuery.nodeName(elem,"a")&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false){val=false;
+}if(event){data.shift();
+}if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));
+if(ret!==undefined){val=ret;
+}}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,"a")&&type=="click")){this.triggered=true;
+try{elem[type]();
+}catch(e){}}this.triggered=false;
+}return val;
+},handle:function(event){var val,ret,namespace,all,handlers;
+event=arguments[0]=jQuery.event.fix(event||window.event);
+namespace=event.type.split(".");
+event.type=namespace[0];
+namespace=namespace[1];
+all=!namespace&&!event.exclusive;
+handlers=(jQuery.data(this,"events")||{})[event.type];
+for(var j in handlers){var handler=handlers[j];
+if(all||handler.type==namespace){event.handler=handler;
+event.data=handler.data;
+ret=handler.apply(this,arguments);
+if(val!==false){val=ret;
+}if(ret===false){event.preventDefault();
+event.stopPropagation();
+}}}return val;
+},fix:function(event){if(event[expando]==true){return event;
+}var originalEvent=event;
+event={originalEvent:originalEvent};
+var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");
+for(var i=props.length;
+i;
+i--){event[props[i]]=originalEvent[props[i]];
+}event[expando]=true;
+event.preventDefault=function(){if(originalEvent.preventDefault){originalEvent.preventDefault();
+}originalEvent.returnValue=false;
+};
+event.stopPropagation=function(){if(originalEvent.stopPropagation){originalEvent.stopPropagation();
+}originalEvent.cancelBubble=true;
+};
+event.timeStamp=event.timeStamp||now();
+if(!event.target){event.target=event.srcElement||document;
+}if(event.target.nodeType==3){event.target=event.target.parentNode;
+}if(!event.relatedTarget&&event.fromElement){event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;
+}if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;
+event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);
+event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);
+}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode)){event.which=event.charCode||event.keyCode;
+}if(!event.metaKey&&event.ctrlKey){event.metaKey=event.ctrlKey;
+}if(!event.which&&event.button){event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));
+}return event;
+},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;
+return proxy;
+},special:{ready:{setup:function(){bindReady();
+return ;
+},teardown:function(){return ;
+}},mouseenter:{setup:function(){if(jQuery.browser.msie){return false;
+}jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);
+return true;
+},teardown:function(){if(jQuery.browser.msie){return false;
+}jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);
+return true;
+},handler:function(event){if(withinElement(event,this)){return true;
+}event.type="mouseenter";
+return jQuery.event.handle.apply(this,arguments);
+}},mouseleave:{setup:function(){if(jQuery.browser.msie){return false;
+}jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);
+return true;
+},teardown:function(){if(jQuery.browser.msie){return false;
+}jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);
+return true;
+},handler:function(event){if(withinElement(event,this)){return true;
+}event.type="mouseleave";
+return jQuery.event.handle.apply(this,arguments);
+}}}};
+jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);
+});
+},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);
+return(fn||data).apply(this,arguments);
+});
+return this.each(function(){jQuery.event.add(this,type,one,fn&&data);
+});
+},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);
+});
+},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);
+});
+},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);
+},toggle:function(fn){var args=arguments,i=1;
+while(i=0){var selector=url.slice(off,url.length);
+url=url.slice(0,off);
+}callback=callback||function(){};
+var type="GET";
+if(params){if(jQuery.isFunction(params)){callback=params;
+params=null;
+}else{params=jQuery.param(params);
+type="POST";
+}}var self=this;
+jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified"){self.html(selector?jQuery("").append(res.responseText.replace(/
+ *
+ *
+ * To host the Timeline files on your own server:
+ * 1) Install the Timeline and Simile-Ajax files onto your webserver using
+ * timeline_libraries.zip or timeline_source.zip
+ *
+ * 2) Set global js variables used to send parameters to this script:
+ * Timeline_ajax_url -- url for simile-ajax-api.js
+ * Timeline_urlPrefix -- url for the *directory* that contains timeline-api.js
+ * Include trailing slash
+ * Timeline_parameters='bundle=true'; // you must set bundle to true if you are using
+ * // timeline_libraries.zip since only the
+ * // bundled libraries are included
+ *
+ * eg your html page would include
+ *
+ *
+ *
+ *
+ * SCRIPT PARAMETERS
+ * This script auto-magically figures out locale and has defaults for other parameters
+ * To set parameters explicity, set js global variable Timeline_parameters or include as
+ * parameters on the url using GET style. Eg the two next lines pass the same parameters:
+ * Timeline_parameters='bundle=true'; // pass parameter via js variable
+ * ");
+ } catch (e) {
+ createScriptElement();
+ }
+ } else {
+ createScriptElement();
+ }
+ } else {
+ loadMe();
+ }
+})();
diff --git a/htdocs/js/timeline_js/timeline-bundle.css b/htdocs/js/timeline_js/timeline-bundle.css
new file mode 100644
index 00000000..ea86275e
--- /dev/null
+++ b/htdocs/js/timeline_js/timeline-bundle.css
@@ -0,0 +1,229 @@
+
+
+/*------------------- Horizontal / Vertical lines ----------------*/
+
+/* style for ethers */
+.timeline-ether-lines{border-color:#666; border-style:dotted; position:absolute;}
+.timeline-horizontal .timeline-ether-lines{border-width:0 0 0 1px; height:100%; top: 0; width: 1px;}
+.timeline-vertical .timeline-ether-lines{border-width:1px 0 0; height:1px; left: 0; width: 100%;}
+
+
+
+/*---------------- Weekends ---------------------------*/
+.timeline-ether-weekends{
+ position:absolute;
+ background-color:#FFFFE0;
+}
+
+.timeline-vertical .timeline-ether-weekends{left:0;width:100%;}
+.timeline-horizontal .timeline-ether-weekends{top:0; height:100%;}
+
+
+/*-------------------------- HIGHLIGHT DECORATORS -------------------*/
+/* Used for decorators, not used for Timeline Highlight */
+.timeline-highlight-decorator,
+.timeline-highlight-point-decorator{
+ position:absolute;
+ overflow:hidden;
+}
+
+/* Width of horizontal decorators and Height of vertical decorators is
+ set in the decorator function params */
+.timeline-horizontal .timeline-highlight-point-decorator,
+.timeline-horizontal .timeline-highlight-decorator{
+ top:0;
+ height:100%;
+}
+
+.timeline-vertical .timeline-highlight-point-decorator,
+.timeline-vertical .timeline-highlight-decorator{
+ width:100%;
+ left:0;
+}
+
+.timeline-highlight-decorator{background-color:#FFC080;}
+.timeline-highlight-point-decorator{background-color:#ff5;}
+
+
+/*---------------------------- LABELS -------------------------*/
+.timeline-highlight-label {
+ position:absolute; overflow:hidden; font-size:200%;
+ font-weight:bold; color:#999; }
+
+
+/*---------------- VERTICAL LABEL -------------------*/
+.timeline-horizontal .timeline-highlight-label {top:0; height:100%;}
+.timeline-horizontal .timeline-highlight-label td {vertical-align:middle;}
+.timeline-horizontal .timeline-highlight-label-start {text-align:right;}
+.timeline-horizontal .timeline-highlight-label-end {text-align:left;}
+
+
+/*---------------- HORIZONTAL LABEL -------------------*/
+.timeline-vertical .timeline-highlight-label {left:0;width:100%;}
+.timeline-vertical .timeline-highlight-label td {vertical-align:top;}
+.timeline-vertical .timeline-highlight-label-start {text-align:center;}
+.timeline-vertical .timeline-highlight-label-end {text-align:center;}
+
+
+/*-------------------------------- DATE LABELS --------------------------------*/
+.timeline-date-label {
+ position: absolute;
+ border: solid #aaa;
+ color: #aaa;
+ width: 5em;
+ height: 1.5em;}
+.timeline-date-label-em {color: #000;}
+
+/* horizontal */
+.timeline-horizontal .timeline-date-label{padding-left:2px;}
+.timeline-horizontal .timeline-date-label{border-width:0 0 0 1px;}
+.timeline-horizontal .timeline-date-label-em{height:2em}
+
+/* vertical */
+.timeline-vertical .timeline-date-label{padding-top:2px;}
+.timeline-vertical .timeline-date-label{border-width:1px 0 0;}
+.timeline-vertical .timeline-date-label-em{width:7em}
+
+
+/*------------------------------- Ether.highlight -------------------------*/
+.timeline-ether-highlight{position:absolute; background-color:#fff;}
+.timeline-horizontal .timeline-ether-highlight{top:2px;}
+.timeline-vertical .timeline-ether-highlight{left:2px;}
+
+
+/*------------------------------ EVENTS ------------------------------------*/
+.timeline-event-icon, .timeline-event-label,.timeline-event-tape{
+ position:absolute;
+ cursor:pointer;
+}
+
+.timeline-event-tape,
+.timeline-small-event-tape,
+.timeline-small-event-icon{
+ background-color:#58A0DC;
+ overflow:hidden;
+}
+
+.timeline-small-event-tape,
+.timeline-small-event-icon{
+ position:absolute;
+}
+
+.timeline-small-event-icon{width:1px; height:6px;}
+
+
+/*--------------------------------- TIMELINE-------------------------*/
+.timeline-ether-bg{width:100%; height:100%;}
+.timeline-band-0 .timeline-ether-bg{background-color:#eee}
+.timeline-band-1 .timeline-ether-bg{background-color:#ddd}
+.timeline-band-2 .timeline-ether-bg{background-color:#ccc}
+.timeline-band-3 .timeline-ether-bg{background-color:#aaa}
+.timeline-duration-event {
+ position: absolute;
+ overflow: hidden;
+ border: 1px solid blue;
+}
+
+.timeline-instant-event2 {
+ position: absolute;
+ overflow: hidden;
+ border-left: 1px solid blue;
+ padding-left: 2px;
+}
+
+.timeline-instant-event {
+ position: absolute;
+ overflow: hidden;
+}
+
+.timeline-event-bubble-title {
+ font-weight: bold;
+ border-bottom: 1px solid #888;
+ margin-bottom: 0.5em;
+}
+
+.timeline-event-bubble-body {
+}
+
+.timeline-event-bubble-wiki {
+ margin: 0.5em;
+ text-align: right;
+ color: #A0A040;
+}
+.timeline-event-bubble-wiki a {
+ color: #A0A040;
+}
+
+.timeline-event-bubble-time {
+ color: #aaa;
+}
+
+.timeline-event-bubble-image {
+ float: right;
+ padding-left: 5px;
+ padding-bottom: 5px;
+}.timeline-container {
+ position: relative;
+ overflow: hidden;
+}
+
+.timeline-copyright {
+ position: absolute;
+ bottom: 0px;
+ left: 0px;
+ z-index: 1000;
+ cursor: pointer;
+}
+
+.timeline-message-container {
+ position: absolute;
+ top: 30%;
+ left: 35%;
+ right: 35%;
+ z-index: 1000;
+ display: none;
+}
+.timeline-message {
+ font-size: 120%;
+ font-weight: bold;
+ text-align: center;
+}
+.timeline-message img {
+ vertical-align: middle;
+}
+
+.timeline-band {
+ position: absolute;
+ background: #eee;
+ z-index: 10;
+}
+
+.timeline-band-inner {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+.timeline-band-input {
+ position: absolute;
+ width: 1em;
+ height: 1em;
+ overflow: hidden;
+ z-index: 0;
+}
+.timeline-band-input input{
+ width: 0;
+}
+
+.timeline-band-layer {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
+
+.timeline-band-layer-inner {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
diff --git a/htdocs/js/timeline_js/timeline-bundle.js b/htdocs/js/timeline_js/timeline-bundle.js
new file mode 100644
index 00000000..a8c0ac8a
--- /dev/null
+++ b/htdocs/js/timeline_js/timeline-bundle.js
@@ -0,0 +1,2835 @@
+
+
+/* band.js */
+Timeline._Band=function(B,G,C){if(B.autoWidth&&typeof G.width=="string"){G.width=G.width.indexOf("%")>-1?0:parseInt(G.width);
+}this._timeline=B;
+this._bandInfo=G;
+this._index=C;
+this._locale=("locale" in G)?G.locale:Timeline.getDefaultLocale();
+this._timeZone=("timeZone" in G)?G.timeZone:0;
+this._labeller=("labeller" in G)?G.labeller:(("createLabeller" in B.getUnit())?B.getUnit().createLabeller(this._locale,this._timeZone):new Timeline.GregorianDateLabeller(this._locale,this._timeZone));
+this._theme=G.theme;
+this._zoomIndex=("zoomIndex" in G)?G.zoomIndex:0;
+this._zoomSteps=("zoomSteps" in G)?G.zoomSteps:null;
+this._dragging=false;
+this._changing=false;
+this._originalScrollSpeed=5;
+this._scrollSpeed=this._originalScrollSpeed;
+this._onScrollListeners=[];
+var A=this;
+this._syncWithBand=null;
+this._syncWithBandHandler=function(H){A._onHighlightBandScroll();
+};
+this._selectorListener=function(H){A._onHighlightBandScroll();
+};
+var E=this._timeline.getDocument().createElement("div");
+E.className="timeline-band-input";
+this._timeline.addDiv(E);
+this._keyboardInput=document.createElement("input");
+this._keyboardInput.type="text";
+E.appendChild(this._keyboardInput);
+SimileAjax.DOM.registerEventWithObject(this._keyboardInput,"keydown",this,"_onKeyDown");
+SimileAjax.DOM.registerEventWithObject(this._keyboardInput,"keyup",this,"_onKeyUp");
+this._div=this._timeline.getDocument().createElement("div");
+this._div.id="timeline-band-"+C;
+this._div.className="timeline-band timeline-band-"+C;
+this._timeline.addDiv(this._div);
+SimileAjax.DOM.registerEventWithObject(this._div,"mousedown",this,"_onMouseDown");
+SimileAjax.DOM.registerEventWithObject(this._div,"mousemove",this,"_onMouseMove");
+SimileAjax.DOM.registerEventWithObject(this._div,"mouseup",this,"_onMouseUp");
+SimileAjax.DOM.registerEventWithObject(this._div,"mouseout",this,"_onMouseOut");
+SimileAjax.DOM.registerEventWithObject(this._div,"dblclick",this,"_onDblClick");
+var F=this._theme!=null?this._theme.mouseWheel:"scroll";
+if(F==="zoom"||F==="scroll"||this._zoomSteps){if(SimileAjax.Platform.browser.isFirefox){SimileAjax.DOM.registerEventWithObject(this._div,"DOMMouseScroll",this,"_onMouseScroll");
+}else{SimileAjax.DOM.registerEventWithObject(this._div,"mousewheel",this,"_onMouseScroll");
+}}this._innerDiv=this._timeline.getDocument().createElement("div");
+this._innerDiv.className="timeline-band-inner";
+this._div.appendChild(this._innerDiv);
+this._ether=G.ether;
+G.ether.initialize(this,B);
+this._etherPainter=G.etherPainter;
+G.etherPainter.initialize(this,B);
+this._eventSource=G.eventSource;
+if(this._eventSource){this._eventListener={onAddMany:function(){A._onAddMany();
+},onClear:function(){A._onClear();
+}};
+this._eventSource.addListener(this._eventListener);
+}this._eventPainter=G.eventPainter;
+this._eventTracksNeeded=0;
+this._eventTrackIncrement=0;
+G.eventPainter.initialize(this,B);
+this._decorators=("decorators" in G)?G.decorators:[];
+for(var D=0;
+Dthis._eventTracksNeeded){this._eventTracksNeeded=A;
+}};
+Timeline._Band.prototype.checkAutoWidth=function(){if(!this._timeline.autoWidth){return ;
+}var C=this._eventPainter.getType()=="overview";
+var A=C?this._theme.event.overviewTrack.autoWidthMargin:this._theme.event.track.autoWidthMargin;
+var B=Math.ceil((this._eventTracksNeeded+A)*this._eventTrackIncrement);
+B+=C?this._theme.event.overviewTrack.offset:this._theme.event.track.offset;
+var D=this._bandInfo;
+if(B!=D.width){D.width=B;
+}};
+Timeline._Band.prototype.layout=function(){this.paint();
+};
+Timeline._Band.prototype.paint=function(){this._etherPainter.paint();
+this._paintDecorators();
+this._paintEvents();
+};
+Timeline._Band.prototype.softLayout=function(){this.softPaint();
+};
+Timeline._Band.prototype.softPaint=function(){this._etherPainter.softPaint();
+this._softPaintDecorators();
+this._softPaintEvents();
+};
+Timeline._Band.prototype.setBandShiftAndWidth=function(A,D){var C=this._keyboardInput.parentNode;
+var B=A+Math.floor(D/2);
+if(this._timeline.isHorizontal()){this._div.style.top=A+"px";
+this._div.style.height=D+"px";
+C.style.top=B+"px";
+C.style.left="-1em";
+}else{this._div.style.left=A+"px";
+this._div.style.width=D+"px";
+C.style.left=B+"px";
+C.style.top="-1em";
+}};
+Timeline._Band.prototype.getViewWidth=function(){if(this._timeline.isHorizontal()){return this._div.offsetHeight;
+}else{return this._div.offsetWidth;
+}};
+Timeline._Band.prototype.setViewLength=function(A){this._viewLength=A;
+this._recenterDiv();
+this._onChanging();
+};
+Timeline._Band.prototype.getViewLength=function(){return this._viewLength;
+};
+Timeline._Band.prototype.getTotalViewLength=function(){return Timeline._Band.SCROLL_MULTIPLES*this._viewLength;
+};
+Timeline._Band.prototype.getViewOffset=function(){return this._viewOffset;
+};
+Timeline._Band.prototype.getMinDate=function(){return this._ether.pixelOffsetToDate(this._viewOffset);
+};
+Timeline._Band.prototype.getMaxDate=function(){return this._ether.pixelOffsetToDate(this._viewOffset+Timeline._Band.SCROLL_MULTIPLES*this._viewLength);
+};
+Timeline._Band.prototype.getMinVisibleDate=function(){return this._ether.pixelOffsetToDate(0);
+};
+Timeline._Band.prototype.getMinVisibleDateAfterDelta=function(A){return this._ether.pixelOffsetToDate(A);
+};
+Timeline._Band.prototype.getMaxVisibleDate=function(){return this._ether.pixelOffsetToDate(this._viewLength);
+};
+Timeline._Band.prototype.getMaxVisibleDateAfterDelta=function(A){return this._ether.pixelOffsetToDate(this._viewLength+A);
+};
+Timeline._Band.prototype.getCenterVisibleDate=function(){return this._ether.pixelOffsetToDate(this._viewLength/2);
+};
+Timeline._Band.prototype.setMinVisibleDate=function(A){if(!this._changing){this._moveEther(Math.round(-this._ether.dateToPixelOffset(A)));
+}};
+Timeline._Band.prototype.setMaxVisibleDate=function(A){if(!this._changing){this._moveEther(Math.round(this._viewLength-this._ether.dateToPixelOffset(A)));
+}};
+Timeline._Band.prototype.setCenterVisibleDate=function(A){if(!this._changing){this._moveEther(Math.round(this._viewLength/2-this._ether.dateToPixelOffset(A)));
+}};
+Timeline._Band.prototype.dateToPixelOffset=function(A){return this._ether.dateToPixelOffset(A)-this._viewOffset;
+};
+Timeline._Band.prototype.pixelOffsetToDate=function(A){return this._ether.pixelOffsetToDate(A+this._viewOffset);
+};
+Timeline._Band.prototype.createLayerDiv=function(C,A){var D=this._timeline.getDocument().createElement("div");
+D.className="timeline-band-layer"+(typeof A=="string"?(" "+A):"");
+D.style.zIndex=C;
+this._innerDiv.appendChild(D);
+var B=this._timeline.getDocument().createElement("div");
+B.className="timeline-band-layer-inner";
+if(SimileAjax.Platform.browser.isIE){B.style.cursor="move";
+}else{B.style.cursor="-moz-grab";
+}D.appendChild(B);
+return B;
+};
+Timeline._Band.prototype.removeLayerDiv=function(A){this._innerDiv.removeChild(A.parentNode);
+};
+Timeline._Band.prototype.scrollToCenter=function(A,C){var B=this._ether.dateToPixelOffset(A);
+if(B<-this._viewLength/2){this.setCenterVisibleDate(this.pixelOffsetToDate(B+this._viewLength));
+}else{if(B>3*this._viewLength/2){this.setCenterVisibleDate(this.pixelOffsetToDate(B-this._viewLength));
+}}this._autoScroll(Math.round(this._viewLength/2-this._ether.dateToPixelOffset(A)),C);
+};
+Timeline._Band.prototype.showBubbleForEvent=function(C){var A=this.getEventSource().getEvent(C);
+if(A){var B=this;
+this.scrollToCenter(A.getStart(),function(){B._eventPainter.showBubble(A);
+});
+}};
+Timeline._Band.prototype.zoom=function(C,A,F,E){if(!this._zoomSteps){return ;
+}A+=this._viewOffset;
+var D=this._ether.pixelOffsetToDate(A);
+var B=this._ether.zoom(C);
+this._etherPainter.zoom(B);
+this._moveEther(Math.round(-this._ether.dateToPixelOffset(D)));
+this._moveEther(A);
+};
+Timeline._Band.prototype._onMouseDown=function(B,A,C){this.closeBubble();
+this._dragging=true;
+this._dragX=A.clientX;
+this._dragY=A.clientY;
+};
+Timeline._Band.prototype._onMouseMove=function(D,A,E){if(this._dragging){var C=A.clientX-this._dragX;
+var B=A.clientY-this._dragY;
+this._dragX=A.clientX;
+this._dragY=A.clientY;
+this._moveEther(this._timeline.isHorizontal()?C:B);
+this._positionHighlight();
+}};
+Timeline._Band.prototype._onMouseUp=function(B,A,C){this._dragging=false;
+this._keyboardInput.focus();
+};
+Timeline._Band.prototype._onMouseOut=function(C,B,D){var A=SimileAjax.DOM.getEventRelativeCoordinates(B,C);
+A.x+=this._viewOffset;
+if(A.x<0||A.x>C.offsetWidth||A.y<0||A.y>C.offsetHeight){this._dragging=false;
+}};
+Timeline._Band.prototype._onMouseScroll=function(G,H,B){var A=new Date();
+A=A.getTime();
+if(!this._lastScrollTime||((A-this._lastScrollTime)>50)){this._lastScrollTime=A;
+var I=0;
+if(H.wheelDelta){I=H.wheelDelta/120;
+}else{if(H.detail){I=-H.detail/3;
+}}var F=this._theme.mouseWheel;
+if(this._zoomSteps||F==="zoom"){var E=SimileAjax.DOM.getEventRelativeCoordinates(H,G);
+if(I!=0){var D;
+if(I>0){D=true;
+}if(I<0){D=false;
+}this._timeline.zoom(D,E.x,E.y,G);
+}}else{if(F==="scroll"){var C=50*(I<0?-1:1);
+this._moveEther(C);
+}}}if(H.stopPropagation){H.stopPropagation();
+}H.cancelBubble=true;
+if(H.preventDefault){H.preventDefault();
+}H.returnValue=false;
+};
+Timeline._Band.prototype._onDblClick=function(C,B,E){var A=SimileAjax.DOM.getEventRelativeCoordinates(B,C);
+var D=A.x-(this._viewLength/2-this._viewOffset);
+this._autoScroll(-D);
+};
+Timeline._Band.prototype._onKeyDown=function(B,A,C){if(!this._dragging){switch(A.keyCode){case 27:break;
+case 37:case 38:this._scrollSpeed=Math.min(50,Math.abs(this._scrollSpeed*1.05));
+this._moveEther(this._scrollSpeed);
+break;
+case 39:case 40:this._scrollSpeed=-Math.min(50,Math.abs(this._scrollSpeed*1.05));
+this._moveEther(this._scrollSpeed);
+break;
+default:return true;
+}this.closeBubble();
+SimileAjax.DOM.cancelEvent(A);
+return false;
+}return true;
+};
+Timeline._Band.prototype._onKeyUp=function(B,A,C){if(!this._dragging){this._scrollSpeed=this._originalScrollSpeed;
+switch(A.keyCode){case 35:this.setCenterVisibleDate(this._eventSource.getLatestDate());
+break;
+case 36:this.setCenterVisibleDate(this._eventSource.getEarliestDate());
+break;
+case 33:this._autoScroll(this._timeline.getPixelLength());
+break;
+case 34:this._autoScroll(-this._timeline.getPixelLength());
+break;
+default:return true;
+}this.closeBubble();
+SimileAjax.DOM.cancelEvent(A);
+return false;
+}return true;
+};
+Timeline._Band.prototype._autoScroll=function(D,C){var A=this;
+var B=SimileAjax.Graphics.createAnimation(function(E,F){A._moveEther(F);
+},0,D,1000,C);
+B.run();
+};
+Timeline._Band.prototype._moveEther=function(A){this.closeBubble();
+if(!this._timeline.shiftOK(this._index,A)){return ;
+}this._viewOffset+=A;
+this._ether.shiftPixels(-A);
+if(this._timeline.isHorizontal()){this._div.style.left=this._viewOffset+"px";
+}else{this._div.style.top=this._viewOffset+"px";
+}if(this._viewOffset>-this._viewLength*0.5||this._viewOffset<-this._viewLength*(Timeline._Band.SCROLL_MULTIPLES-1.5)){this._recenterDiv();
+}else{this.softLayout();
+}this._onChanging();
+};
+Timeline._Band.prototype._onChanging=function(){this._changing=true;
+this._fireOnScroll();
+this._setSyncWithBandDate();
+this._changing=false;
+};
+Timeline._Band.prototype.busy=function(){return(this._changing);
+};
+Timeline._Band.prototype._fireOnScroll=function(){for(var A=0;
+A";
+this._eventLayer.appendChild(q);
+var I=this;
+var R=function(r){try{var w=parseInt(this.getAttribute("index"));
+var u=q.firstChild.childNodes;
+for(var s=0;
+s0){W[B-1].end=Math.max(W[B-1].end,U);
+}var E=I.height+X.iconBottomMargin+C;
+while(E>0){W.push({start:N,end:U});
+E-=X.trackHeight;
+}}var P=a.text;
+var H=this._frc.computeSize(P);
+var M=H.height+X.labelBottomMargin+C;
+var J=U+H.width+X.labelRightMargin;
+if(B>0){W[B-1].end=Math.max(W[B-1].end,J);
+}for(var Y=0;
+M>0;
+Y++){if(B+Y=0){var D=this._timeline.getDocument();
+var G=E.event;
+var B=G.highlightColors[Math.min(A,G.highlightColors.length-1)];
+var F=D.createElement("div");
+F.style.position="absolute";
+F.style.overflow="hidden";
+F.style.left=(C.left-2)+"px";
+F.style.width=(C.width+4)+"px";
+F.style.top=(C.top-2)+"px";
+F.style.height=(C.height+4)+"px";
+this._highlightLayer.appendChild(F);
+}};
+Timeline.CompactEventPainter.prototype._onClickMultiplePreciseInstantEvent=function(E,A,B){var F=SimileAjax.DOM.getPageCoordinates(E);
+this._showBubble(F.left+Math.ceil(E.offsetWidth/2),F.top+Math.ceil(E.offsetHeight/2),B);
+var D=[];
+for(var C=0;
+C0){E=this._unit.later(E,this._startDate);
+A=this._unit.earlier(A,this._endDate);
+var F=this._band.dateToPixelOffset(E);
+var I=this._band.dateToPixelOffset(A);
+var H=this._timeline.getDocument();
+var K=function(){var L=H.createElement("table");
+L.insertRow(0).insertCell(0);
+return L;
+};
+var B=H.createElement("div");
+B.className="timeline-highlight-decorator";
+if(this._cssClass){B.className+=" "+this._cssClass;
+}if(this._color!=null){B.style.backgroundColor=this._color;
+}if(this._opacity<100){SimileAjax.Graphics.setOpacity(B,this._opacity);
+}this._layerDiv.appendChild(B);
+var J=K();
+J.className="timeline-highlight-label timeline-highlight-label-start";
+var C=J.rows[0].cells[0];
+C.innerHTML=this._startLabel;
+if(this._cssClass){C.className="label_"+this._cssClass;
+}this._layerDiv.appendChild(J);
+var G=K();
+G.className="timeline-highlight-label timeline-highlight-label-end";
+var D=G.rows[0].cells[0];
+D.innerHTML=this._endLabel;
+if(this._cssClass){D.className="label_"+this._cssClass;
+}this._layerDiv.appendChild(G);
+if(this._timeline.isHorizontal()){B.style.left=F+"px";
+B.style.width=(I-F)+"px";
+J.style.right=(this._band.getTotalViewLength()-F)+"px";
+J.style.width=(this._startLabel.length)+"em";
+G.style.left=I+"px";
+G.style.width=(this._endLabel.length)+"em";
+}else{B.style.top=F+"px";
+B.style.height=(I-F)+"px";
+J.style.bottom=F+"px";
+J.style.height="1.5px";
+G.style.top=I+"px";
+G.style.height="1.5px";
+}}this._layerDiv.style.display="block";
+};
+Timeline.SpanHighlightDecorator.prototype.softPaint=function(){};
+Timeline.PointHighlightDecorator=function(A){this._unit=A.unit!=null?A.unit:SimileAjax.NativeDateUnit;
+this._date=(typeof A.date=="string")?this._unit.parseFromObject(A.date):A.date;
+this._width=A.width!=null?A.width:10;
+this._color=A.color;
+this._cssClass=A.cssClass!=null?A.cssClass:"";
+this._opacity=A.opacity!=null?A.opacity:100;
+};
+Timeline.PointHighlightDecorator.prototype.initialize=function(B,A){this._band=B;
+this._timeline=A;
+this._layerDiv=null;
+};
+Timeline.PointHighlightDecorator.prototype.paint=function(){if(this._layerDiv!=null){this._band.removeLayerDiv(this._layerDiv);
+}this._layerDiv=this._band.createLayerDiv(10);
+this._layerDiv.setAttribute("name","span-highlight-decorator");
+this._layerDiv.style.display="none";
+var C=this._band.getMinDate();
+var E=this._band.getMaxDate();
+if(this._unit.compare(this._date,E)<0&&this._unit.compare(this._date,C)>0){var A=this._band.dateToPixelOffset(this._date);
+var B=A-Math.round(this._width/2);
+var D=this._timeline.getDocument();
+var F=D.createElement("div");
+F.className="timeline-highlight-point-decorator";
+F.className+=" "+this._cssClass;
+if(this._color!=null){F.style.backgroundColor=this._color;
+}if(this._opacity<100){SimileAjax.Graphics.setOpacity(F,this._opacity);
+}this._layerDiv.appendChild(F);
+if(this._timeline.isHorizontal()){F.style.left=B+"px";
+F.style.width=this._width;
+}else{F.style.top=B+"px";
+F.style.height=this._width;
+}}this._layerDiv.style.display="block";
+};
+Timeline.PointHighlightDecorator.prototype.softPaint=function(){};
+
+
+/* detailed-painter.js */
+Timeline.DetailedEventPainter=function(A){this._params=A;
+this._onSelectListeners=[];
+this._filterMatcher=null;
+this._highlightMatcher=null;
+this._frc=null;
+this._eventIdToElmt={};
+};
+Timeline.DetailedEventPainter.prototype.initialize=function(B,A){this._band=B;
+this._timeline=A;
+this._backLayer=null;
+this._eventLayer=null;
+this._lineLayer=null;
+this._highlightLayer=null;
+this._eventIdToElmt=null;
+};
+Timeline.DetailedEventPainter.prototype.getType=function(){return"detailed";
+};
+Timeline.DetailedEventPainter.prototype.addOnSelectListener=function(A){this._onSelectListeners.push(A);
+};
+Timeline.DetailedEventPainter.prototype.removeOnSelectListener=function(B){for(var A=0;
+A=K+E.width){D.solid=C;
+D.text=K;
+}else{D.solid=C;
+K=H+S.event.label.offsetFromLine;
+O=this._findFreeTrackForText(F,K+E.width,function(U){U.line=H-2;
+});
+this._getTrackData(O).text=C;
+this._paintEventLine(L,H,F,O,P,S);
+}var N=Math.round(P.trackOffset+O*P.trackIncrement+P.trackHeight/2-E.height/2);
+var R=this._paintEventLabel(L,J,K,N,E.width,E.height,S);
+var M=this;
+var I=function(V,U,W){return M._onClickInstantEvent(B.elmt,U,L);
+};
+SimileAjax.DOM.registerEvent(B.elmt,"mousedown",I);
+SimileAjax.DOM.registerEvent(R.elmt,"mousedown",I);
+this._createHighlightDiv(Q,B,S);
+this._eventIdToElmt[L.getID()]=B.elmt;
+};
+Timeline.DetailedEventPainter.prototype.paintImpreciseInstantEvent=function(O,S,W,T){var X=this._timeline.getDocument();
+var M=O.getText();
+var I=O.getStart();
+var U=O.getEnd();
+var K=Math.round(this._band.dateToPixelOffset(I));
+var B=Math.round(this._band.dateToPixelOffset(U));
+var A=Math.round(K+S.iconWidth/2);
+var D=Math.round(K-S.iconWidth/2);
+var G=this._frc.computeSize(M);
+var H=this._findFreeTrackForSolid(B,K);
+var E=this._paintEventTape(O,H,K,B,W.event.instant.impreciseColor,W.event.instant.impreciseOpacity,S,W);
+var C=this._paintEventIcon(O,H,D,S,W);
+var F=this._getTrackData(H);
+F.solid=D;
+var N=A+W.event.label.offsetFromLine;
+var J=N+G.width;
+var R;
+if(JD&&(!(A)||B.line>A)){return C;
+}}else{this._lowerTracks.push({solid:Number.POSITIVE_INFINITY,text:Number.POSITIVE_INFINITY,line:Number.POSITIVE_INFINITY});
+return C;
+}if(CD&&(!(A)||B.line>A)){return -1-C;
+}}else{this._upperTracks.push({solid:Number.POSITIVE_INFINITY,text:Number.POSITIVE_INFINITY,line:Number.POSITIVE_INFINITY});
+return -1-C;
+}}};
+Timeline.DetailedEventPainter.prototype._findFreeTrackForText=function(C,A,I){var B;
+var E;
+var F;
+var H;
+if(C<0){B=true;
+F=-C;
+E=this._findFreeUpperTrackForText(F,A);
+H=-1-E;
+}else{if(C>0){B=false;
+F=C+1;
+E=this._findFreeLowerTrackForText(F,A);
+H=E;
+}else{var G=this._findFreeUpperTrackForText(0,A);
+var J=this._findFreeLowerTrackForText(1,A);
+if(J-1<=G){B=false;
+F=1;
+E=J;
+H=E;
+}else{B=true;
+F=0;
+E=G;
+H=-1-E;
+}}}if(B){if(E==this._upperTracks.length){this._upperTracks.push({solid:Number.POSITIVE_INFINITY,text:Number.POSITIVE_INFINITY,line:Number.POSITIVE_INFINITY});
+}for(var D=F;
+D=C){break;
+}}return A;
+};
+Timeline.DetailedEventPainter.prototype._findFreeUpperTrackForText=function(A,C){for(;
+A=C){break;
+}}return A;
+};
+Timeline.DetailedEventPainter.prototype._getTrackData=function(A){return(A<0)?this._upperTracks[-A-1]:this._lowerTracks[A];
+};
+Timeline.DetailedEventPainter.prototype._paintEventLine=function(J,E,D,A,G,F){var H=Math.round(G.trackOffset+D*G.trackIncrement+G.trackHeight/2);
+var I=Math.round(Math.abs(A-D)*G.trackIncrement);
+var C="1px solid "+F.event.label.lineColor;
+var B=this._timeline.getDocument().createElement("div");
+B.style.position="absolute";
+B.style.left=E+"px";
+B.style.width=F.event.label.offsetFromLine+"px";
+B.style.height=I+"px";
+if(D>A){B.style.top=(H-I)+"px";
+B.style.borderTop=C;
+}else{B.style.top=H+"px";
+B.style.borderBottom=C;
+}B.style.borderLeft=C;
+this._lineLayer.appendChild(B);
+};
+Timeline.DetailedEventPainter.prototype._paintEventIcon=function(J,B,C,F,E){var H=J.getIcon();
+H=H!=null?H:F.icon;
+var G=F.trackOffset+B*F.trackIncrement+F.trackHeight/2;
+var I=Math.round(G-F.iconHeight/2);
+var D=SimileAjax.Graphics.createTranslucentImage(H);
+var A=this._timeline.getDocument().createElement("div");
+A.style.position="absolute";
+A.style.left=C+"px";
+A.style.top=I+"px";
+A.appendChild(D);
+A.style.cursor="pointer";
+if(J._title!=null){A.title=J._title;
+}this._eventLayer.appendChild(A);
+return{left:C,top:I,width:F.iconWidth,height:F.iconHeight,elmt:A};
+};
+Timeline.DetailedEventPainter.prototype._paintEventLabel=function(I,J,C,F,A,G,E){var H=this._timeline.getDocument();
+var K=H.createElement("div");
+K.style.position="absolute";
+K.style.left=C+"px";
+K.style.width=A+"px";
+K.style.top=F+"px";
+K.style.height=G+"px";
+K.style.backgroundColor=E.event.label.backgroundColor;
+SimileAjax.Graphics.setOpacity(K,E.event.label.backgroundOpacity);
+this._eventLayer.appendChild(K);
+var B=H.createElement("div");
+B.style.position="absolute";
+B.style.left=C+"px";
+B.style.width=A+"px";
+B.style.top=F+"px";
+B.innerHTML=J;
+B.style.cursor="pointer";
+if(I._title!=null){B.title=I._title;
+}var D=I.getTextColor();
+if(D==null){D=I.getColor();
+}if(D!=null){B.style.color=D;
+}this._eventLayer.appendChild(B);
+return{left:C,top:F,width:A,height:G,elmt:B};
+};
+Timeline.DetailedEventPainter.prototype._paintEventTape=function(L,B,D,A,G,C,I,H){var F=A-D;
+var E=H.event.tape.height;
+var K=I.trackOffset+B*I.trackIncrement+I.trackHeight/2;
+var J=Math.round(K-E/2);
+var M=this._timeline.getDocument().createElement("div");
+M.style.position="absolute";
+M.style.left=D+"px";
+M.style.width=F+"px";
+M.style.top=J+"px";
+M.style.height=E+"px";
+M.style.backgroundColor=G;
+M.style.overflow="hidden";
+M.style.cursor="pointer";
+if(L._title!=null){M.title=L._title;
+}SimileAjax.Graphics.setOpacity(M,C);
+this._eventLayer.appendChild(M);
+return{left:D,top:J,width:F,height:E,elmt:M};
+};
+Timeline.DetailedEventPainter.prototype._createHighlightDiv=function(A,C,E){if(A>=0){var D=this._timeline.getDocument();
+var G=E.event;
+var B=G.highlightColors[Math.min(A,G.highlightColors.length-1)];
+var F=D.createElement("div");
+F.style.position="absolute";
+F.style.overflow="hidden";
+F.style.left=(C.left-2)+"px";
+F.style.width=(C.width+4)+"px";
+F.style.top=(C.top-2)+"px";
+F.style.height=(C.height+4)+"px";
+F.style.background=B;
+this._highlightLayer.appendChild(F);
+}};
+Timeline.DetailedEventPainter.prototype._onClickInstantEvent=function(C,A,B){var D=SimileAjax.DOM.getPageCoordinates(C);
+this._showBubble(D.left+Math.ceil(C.offsetWidth/2),D.top+Math.ceil(C.offsetHeight/2),B);
+this._fireOnSelect(B.getID());
+A.cancelBubble=true;
+SimileAjax.DOM.cancelEvent(A);
+return false;
+};
+Timeline.DetailedEventPainter.prototype._onClickDurationEvent=function(F,B,C){if("pageX" in B){var A=B.pageX;
+var E=B.pageY;
+}else{var D=SimileAjax.DOM.getPageCoordinates(F);
+var A=B.offsetX+D.left;
+var E=B.offsetY+D.top;
+}this._showBubble(A,E,C);
+this._fireOnSelect(C.getID());
+B.cancelBubble=true;
+SimileAjax.DOM.cancelEvent(B);
+return false;
+};
+Timeline.DetailedEventPainter.prototype.showBubble=function(A){var B=this._eventIdToElmt[A.getID()];
+if(B){var C=SimileAjax.DOM.getPageCoordinates(B);
+this._showBubble(C.left+B.offsetWidth/2,C.top+B.offsetHeight/2,A);
+}};
+Timeline.DetailedEventPainter.prototype._showBubble=function(B,E,C){var D=document.createElement("div");
+var A=this._params.theme.event.bubble;
+C.fillInfoBubble(D,this._params.theme,this._band.getLabeller());
+SimileAjax.WindowManager.cancelPopups();
+SimileAjax.Graphics.createBubbleForContentAndPoint(D,B,E,A.width,null,A.maxHeight);
+};
+Timeline.DetailedEventPainter.prototype._fireOnSelect=function(A){for(var B=0;
+BE;
+D++){var A=this._zones[D];
+if(EA.startTime){this._zones.splice(D,0,{startTime:A.startTime,endTime:E,unit:A.unit,multiple:A.multiple});
+D++;
+A.startTime=E;
+}if(B=0){if(A.getTime()>this._zones[E].startTime){break;
+}E--;
+}for(var H=D;
+H<=E;
+H++){var G=this._zones[H];
+var K=new Date(Math.max(C.getTime(),G.startTime));
+var F=new Date(Math.min(A.getTime(),G.endTime));
+SimileAjax.DateTime.roundDownToInterval(K,G.unit,I,G.multiple,this._theme.firstDayOfWeek);
+SimileAjax.DateTime.roundUpToInterval(F,G.unit,I,G.multiple,this._theme.firstDayOfWeek);
+while(K.getTime()0)){C=B-1;
+}if(!D&&(B<(this._band._zoomSteps.length-1))){C=B+1;
+}this._band._zoomIndex=C;
+this._interval=SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[C].unit];
+this._pixelsPerInterval=this._band._zoomSteps[C].pixelsPerInterval;
+A=this._band._zoomSteps[C].unit-this._band._zoomSteps[B].unit;
+return A;
+};
+Timeline.HotZoneEther=function(A){this._params=A;
+this._interval=A.interval;
+this._pixelsPerInterval=A.pixelsPerInterval;
+this._theme=A.theme;
+};
+Timeline.HotZoneEther.prototype.initialize=function(I,H){this._band=I;
+this._timeline=H;
+this._unit=H.getUnit();
+this._zones=[{startTime:Number.NEGATIVE_INFINITY,endTime:Number.POSITIVE_INFINITY,magnify:1}];
+var D=this._params;
+for(var E=0;
+E0;
+C++){var A=this._zones[C];
+if(this._unit.compare(F,A.endTime)<0){if(this._unit.compare(F,A.startTime)>0){this._zones.splice(C,0,{startTime:A.startTime,endTime:F,magnify:A.magnify});
+C++;
+A.startTime=F;
+}if(this._unit.compare(B,A.endTime)<0){this._zones.splice(C,0,{startTime:F,endTime:B,magnify:G.magnify*A.magnify});
+C++;
+A.startTime=B;
+F=B;
+}else{A.magnify*=G.magnify;
+F=A.endTime;
+}}}}if("startsOn" in this._params){this._start=this._unit.parseFromObject(this._params.startsOn);
+}else{if("endsOn" in this._params){this._start=this._unit.parseFromObject(this._params.endsOn);
+this.shiftPixels(-this._timeline.getPixelLength());
+}else{if("centersOn" in this._params){this._start=this._unit.parseFromObject(this._params.centersOn);
+this.shiftPixels(-this._timeline.getPixelLength()/2);
+}else{this._start=this._unit.makeDefaultValue();
+this.shiftPixels(-this._timeline.getPixelLength()/2);
+}}}};
+Timeline.HotZoneEther.prototype.setDate=function(A){this._start=this._unit.cloneValue(A);
+};
+Timeline.HotZoneEther.prototype.shiftPixels=function(A){this._start=this.pixelOffsetToDate(A);
+};
+Timeline.HotZoneEther.prototype.dateToPixelOffset=function(A){return this._dateDiffToPixelOffset(this._start,A);
+};
+Timeline.HotZoneEther.prototype.pixelOffsetToDate=function(A){return this._pixelOffsetToDate(A,this._start);
+};
+Timeline.HotZoneEther.prototype.zoom=function(D){var A=0;
+var B=this._band._zoomIndex;
+var C=B;
+if(D&&(B>0)){C=B-1;
+}if(!D&&(B<(this._band._zoomSteps.length-1))){C=B+1;
+}this._band._zoomIndex=C;
+this._interval=SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[C].unit];
+this._pixelsPerInterval=this._band._zoomSteps[C].pixelsPerInterval;
+A=this._band._zoomSteps[C].unit-this._band._zoomSteps[B].unit;
+return A;
+};
+Timeline.HotZoneEther.prototype._dateDiffToPixelOffset=function(H,C){var D=this._getScale();
+var I=H;
+var B=C;
+var E=0;
+if(this._unit.compare(I,B)<0){var G=0;
+while(G=0){if(this._unit.compare(I,this._zones[G].startTime)>0){break;
+}G--;
+}while(this._unit.compare(I,B)>0){var F=this._zones[G];
+var A=this._unit.later(B,F.startTime);
+E+=(this._unit.compare(A,I)/(D/F.magnify));
+I=A;
+G--;
+}}return E;
+};
+Timeline.HotZoneEther.prototype._pixelOffsetToDate=function(E,B){var G=this._getScale();
+var D=B;
+if(E>0){var F=0;
+while(F0){var A=this._zones[F];
+var H=G/A.magnify;
+if(A.endTime==Number.POSITIVE_INFINITY){D=this._unit.change(D,E*H);
+E=0;
+}else{var C=this._unit.compare(A.endTime,D)/H;
+if(C>E){D=this._unit.change(D,E*H);
+E=0;
+}else{D=A.endTime;
+E-=C;
+}}F++;
+}}else{var F=this._zones.length-1;
+while(F>=0){if(this._unit.compare(D,this._zones[F].startTime)>0){break;
+}F--;
+}E=-E;
+while(E>0){var A=this._zones[F];
+var H=G/A.magnify;
+if(A.startTime==Number.NEGATIVE_INFINITY){D=this._unit.change(D,-E*H);
+E=0;
+}else{var C=this._unit.compare(D,A.startTime)/H;
+if(C>E){D=this._unit.change(D,-E*H);
+E=0;
+}else{D=A.startTime;
+E-=C;
+}}F--;
+}}return D;
+};
+Timeline.HotZoneEther.prototype._getScale=function(){return this._interval/this._pixelsPerInterval;
+};
+
+
+/* event-utils.js */
+Timeline.EventUtils={};
+Timeline.EventUtils.getNewEventID=function(){if(this._lastEventID==null){this._lastEventID=0;
+}this._lastEventID+=1;
+return"e"+this._lastEventID;
+};
+Timeline.EventUtils.decodeEventElID=function(C){var D=C.split("-");
+if(D[1]!="tl"){alert("Internal Timeline problem 101, please consult support");
+return{band:null,evt:null};
+}var B=Timeline.getTimelineFromID(D[2]);
+var E=B.getBand(D[3]);
+var A=E.getEventSource.getEvent(D[4]);
+return{band:E,evt:A};
+};
+Timeline.EventUtils.encodeEventElID=function(B,D,C,A){return C+"-tl-"+B.timelineID+"-"+D.getIndex()+"-"+A.getID();
+};
+
+
+/* labellers.js */
+Timeline.GregorianDateLabeller=function(B,A){this._locale=B;
+this._timeZone=A;
+};
+Timeline.GregorianDateLabeller.monthNames=[];
+Timeline.GregorianDateLabeller.dayNames=[];
+Timeline.GregorianDateLabeller.labelIntervalFunctions=[];
+Timeline.GregorianDateLabeller.getMonthName=function(B,A){return Timeline.GregorianDateLabeller.monthNames[A][B];
+};
+Timeline.GregorianDateLabeller.prototype.labelInterval=function(A,C){var B=Timeline.GregorianDateLabeller.labelIntervalFunctions[this._locale];
+if(B==null){B=Timeline.GregorianDateLabeller.prototype.defaultLabelInterval;
+}return B.call(this,A,C);
+};
+Timeline.GregorianDateLabeller.prototype.labelPrecise=function(A){return SimileAjax.DateTime.removeTimeZoneOffset(A,this._timeZone).toUTCString();
+};
+Timeline.GregorianDateLabeller.prototype.defaultLabelInterval=function(B,C){var D;
+var F=false;
+B=SimileAjax.DateTime.removeTimeZoneOffset(B,this._timeZone);
+switch(C){case SimileAjax.DateTime.MILLISECOND:D=B.getUTCMilliseconds();
+break;
+case SimileAjax.DateTime.SECOND:D=B.getUTCSeconds();
+break;
+case SimileAjax.DateTime.MINUTE:var A=B.getUTCMinutes();
+if(A==0){D=B.getUTCHours()+":00";
+F=true;
+}else{D=A;
+}break;
+case SimileAjax.DateTime.HOUR:D=B.getUTCHours()+"hr";
+break;
+case SimileAjax.DateTime.DAY:D=Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(),this._locale)+" "+B.getUTCDate();
+break;
+case SimileAjax.DateTime.WEEK:D=Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(),this._locale)+" "+B.getUTCDate();
+break;
+case SimileAjax.DateTime.MONTH:var A=B.getUTCMonth();
+if(A!=0){D=Timeline.GregorianDateLabeller.getMonthName(A,this._locale);
+break;
+}case SimileAjax.DateTime.YEAR:case SimileAjax.DateTime.DECADE:case SimileAjax.DateTime.CENTURY:case SimileAjax.DateTime.MILLENNIUM:var E=B.getUTCFullYear();
+if(E>0){D=B.getUTCFullYear();
+}else{D=(1-E)+"BC";
+}F=(C==SimileAjax.DateTime.MONTH)||(C==SimileAjax.DateTime.DECADE&&E%100==0)||(C==SimileAjax.DateTime.CENTURY&&E%1000==0);
+break;
+default:D=B.toUTCString();
+}return{text:D,emphasized:F};
+};
+
+
+/* original-painter.js */
+Timeline.OriginalEventPainter=function(A){this._params=A;
+this._onSelectListeners=[];
+this._eventPaintListeners=[];
+this._filterMatcher=null;
+this._highlightMatcher=null;
+this._frc=null;
+this._eventIdToElmt={};
+};
+Timeline.OriginalEventPainter.prototype.initialize=function(B,A){this._band=B;
+this._timeline=A;
+this._backLayer=null;
+this._eventLayer=null;
+this._lineLayer=null;
+this._highlightLayer=null;
+this._eventIdToElmt=null;
+};
+Timeline.OriginalEventPainter.prototype.getType=function(){return"original";
+};
+Timeline.OriginalEventPainter.prototype.addOnSelectListener=function(A){this._onSelectListeners.push(A);
+};
+Timeline.OriginalEventPainter.prototype.removeOnSelectListener=function(B){for(var A=0;
+AD){break;
+}}return C;
+};
+Timeline.OriginalEventPainter.prototype._paintEventIcon=function(K,B,C,G,F,D){var I=K.getIcon();
+I=I!=null?I:G.icon;
+var J;
+if(D>0){J=G.trackOffset+B*G.trackIncrement+D+G.impreciseIconMargin;
+}else{var H=G.trackOffset+B*G.trackIncrement+G.trackHeight/2;
+J=Math.round(H-G.iconHeight/2);
+}var E=SimileAjax.Graphics.createTranslucentImage(I);
+var A=this._timeline.getDocument().createElement("div");
+A.className=this._getElClassName("timeline-event-icon",K,"icon");
+A.id=this._encodeEventElID("icon",K);
+A.style.left=C+"px";
+A.style.top=J+"px";
+A.appendChild(E);
+if(K._title!=null){A.title=K._title;
+}this._eventLayer.appendChild(A);
+return{left:C,top:J,width:G.iconWidth,height:G.iconHeight,elmt:A};
+};
+Timeline.OriginalEventPainter.prototype._paintEventLabel=function(K,L,D,H,A,J,G,E,C){var I=this._timeline.getDocument();
+var B=I.createElement("div");
+B.className=E;
+B.id=this._encodeEventElID("label",K);
+B.style.left=D+"px";
+B.style.width=A+"px";
+B.style.top=H+"px";
+B.innerHTML=L;
+if(K._title!=null){B.title=K._title;
+}var F=K.getTextColor();
+if(F==null){F=K.getColor();
+}if(F!=null){B.style.color=F;
+}if(G.event.highlightLabelBackground&&C>=0){B.style.background=this._getHighlightColor(C,G);
+}this._eventLayer.appendChild(B);
+return{left:D,top:H,width:A,height:J,elmt:B};
+};
+Timeline.OriginalEventPainter.prototype._paintEventTape=function(N,B,D,A,G,C,J,I,M){var F=A-D;
+var E=I.event.tape.height;
+var K=J.trackOffset+B*J.trackIncrement;
+var O=this._timeline.getDocument().createElement("div");
+O.className=this._getElClassName("timeline-event-tape",N,"tape");
+O.id=this._encodeEventElID("tape"+M,N);
+O.style.left=D+"px";
+O.style.width=F+"px";
+O.style.height=E+"px";
+O.style.top=K+"px";
+if(N._title!=null){O.title=N._title;
+}if(G!=null){O.style.backgroundColor=G;
+}var L=N.getTapeImage();
+var H=N.getTapeRepeat();
+H=H!=null?H:"repeat";
+if(L!=null){O.style.backgroundImage="url("+L+")";
+O.style.backgroundRepeat=H;
+}SimileAjax.Graphics.setOpacity(O,C);
+this._eventLayer.appendChild(O);
+return{left:D,top:K,width:F,height:E,elmt:O};
+};
+Timeline.OriginalEventPainter.prototype._getLabelDivClassName=function(A){return this._getElClassName("timeline-event-label",A,"label");
+};
+Timeline.OriginalEventPainter.prototype._getElClassName=function(D,C,A){var E=C.getClassName(),B=[];
+if(E){if(A){B.push(A+"-"+E+" ");
+}B.push(E+" ");
+}B.push(D);
+return(B.join(""));
+};
+Timeline.OriginalEventPainter.prototype._getHighlightColor=function(A,B){var C=B.event.highlightColors;
+return C[Math.min(A,C.length-1)];
+};
+Timeline.OriginalEventPainter.prototype._createHighlightDiv=function(A,D,F,B){var G=null;
+if(A>=0){var E=this._timeline.getDocument();
+var C=this._getHighlightColor(A,F);
+G=E.createElement("div");
+G.className=this._getElClassName("timeline-event-highlight",B,"highlight");
+G.id=this._encodeEventElID("highlight0",B);
+G.style.position="absolute";
+G.style.overflow="hidden";
+G.style.left=(D.left-2)+"px";
+G.style.width=(D.width+4)+"px";
+G.style.top=(D.top-2)+"px";
+G.style.height=(D.height+4)+"px";
+G.style.background=C;
+this._highlightLayer.appendChild(G);
+}return G;
+};
+Timeline.OriginalEventPainter.prototype._onClickInstantEvent=function(C,A,B){var D=SimileAjax.DOM.getPageCoordinates(C);
+this._showBubble(D.left+Math.ceil(C.offsetWidth/2),D.top+Math.ceil(C.offsetHeight/2),B);
+this._fireOnSelect(B.getID());
+A.cancelBubble=true;
+SimileAjax.DOM.cancelEvent(A);
+return false;
+};
+Timeline.OriginalEventPainter.prototype._onClickDurationEvent=function(F,B,C){if("pageX" in B){var A=B.pageX;
+var E=B.pageY;
+}else{var D=SimileAjax.DOM.getPageCoordinates(F);
+var A=B.offsetX+D.left;
+var E=B.offsetY+D.top;
+}this._showBubble(A,E,C);
+this._fireOnSelect(C.getID());
+B.cancelBubble=true;
+SimileAjax.DOM.cancelEvent(B);
+return false;
+};
+Timeline.OriginalEventPainter.prototype.showBubble=function(A){var B=this._eventIdToElmt[A.getID()];
+if(B){var C=SimileAjax.DOM.getPageCoordinates(B);
+this._showBubble(C.left+B.offsetWidth/2,C.top+B.offsetHeight/2,A);
+}};
+Timeline.OriginalEventPainter.prototype._showBubble=function(B,E,C){var D=document.createElement("div");
+var A=this._params.theme.event.bubble;
+C.fillInfoBubble(D,this._params.theme,this._band.getLabeller());
+SimileAjax.WindowManager.cancelPopups();
+SimileAjax.Graphics.createBubbleForContentAndPoint(D,B,E,A.width,null,A.maxHeight);
+};
+Timeline.OriginalEventPainter.prototype._fireOnSelect=function(A){for(var B=0;
+B=0){var D=this._timeline.getDocument();
+var G=E.event;
+var B=G.highlightColors[Math.min(A,G.highlightColors.length-1)];
+var F=D.createElement("div");
+F.style.position="absolute";
+F.style.overflow="hidden";
+F.style.left=(C.left-1)+"px";
+F.style.width=(C.width+2)+"px";
+F.style.top=(C.top-1)+"px";
+F.style.height=(C.height+2)+"px";
+F.style.background=B;
+this._highlightLayer.appendChild(F);
+}};
+Timeline.OverviewEventPainter.prototype.showBubble=function(A){};
+
+
+/* sources.js */
+Timeline.DefaultEventSource=function(A){this._events=(A instanceof Object)?A:new SimileAjax.EventIndex();
+this._listeners=[];
+};
+Timeline.DefaultEventSource.prototype.addListener=function(A){this._listeners.push(A);
+};
+Timeline.DefaultEventSource.prototype.removeListener=function(B){for(var A=0;
+A0){return A;
+}else{if(A.substr(0,1)=="/"){return B.substr(0,B.indexOf("/",B.indexOf("://")+3))+A;
+}else{return B+A;
+}}}};
+Timeline.DefaultEventSource.Event=function(A){function D(E){return(A[E]!=null&&A[E]!="")?A[E]:null;
+}var C=A.id?A.id.trim():"";
+this._id=C.length>0?C:Timeline.EventUtils.getNewEventID();
+this._instant=A.instant||(A.end==null);
+this._start=A.start;
+this._end=(A.end!=null)?A.end:A.start;
+this._latestStart=(A.latestStart!=null)?A.latestStart:(A.instant?this._end:this._start);
+this._earliestEnd=(A.earliestEnd!=null)?A.earliestEnd:this._end;
+var B=[];
+if(this._start>this._latestStart){this._latestStart=this._start;
+B.push("start is > latestStart");
+}if(this._start>this._earliestEnd){this._earliestEnd=this._latestStart;
+B.push("start is > earliestEnd");
+}if(this._start>this._end){this._end=this._earliestEnd;
+B.push("start is > end");
+}if(this._latestStart>this._earliestEnd){this._earliestEnd=this._latestStart;
+B.push("latestStart is > earliestEnd");
+}if(this._latestStart>this._end){this._end=this._earliestEnd;
+B.push("latestStart is > end");
+}if(this._earliestEnd>this._end){this._end=this._earliestEnd;
+B.push("earliestEnd is > end");
+}this._eventID=D("eventID");
+this._text=(A.text!=null)?SimileAjax.HTML.deEntify(A.text):"";
+if(B.length>0){this._text+=" PROBLEM: "+B.join(", ");
+}this._description=SimileAjax.HTML.deEntify(A.description);
+this._image=D("image");
+this._link=D("link");
+this._title=D("hoverText");
+this._title=D("caption");
+this._icon=D("icon");
+this._color=D("color");
+this._textColor=D("textColor");
+this._classname=D("classname");
+this._tapeImage=D("tapeImage");
+this._tapeRepeat=D("tapeRepeat");
+this._trackNum=D("trackNum");
+if(this._trackNum!=null){this._trackNum=parseInt(this._trackNum);
+}this._wikiURL=null;
+this._wikiSection=null;
+};
+Timeline.DefaultEventSource.Event.prototype={getID:function(){return this._id;
+},isInstant:function(){return this._instant;
+},isImprecise:function(){return this._start!=this._latestStart||this._end!=this._earliestEnd;
+},getStart:function(){return this._start;
+},getEnd:function(){return this._end;
+},getLatestStart:function(){return this._latestStart;
+},getEarliestEnd:function(){return this._earliestEnd;
+},getEventID:function(){return this._eventID;
+},getText:function(){return this._text;
+},getDescription:function(){return this._description;
+},getImage:function(){return this._image;
+},getLink:function(){return this._link;
+},getIcon:function(){return this._icon;
+},getColor:function(){return this._color;
+},getTextColor:function(){return this._textColor;
+},getClassName:function(){return this._classname;
+},getTapeImage:function(){return this._tapeImage;
+},getTapeRepeat:function(){return this._tapeRepeat;
+},getTrackNum:function(){return this._trackNum;
+},getProperty:function(A){return null;
+},getWikiURL:function(){return this._wikiURL;
+},getWikiSection:function(){return this._wikiSection;
+},setWikiInfo:function(B,A){this._wikiURL=B;
+this._wikiSection=A;
+},fillDescription:function(A){A.innerHTML=this._description;
+},fillWikiInfo:function(D){D.style.display="none";
+if(this._wikiURL==null||this._wikiSection==null){return ;
+}var C=this.getProperty("wikiID");
+if(C==null||C.length==0){C=this.getText();
+}if(C==null||C.length==0){return ;
+}D.style.display="inline";
+C=C.replace(/\s/g,"_");
+var B=this._wikiURL+this._wikiSection.replace(/\s/g,"_")+"/"+C;
+var A=document.createElement("a");
+A.href=B;
+A.target="new";
+A.innerHTML=Timeline.strings[Timeline.clientLocale].wikiLinkLabel;
+D.appendChild(document.createTextNode("["));
+D.appendChild(A);
+D.appendChild(document.createTextNode("]"));
+},fillTime:function(A,B){if(this._instant){if(this.isImprecise()){A.appendChild(A.ownerDocument.createTextNode(B.labelPrecise(this._start)));
+A.appendChild(A.ownerDocument.createElement("br"));
+A.appendChild(A.ownerDocument.createTextNode(B.labelPrecise(this._end)));
+}else{A.appendChild(A.ownerDocument.createTextNode(B.labelPrecise(this._start)));
+}}else{if(this.isImprecise()){A.appendChild(A.ownerDocument.createTextNode(B.labelPrecise(this._start)+" ~ "+B.labelPrecise(this._latestStart)));
+A.appendChild(A.ownerDocument.createElement("br"));
+A.appendChild(A.ownerDocument.createTextNode(B.labelPrecise(this._earliestEnd)+" ~ "+B.labelPrecise(this._end)));
+}else{A.appendChild(A.ownerDocument.createTextNode(B.labelPrecise(this._start)));
+A.appendChild(A.ownerDocument.createElement("br"));
+A.appendChild(A.ownerDocument.createTextNode(B.labelPrecise(this._end)));
+}}},fillInfoBubble:function(A,E,M){var K=A.ownerDocument;
+var J=this.getText();
+var H=this.getLink();
+var B=this.getImage();
+if(B!=null){var D=K.createElement("img");
+D.src=B;
+E.event.bubble.imageStyler(D);
+A.appendChild(D);
+}var L=K.createElement("div");
+var C=K.createTextNode(J);
+if(H!=null){var I=K.createElement("a");
+I.href=H;
+I.appendChild(C);
+L.appendChild(I);
+}else{L.appendChild(C);
+}E.event.bubble.titleStyler(L);
+A.appendChild(L);
+var N=K.createElement("div");
+this.fillDescription(N);
+E.event.bubble.bodyStyler(N);
+A.appendChild(N);
+var G=K.createElement("div");
+this.fillTime(G,M);
+E.event.bubble.timeStyler(G);
+A.appendChild(G);
+var F=K.createElement("div");
+this.fillWikiInfo(F);
+E.event.bubble.wikiStyler(F);
+A.appendChild(F);
+}};
+
+
+/* themes.js */
+Timeline.ClassicTheme=new Object();
+Timeline.ClassicTheme.implementations=[];
+Timeline.ClassicTheme.create=function(B){if(B==null){B=Timeline.getDefaultLocale();
+}var A=Timeline.ClassicTheme.implementations[B];
+if(A==null){A=Timeline.ClassicTheme._Impl;
+}return new A();
+};
+Timeline.ClassicTheme._Impl=function(){this.firstDayOfWeek=0;
+this.autoWidth=false;
+this.autoWidthAnimationTime=500;
+this.timeline_start=null;
+this.timeline_stop=null;
+this.ether={backgroundColors:[],highlightOpacity:50,interval:{line:{show:true,opacity:25},weekend:{opacity:30},marker:{hAlign:"Bottom",vAlign:"Right"}}};
+this.event={track:{height:10,gap:2,offset:2,autoWidthMargin:1.5},overviewTrack:{offset:20,tickHeight:6,height:2,gap:1,autoWidthMargin:5},tape:{height:4},instant:{icon:Timeline.urlPrefix+"images/dull-blue-circle.png",iconWidth:10,iconHeight:10,impreciseOpacity:20,impreciseIconMargin:3},duration:{impreciseOpacity:20},label:{backgroundOpacity:50,offsetFromLine:3},highlightColors:["#FFFF00","#FFC000","#FF0000","#0000FF"],highlightLabelBackground:false,bubble:{width:250,maxHeight:0,titleStyler:function(A){A.className="timeline-event-bubble-title";
+},bodyStyler:function(A){A.className="timeline-event-bubble-body";
+},imageStyler:function(A){A.className="timeline-event-bubble-image";
+},wikiStyler:function(A){A.className="timeline-event-bubble-wiki";
+},timeStyler:function(A){A.className="timeline-event-bubble-time";
+}}};
+this.mouseWheel="scroll";
+};
+
+
+/* timeline.js */
+Timeline.version="2.3.0";
+Timeline.ajax_lib_version=SimileAjax.version;
+Timeline.display_version=Timeline.version+" (with Ajax lib "+Timeline.ajax_lib_version+")";
+Timeline.strings={};
+Timeline.HORIZONTAL=0;
+Timeline.VERTICAL=1;
+Timeline._defaultTheme=null;
+Timeline.getDefaultLocale=function(){return Timeline.clientLocale;
+};
+Timeline.create=function(D,C,E,F){if(Timeline.timelines==null){Timeline.timelines=[];
+}var B=Timeline.timelines.length;
+Timeline.timelines[B]=null;
+var A=new Timeline._Impl(D,C,E,F,B);
+Timeline.timelines[B]=A;
+return A;
+};
+Timeline.createBandInfo=function(F){var G=("theme" in F)?F.theme:Timeline.getDefaultTheme();
+var D=("eventSource" in F)?F.eventSource:null;
+var H=new Timeline.LinearEther({centersOn:("date" in F)?F.date:new Date(),interval:SimileAjax.DateTime.gregorianUnitLengths[F.intervalUnit],pixelsPerInterval:F.intervalPixels,theme:G});
+var C=new Timeline.GregorianEtherPainter({unit:F.intervalUnit,multiple:("multiple" in F)?F.multiple:1,theme:G,align:("align" in F)?F.align:undefined});
+var I={showText:("showEventText" in F)?F.showEventText:true,theme:G};
+if("eventPainterParams" in F){for(var A in F.eventPainterParams){I[A]=F.eventPainterParams[A];
+}}if("trackHeight" in F){I.trackHeight=F.trackHeight;
+}if("trackGap" in F){I.trackGap=F.trackGap;
+}var B=("overview" in F&&F.overview)?"overview":("layout" in F?F.layout:"original");
+var E;
+if("eventPainter" in F){E=new F.eventPainter(I);
+}else{switch(B){case"overview":E=new Timeline.OverviewEventPainter(I);
+break;
+case"detailed":E=new Timeline.DetailedEventPainter(I);
+break;
+default:E=new Timeline.OriginalEventPainter(I);
+}}return{width:F.width,eventSource:D,timeZone:("timeZone" in F)?F.timeZone:0,ether:H,etherPainter:C,eventPainter:E,theme:G,zoomIndex:("zoomIndex" in F)?F.zoomIndex:0,zoomSteps:("zoomSteps" in F)?F.zoomSteps:null};
+};
+Timeline.createHotZoneBandInfo=function(F){var G=("theme" in F)?F.theme:Timeline.getDefaultTheme();
+var D=("eventSource" in F)?F.eventSource:null;
+var H=new Timeline.HotZoneEther({centersOn:("date" in F)?F.date:new Date(),interval:SimileAjax.DateTime.gregorianUnitLengths[F.intervalUnit],pixelsPerInterval:F.intervalPixels,zones:F.zones,theme:G});
+var C=new Timeline.HotZoneGregorianEtherPainter({unit:F.intervalUnit,zones:F.zones,theme:G,align:("align" in F)?F.align:undefined});
+var I={showText:("showEventText" in F)?F.showEventText:true,theme:G};
+if("eventPainterParams" in F){for(var A in F.eventPainterParams){I[A]=F.eventPainterParams[A];
+}}if("trackHeight" in F){I.trackHeight=F.trackHeight;
+}if("trackGap" in F){I.trackGap=F.trackGap;
+}var B=("overview" in F&&F.overview)?"overview":("layout" in F?F.layout:"original");
+var E;
+if("eventPainter" in F){E=new F.eventPainter(I);
+}else{switch(B){case"overview":E=new Timeline.OverviewEventPainter(I);
+break;
+case"detailed":E=new Timeline.DetailedEventPainter(I);
+break;
+default:E=new Timeline.OriginalEventPainter(I);
+}}return{width:F.width,eventSource:D,timeZone:("timeZone" in F)?F.timeZone:0,ether:H,etherPainter:C,eventPainter:E,theme:G,zoomIndex:("zoomIndex" in F)?F.zoomIndex:0,zoomSteps:("zoomSteps" in F)?F.zoomSteps:null};
+};
+Timeline.getDefaultTheme=function(){if(Timeline._defaultTheme==null){Timeline._defaultTheme=Timeline.ClassicTheme.create(Timeline.getDefaultLocale());
+}return Timeline._defaultTheme;
+};
+Timeline.setDefaultTheme=function(A){Timeline._defaultTheme=A;
+};
+Timeline.loadXML=function(A,C){var D=function(G,F,E){alert("Failed to load data xml from "+A+"\n"+G);
+};
+var B=function(F){var E=F.responseXML;
+if(!E.documentElement&&F.responseStream){E.load(F.responseStream);
+}C(E,A);
+};
+SimileAjax.XmlHttp.get(A,D,B);
+};
+Timeline.loadJSON=function(url,f){var fError=function(statusText,status,xmlhttp){alert("Failed to load json data from "+url+"\n"+statusText);
+};
+var fDone=function(xmlhttp){f(eval("("+xmlhttp.responseText+")"),url);
+};
+SimileAjax.XmlHttp.get(url,fError,fDone);
+};
+Timeline.getTimelineFromID=function(A){return Timeline.timelines[A];
+};
+Timeline.writeVersion=function(A){document.getElementById(A).innerHTML=this.display_version;
+};
+Timeline._Impl=function(C,B,D,E,A){SimileAjax.WindowManager.initialize();
+this._containerDiv=C;
+this._bandInfos=B;
+this._orientation=D==null?Timeline.HORIZONTAL:D;
+this._unit=(E!=null)?E:SimileAjax.NativeDateUnit;
+this._starting=true;
+this._autoResizing=false;
+this.autoWidth=B&&B[0]&&B[0].theme&&B[0].theme.autoWidth;
+this.autoWidthAnimationTime=B&&B[0]&&B[0].theme&&B[0].theme.autoWidthAnimationTime;
+this.timelineID=A;
+this.timeline_start=B&&B[0]&&B[0].theme&&B[0].theme.timeline_start;
+this.timeline_stop=B&&B[0]&&B[0].theme&&B[0].theme.timeline_stop;
+this.timeline_at_start=false;
+this.timeline_at_stop=false;
+this._initialize();
+};
+Timeline._Impl.prototype.dispose=function(){for(var A=0;
+AG||C){D=H;
+E();
+A._distributeWidths();
+}}if(!A.autoWidth){return ;
+}F();
+};
+Timeline._Impl.prototype._initialize=function(){var H=this._containerDiv;
+var E=H.ownerDocument;
+H.className=H.className.split(" ").concat("timeline-container").join(" ");
+var C=(this.isHorizontal())?"horizontal":"vertical";
+H.className+=" timeline-"+C;
+while(H.firstChild){H.removeChild(H.firstChild);
+}var A=SimileAjax.Graphics.createTranslucentImage(Timeline.urlPrefix+(this.isHorizontal()?"images/copyright-vertical.png":"images/copyright.png"));
+A.className="timeline-copyright";
+A.title="Timeline copyright SIMILE - www.code.google.com/p/simile-widgets/";
+SimileAjax.DOM.registerEvent(A,"click",function(){window.location="http://code.google.com/p/simile-widgets/";
+});
+H.appendChild(A);
+this._bands=[];
+for(var B=0;
+B Loading...";
+this.showLoadingMessage=function(){D.containerDiv.style.display="block";
+};
+this.hideLoadingMessage=function(){D.containerDiv.style.display="none";
+};
+};
+Timeline._Impl.prototype._distributeWidths=function(){var G=this.getPixelLength();
+var B=this.getPixelWidth();
+var C=0;
+for(var F=0;
+F0){var A=parseInt(E.substr(0,H));
+D=Math.round(A*B/100);
+}else{D=parseInt(E);
+}}else{D=E;
+}J.setBandShiftAndWidth(C,D);
+J.setViewLength(G);
+C+=D;
+}};
+Timeline._Impl.prototype.shiftOK=function(C,B){var F=B>0,A=B<0;
+if((F&&this.timeline_start==null)||(A&&this.timeline_stop==null)||(B==0)){return(true);
+}var H=false;
+for(var E=0;
+E=this.timeline_start;
+}else{D=(E==C?G.getMaxVisibleDateAfterDelta(B):G.getMaxVisibleDate())<=this.timeline_stop;
+}}if(F){this.timeline_at_start=!D;
+this.timeline_at_stop=false;
+}else{this.timeline_at_stop=!D;
+this.timeline_at_start=false;
+}return(D);
+};
+Timeline._Impl.prototype.zoom=function(D,A,G,F){var C=new RegExp("^timeline-band-([0-9]+)$");
+var E=null;
+var B=C.exec(F.id);
+if(B){E=parseInt(B[1]);
+}if(E!=null){this._bands[E].zoom(D,A,G,F);
+}this.paint();
+};
+
+
+/* units.js */
+Timeline.NativeDateUnit=new Object();
+Timeline.NativeDateUnit.createLabeller=function(B,A){return new Timeline.GregorianDateLabeller(B,A);
+};
+Timeline.NativeDateUnit.makeDefaultValue=function(){return new Date();
+};
+Timeline.NativeDateUnit.cloneValue=function(A){return new Date(A.getTime());
+};
+Timeline.NativeDateUnit.getParser=function(A){if(typeof A=="string"){A=A.toLowerCase();
+}return(A=="iso8601"||A=="iso 8601")?Timeline.DateTime.parseIso8601DateTime:Timeline.DateTime.parseGregorianDateTime;
+};
+Timeline.NativeDateUnit.parseFromObject=function(A){return Timeline.DateTime.parseGregorianDateTime(A);
+};
+Timeline.NativeDateUnit.toNumber=function(A){return A.getTime();
+};
+Timeline.NativeDateUnit.fromNumber=function(A){return new Date(A);
+};
+Timeline.NativeDateUnit.compare=function(D,C){var B,A;
+if(typeof D=="object"){B=D.getTime();
+}else{B=Number(D);
+}if(typeof C=="object"){A=C.getTime();
+}else{A=Number(C);
+}return B-A;
+};
+Timeline.NativeDateUnit.earlier=function(B,A){return Timeline.NativeDateUnit.compare(B,A)<0?B:A;
+};
+Timeline.NativeDateUnit.later=function(B,A){return Timeline.NativeDateUnit.compare(B,A)>0?B:A;
+};
+Timeline.NativeDateUnit.change=function(A,B){return new Date(A.getTime()+B);
+};
diff --git a/htdocs/js/timeline_var.js b/htdocs/js/timeline_var.js
new file mode 100644
index 00000000..af8f5b4b
--- /dev/null
+++ b/htdocs/js/timeline_var.js
@@ -0,0 +1,3 @@
+Timeline_ajax_url="/js/timeline_ajax/simile-ajax-api.js";
+Timeline_urlPrefix='/js/timeline_js/';
+Timeline_parameters='bundle=true';
\ No newline at end of file